Estructura de Computadores II 1 Tema 1 Estructuras de interconexión de un computador. En el nivel jerárquico superior, un computador consta de la UCP, la memoria y la unidad de E/S. Se puede describir un computador si se conoce: 1- La estructura externa de cada componente, es decir, los datos y señales de control que intercambia con otros módulos. 2- La estructura de interconexión y las ordenes de control que se necesitan para gestionar su utilización. Componentes de un Computador. La arquitectura Von Newman se fundamenta en tres ideas claves: a- En la memoria del computador se almacenan simultáneamente datos e instrucciones. b- Se puede acceder a la información contenida en la memoria especificando la dirección donde se encuentra almacenada. La memoria no distingue si lo que contiene es un dato o una instrucción. c- La ejecución de un programa se realiza de forma secuencial de una instrucción a la que le sigue, al no ser que se modifique la frecuencia con una ruptura. Con esta filosofía se pueden plantear dos procedimientos de construcción, en primer lugar se puede diseñar un sistema a medida, la alternativa consiste en considerar una configuración de módulos aritméticos y lógicos de propósito general. Los componentes básicos del sistema son: 1- Interprete de instrucciones: Unidad de Control. 2- Módulo de funciones lógicas y aritméticas de propósito general: Unidad Aritmético Lógica. Estas unidades constituyen la Unidad Central de Proceso. Para que el computador pueda funcionar necesita algunos componentes adicionales. La unidad de entrada/salida para la conexión con el exterior; y la unidad de memoria para el almacenamiento de datos. En su modo de funcionamiento normal es la UCP quien tiene el control del computador y opera intercambiando con la memoria. Para ello dispone de 2 registros: • Registro de dirección de memoria: Especifica la próxima dirección de memoria de donde se va a leer o escribir. • Registro de datos en memoria: Contiene el dato a escribir en la memoria o recibe el dato leído. El módulo de E/S también dispone de registros internos análogos. • Registro de dirección de E/S. Especifica un dispositivo particular de E/S • Registro de datos de E/S. Se utiliza para el intercambio de datos entre un módulo de E/S y la UCP. Función de un computador. La secuencia de operaciones realizadas en la ejecución de una instrucción constituye lo que se denomina ciclo de instrucción. El punto de vista más sencillo es considerar que el procesamiento del ciclo de instrucción consta de dos pasos: • Fase o ciclo de búsqueda. • Fase o ciclo de ejecución La ejecución de un programa consiste en la repetición cíclica de las fase de búsqueda y ejecución de las instrucciones, y finaliza mediante una de las siguientes acciones: 1- Se desconecta el computador. 2- Ocurre algún tipo de error irrecuperable. 3- Se ejecuta una instrucción que fuerza su terminación Ciclo de búsqueda y ejecución. En el comienzo de cada ciclo de instrucción la UCP busca en la memoria una instrucción. En la UCP se dispone para ello de un registro llamado contador de programa. La instrucción leída se carga (almacena) en un registro de la UCP llamado registro de instrucción. La UCP interpreta la instrucción y ejecuta la acción indicada. En general la acción será una combinación de las siguientes categorías: UCP - Memoria UCP - Entrada/Salida Procesamiento de datos Estructura de Computadores II 2 Control Ciclo de interrupción. Todos los computadores disponen de un mecanismo para que otros módulos puedan interrumpir a la UCP. El objetivo fundamental de las interrupciones es mejorar el rendimiento de los computadores desde el punto de vista de su velocidad de procesamiento. Para permitir el mecanismo de interrupciones se ha de añadir en el ciclo de instrucción un ciclo de interrupción. En este ciclo la UCP comprueba si se ha producido alguna interrupción y en caso afirmativo indica su presencia mediante una señal apropiada. Si no existe ninguna señal de interrupción que este pendiente de estar atendida, la UCP continúa con el ciclo de búsqueda de la siguiente instrucción del programa. Si por el contrario la UCP observa activada la señal de interrupción hace lo siguiente: • Guarda el contexto del programa que está ejecutando. • Carga en el contador de programa la dirección de comienzo de un programa encargado de gestionar la interrupción. Las interrupciones no se atienden siempre de forma inmediata. Es posible desactivarlas todas de forma selectiva y posteriormente volverlas a activar. Función de E/S Un módulo de E/S puede intercambiar datos directamente con la UCP. De la misma forma que la UCP puede iniciar una operación de lectura o escritura con memoria designando la dirección, la UCP puede leer o escribir en un módulo de E/S. A veces puede ser deseable que los intercambios de E/S ocurran directamente con memoria. En tal caso, la UCP cede al módulo de E/S la capacidad de leer o escribir en memoria, de manera que la transferencia E/S - memoria ocurre sin la intervención de la UCP. Estructuras de interconexión. El conjunto de caminos que conectan los diferentes módulos constituye la estructura de interconexión. El diseño de esta estructura dependerá de los intercambios que se tengan que hacer entre los módulos. Se han propuesto diferentes estructuras de interconexión para la arquitectura de un computador: E/S a través de la UCP: La UCP y los módulos de E/S comparten la misma vía de acceso a memoria, por lo que la UCP debe parar sus cálculos al tener que controlar todos los intercambios. No es posible el acceso directo a memoria desde los módulos de E/S. Es la forma más económica, pero reduce el rendimiento de la UCP. E/S a través de memoria: Es posible el acceso directo a memoria principal de dos o más componentes de forma independiente. El módulo de memoria contiene la lógica de control necesaria para resolver los conflictos. Se puede realizar transferencias entre la unidad de E/S y la memoria mientras la UCP realiza cálculos. Sus mecanismos de control son complejos y poco flexibles, es difícil añadir módulos adicionales. E/S mediante conmutador central: Existe un mecanismo de distribución centralizado al cual se unen todos los componentes. El conmutador central controla el acceso a memoria tanto de la UCP como de los módulos de E/S. La UCP queda libre para realizar cálculos. Al mismo tiempo se puede informar a la UCP sobre las actividades que se realizan y proporciona una conexión directa entre la UCP y la unidad de E/S. Se adopta en grandes sistemas y su coste es elevado y el conmutador complejo. Bus de E/S: Un conjunto de líneas que se comparten por todos los módulos. En un instante sólo un módulo puede transmitir de forma satisfactoria, y una o más de las unidades deben encargarse de controlar la utilización del bus. Es simple y flexible y se ha convertido en estándar. Interconexión mediante bus. Estructura de Computadores II 3 Un bus es un medio de transmisión compartido. Al bus se conectan múltiples dispositivos, y una señal transmitida por cualquiera de ellos puede ser recibida por todas las otras unidades. En un determinado instante de tiempo sólo es posible la transmisión por parte de un único elemento dispositivo. Estructura de bus Un bus es un conjunto de líneas independientes con una función particular. Se pueden clasificar en tres grupo funcionales: • Líneas de datos. • Líneas de dirección. • Líneas de control. Las líneas de datos forman el bus de datos, cuya anchura es fundamental para determinar el rendimiento global del sistema. Las líneas de dirección seleccionan la fuente o el destino de la información que hay sobre el bus de datos. La anchura del bus de direcciones determina la capacidad de direccionamiento de la unidad de memoria del sistema. Las líneas de control gobiernan el acceso y el uso de las líneas de datos y dirección. Transmiten tanto órdenes como información de temporización entre los módulos del sistema. Para que un módulo envíe los datos a otro se debe hacer dos cosas: 1- Obtener el uso del bus. 2- Transmitir al módulo los datos a través del bus. Si se quiere pedir datos de otro módulo: 1- Obtener el uso del bus. 2- Transferir la petición por las líneas de dirección y control. 3- Esperar los datos. Elementos de diseño del bus Las líneas del bus se agrupan en dos tipos genéricas: dedicadas y no dedicadas. Una línea de bus dedicada se asigna de forma permanente a una función o a un subconjunto de componentes del computador. Puede ser funcional o física. La dedicación física se refiere al uso de múltiples buses, cada uno se conecta a un subconjunto de módulos. Tiene mayor rendimiento debido a la menor contención del bus, pero aumenta el tamaño y el coste. En las líneas no dedicadas la información sobre la dirección y los datos se transmite por el mismo conjunto de líneas utilizando una línea de dirección válida. El método de utilizar las mismas líneas con objetivos diferentes se conoce como multiplexación en el tiempo. Aunque este sistema complica la circuitería y reduce el rendimiento del computador. Dado que se puede dar el caso de que más de un módulo desee el control del bus se requieren métodos de arbitraje, estos pueden ser centralizados o distribuidos. En un esquema centralizado el controlador del bus o árbitro es el responsable de asignar el tiempo de utilización del bus. En un esquema distribuido cada módulo contiene la lógica de control para acceder al bus, actuando de forma cooperativa para compartir el recurso. El objetivo de ambos métodos de arbitraje es designar un dispositivo ( UCP o módulo de E/S ) como maestro y otro actúa como esclavo. La temporización contempla como se coordinan los sucesos sobre el bus. Si es síncrona los sucesos sobre el bus están determinado sobre un reloj. El bus incluye una línea de reloj sobre la que se transmite una secuencia regular. La temporización asíncrona es más simple de realizar y verificar pero es menos flexible, y el sistema no se beneficia de los avances que se producen en el rendimiento de sus dispositivos. Con la temporización asíncrona pueden compartir el bus una mezcla de dispositivos lentos y rápidos. Ancho de banda (B): Máxima velocidad de transferencia en bits/seg. Fracción de ancho de banda, cuantifica el grado de ocupación de la velocidad de transferencia de la memoria cuando se realizan operaciones de E/S con un periférico. Su valor está entre 0 y 1. B periférico / B memoria. Consideraciones prácticas en la conexión mediante bus. La utilización del bus compartido implica el empleo de circuitos de acoplo con el fin de garantizar el funcionamiento correcto del bus. Para evitar problemas de Fan Out, antes de conectar una Estructura de Computadores II 4 línea del bus de dirección a través de todos los circuitos de un bloque de memoria se le hace pasar a través de una etapa de circuitos denominados “drivers”, que no realizan ninguna función lógica, y su única misión es que desde el bus se contemple el bloque de memoria como un único circuito. Tema 2 Unidad de memoria. Definiciones y conceptos básicos: Localización: Es uno de los aspectos más destacable de la memoria de un computador, desde este punto de vista se puede clasificar en tres grandes grupos: a. Memoria interna del procesador : está constituida por un pequeño conjunto de registros de alta velocidad que son internos a la UCP, donde se almacenan temporalmente instrucciones y datos. b. Memoria principal: es relativamente grande y rápida, utilizada para el almacenamiento de los programas y sus datos correspondientes. Se puede acceder a ella mediante instrucciones máquina. c. Memoria externa o secundaria: Dispositivos periféricos de almacenamiento accesibles a la UCP a través de controladores de E/S. En los dispositivos externos se distingue entre controlador y soporte de la información. El controlador se encarga de dirigir los componentes mecánicos y electrónicos del dispositivo, de esta forma se libera a la UCP de gran parte de la gestión de E/S. El soporte es el medio físico donde se almacena la información. Capacidad Es la cantidad de información que puede almacenar, se mide en palabras. La capacidad de memoria de p palabras con n bits cada palabra se representa como n x p bits. Unidad de transferencia En una memoria interna la unidad de transferencia es igual al número de líneas de entrada y salida al módulo de memoria. Puede coincidir con la longitud de la palabra pero puede no hacerlo. En la memoria principal es el número de bits leídos o escritos en la memoria simultáneamente, y no tiene porque ser una palabra. Para memorias externas los datos se transfieren en bloques. Método de acceso a- Acceso aleatorio: Puede accederse a las informaciones en cualquier orden, siendo el tiempo independiente de la posición donde está localizada la información. (RAM). La unidad de dato es la celda. b- Acceso secuencial: Se accede a la información almacenada mediante una secuencia lineal. El tiempo de acceso es variable y depende de la posición ( SAM ). Las unidades de datos elementales de una memoria SAM se llaman registros. c- Acceso directo: Los bloques o registros individuales tienen una dirección única que se basa en su posición física. El acceso se realiza de forma aleatoria para alcanzar el registro donde se encuentra la información, y a continuación se realiza una búsqueda secuencial dentro de él. El tiempo de acceso es variable. d- Acceso asociativo: Son de acceso aleatorio con la diferencia de que no pregunta por el contenido de una posición, sino que se pregunta si existe una posición de memoria que contiene una palabra determinada. Cada posición tiene su propio mecanismo de direccionamiento y el tiempo de recuperación de información es constante e independiente de la localización y configuración del acceso previo. Tipos físicos a) Memorias de semiconductor : memorias principales. b) Memorias magnéticas: memorias secundarias. c) Memorias ópticas : memorias secundarias. Estructura de Computadores II 5 Características físicas a) Alterabilidad: Hace referencia a la capacidad de alterar el contenido de una memoria. Si no se puede alterar se denominan ROM. Las memorias que se pueden escribir y leer se conocen como RWM. Algunas ROM son programables por el usuario PROM, si se borran y programan EPROM. Si una EPROM se borra eléctricamente EEPROM o por rayos ultravioletas UVEPROM . b) Permanencia de la información: 1- Lectura destructiva: (Núcleos de ferrita) DRO, para evitar la destrucción del contenido hay que grabarlas después de leerlas. Si no son destructivas NDRO. 2- Volatilidad :Posible destrucción de la información con un corte de suministro. Volátiles y no volátiles. 3- Almacenamiento estático/dinámico : Una memoria es estática si su información no varía con el tiempo, en caso contrario la información se pierde con el tiempo y hay que refrescarla, lo que supone una dificultad de diseño, aunque las memorias dinámicas suelen tener mayor capacidad y menos consumo que las estáticas. Velocidad: Para medir el rendimiento se utilizan los siguientes parámetros: a) Tiempo de acceso ( TA ). Se define como el tiempo medio necesario para leer/escribir una cantidad fija de información. b) Tiempo de ciclo de memoria (tc) ; el intervalo de tiempo mínimo entre dos lecturas consecutivas, puede ser mayor que TA . c) Velocidad de transferencia o frecuencia de acceso ( fA): Es el número de palabras/segundo que pueden ser accedidas: En el caso de acceso aleatorio : fA = 1/tc En memorias de acceso no aleatorio: tn = tA + n/p donde: tn : Tiempo medio en leer/escribir n bits tA : Tiempo de acceso medio. n : Número de bits. p : Velocidad de transferencia (bits/seg.) Organización Es la disposición física de los bits para formar palabras Jerarquías de memoria. El diseño de la unidad de memoria de un computador se ve afectada por una jerarquía de componentes que se ve afectada por tres parámetros: capacidad, coste y rapidez. Estos tres parámetros están íntimamente ligados Menor tiempo de acceso à Mayor coste por bit Mayor capacidad à Menor coste por bit Mayor capacidad à Mayor tiempo de acceso La solución a este conflicto está en emplear una jerarquía de memorias en lugar de una única tecnología. Nivel Superior Registros de la UCP Memoria Caché fA decrece Memoria Principal Discos Magnéticos Cintas Magnéticas Nivel Inferior Memoria Interna Datos a los que la UCP accede con frecuencia Memoria Externa Estructura de Computadores II 6 Cuando se va a los niveles inferiores de la jerarquía ocurre que: a) El coste por bit disminuye. b) La capacidad aumenta. c) El tiempo de acceso aumenta d) La frecuencia de acceso a memoria por la UCP disminuye. Con la utilización de las jerarquías de memoria las memorias rápidas de baja capacidad y alto coste se complementan con las memorias lentas de gran capacidad y bajo coste. La base de la validez de la condición d, es un principio conocido como localidad de referencia. Las referencias a memoria que realiza la UCP, para acceder a datos e instrucciones suelen estas agrupadas. Por este motivo es posible organizar los datos en los diferentes niveles de memoria, de forma que la frecuencia de acceso sea mucho menor cuanto más bajo se esté en la jerarquía. El tiempo de acceso medio total (tA) empleado por la UCP para acceder a una palabra se puede expresar por la relación: tA = tA1+ tA2 - Tt A2 100 donde: tA1 es el tiempo de acceso a la memoria de nivel 1 tA2 es el tiempo de acceso a la memoria de nivel 2 T es el porcentaje de tiempo total en que la palabra a la que desea acceder la UCP se encuentra en la memoria de nivel 1. Memorias de semiconductor. Características de un CIM (Circuito Integrado de Memoria ): Un CIM está organizado internamente como una matriz de N x m celdas elementales, en la que se pueden almacenar N palabras de m bits. A cada palabra almacenada en el CIM se le asigna una única dirección. n Bus de Direcciones m SC CIM Bus de Datos R/W El número de líneas n del bus de dirección es tal que 2n = N, siendo N el número de palabras del CIM. El número de líneas m del bus de datos se corresponden con la longitud de la palabra. Estructura de la celda básica de memoria: Selección Salida Entrada S Q R Q Escritura Selección Escritura Contenido Salida Estructura de Computadores II 7 0 X Contenido 0 1 0 Contenido Contenido 1 1 Entrada Entrada El elemento básico de un CIM es la celda de memoria que permite almacenar un bit de información. Aunque de diferentes tecnologías, todas las celdas de memoria de tipo semiconductor comparten ciertas propiedades: • Presentan dos estados estables ( o semiestables) • Se pueden escribir (al menos una vez ) para fijar su estado • Se pueden leer para conocer su estado Organización interna: Cada CIM contiene una matriz de celdas de memoria su estructura interna suele ser de dos tipos: n Organización 2D ( por palabras o lineal ) Es el método más simple, aunque su coste es más elevado. El módulo de memoria se compone de una matriz de celdas básicas. Para una memoria de 2n palabras de m bits la matriz está formada por 2n filas y m columnas. Además el módulo requiere un decodificador de n entradas y 2n salidas y para formar la salida m puertas OR de 2n entradas cada una. Dirección 2n n Matriz de celdas (2n x m celdas) Selección CS Control R/W m Dato de Entrada m Dato de Salida Es una organización rápida ya que el único retardo que presenta es el asociado con los circuitos de decodificación y con el acceso a los elementos físicos de almacenamiento. Como normalmente el número de palabras es mayor que el número de bits por palabra, la organización 2D da lugar a matrices de celdas excesivamente largas y estrechas que no son adecuadas para su realización en un circuito integrado. n Organización 2 ½ D (Coincidencia): Utiliza un decodificador por coincidencia, en vez de usar un único decodificador con n entradas y 2n salidas, usa dos decodificadores con n/2 entradas y 2n/2 salidas en cada uno de ellos, uno selecciona el eje X y el otro el eje Y. De esta manera se construyen matrices más cuadradas. Además requiere, menos puertas y con menor número de entradas por puerta. Utiliza una celda memoria más compleja ya que incluye una puerta AND para la selección por coincidencia. Para seleccionar el bit de una palabra, la dirección de la palabra de divide en dos mitades. La primera parte de la dirección se introduce al decodificador Y, que selecciona la fila. El resto va al decodificador X conectado a las columnas. Estructura de Computadores II 8 Diseño de bloques de memoria La ampliación de componentes es una característica fundamental en el diseño y en el caso de la memorias de semiconductor tiene dos objetivos: a) Incrementar el tamaño de las palabras (número de bits / palabra ). b) Incrementar el número de palabras de la memoria. Para el primer objetivo basta con interconectar un número determinado de módulos de memoria. Incrementar el número de palabras supone aumentar la capacidad de direccionamiento, es decir incrementar el número de bits del bus de dirección, lo que requiere el uso de un decodificador adicional Conexión de la unidad de memoria al bus del sistema Se realiza mediante el esquema de drivers, esta conexión es diferente según el tipo de línea del bus de que se trate. El bus de dirección y de control son unidireccionales. El bus de datos es bidireccional. Se pueden distinguir dos situaciones, según que el bloque de memoria disponga de entrada y salida de datos separada o las tenga en común sobre una sola línea bidireccional. Estructura y direccionamiento de la unidad de memoria. En el diseño de la unidad de memoria principal se utiliza un bloque básico, que se dispone en una placa de circuito impreso y se repite tantas veces como sea necesario. Este enfoque tiene como ventajas en el diseño global de la memoria: a) Abaratamiento de los costes. b) Modularidad y posibilidad de ampliación. c) Facilidad de mantenimiento y preparación. Con este sistema se deberán realizar un pequeño circuito lógico de selección de placa, por lo que éstas no serían idénticas, por este motivo se utiliza un circuito de comparación con conmutadores que permiten personalizar cada una de las placas. Memoria caché. En todos los ciclos de instrucción la UCP accede a memoria al menos una vez para buscar la instrucción y frecuentemente realiza múltiples accesos para leer los operandos o almacenar los resultados. La velocidad con que la UCP ejecuta instrucciones está limitada por el tiempo de ciclo de memoria. Se conoce como tiempo de ciclo del procesador al tiempo que la UCP necesita para realizar una de sus operaciones básicas. Para solucionar el compromiso entre velocidad, coste y capacidad se coloca una memoria pequeña y rápida entre la UCP y la memoria principal, la memoria caché. La memoria caché almacena una copia de ciertas partes de la memoria principal. Cuando la UCP intenta leer una palabra en primer lugar comprueba si está en la caché. Si está, se lee, si no está, se transfiere a la memoria caché un bloque de la memoria principal, con un determinado número de palabras. La memoria principal consta de 2n palabras y cada palabra se puede referenciar mediante una dirección única de n bits. Para realizar la transformación entre la memoria principal y la caché, se considera que la memoria principal está constituida por una serie de bloques de longitud fija de k palabras/bloque, es decir, hay M = 2n/ k bloques. La memoria caché contiene C particiones de k palabras ( C << M). En cualquier instante de tiempo un determinado subconjunto de los bloques de memoria principal reside en las particiones de la memoria caché. Si se desea leer una palabra de un bloque que está en la memoria principal automáticamente este bloque se transfiere a una de las particiones de la memoria caché. Cada partición incluye una marca o etiqueta que identifica al bloque de memoria principal que está conteniendo en ese momento, normalmente la etiqueta es parte de la dirección de la memoria principal. El rendimiento de una memoria caché se mide en una cantidad llamada tasa de acierto, que es la razón entre el número de aciertos y el número total de referencias a memoria de la UCP. Tasa de acierto = Acierto/( Acierto + Fallo) Capacidad de la caché: El tamaño de la caché plantea el compromiso de ser pequeña para disminuir el coste medio por bit almacenado en la memoria interna (caché + principal), por otro lado debe ser grande como para que tenga una tasa de acierto elevada. Estructura de Computadores II 9 Función de correspondencia La función de correspondencia es la que asigna a los bloques de la memoria principal posiciones definidas en la memoria caché. n Correspondencia directa. Cada bloque de memoria principal se transforma en una única partición de la memoria caché. La función de transformación es : S = Número de partición asignado en memoria caché S = A módulo C A = Número de bloque de la memoria principal. C = Número de particiones que tiene la caché. La función de transformación se realiza utilizando los bits de dirección. Los menos significativos sirven para localizar una palabra dentro de un bloque de la memoria principal. Los n restantes especifican uno de los bloques ( 2n = A) de la memoria principal. La lógica de la memoria caché interpreta la parte más significativa como etiqueta y los otros identifican una partición dentro de la memoria caché. La técnica de correspondencia directa es simple y poco costosa. Su desventaja es que cualquier bloque dado tiene asignada una posición fija en la caché. Si un programa efectúa repetidas referencias a palabras de dos bloques diferentes que se transforman en la misma partición, estos bloques se estarán moviendo continuamente entre la memoria principal y la caché, con perdida de rendimiento del sistema. Formato de instrucción Etiqueta Partición Palabra n Correspondencia totalmente asociativa Permite que se cargue un bloque de memoria principal en cualquier partición de la memoria caché, a condición que se almacene con él los n bits de su campo etiqueta. Para determinar si un bloque está ya en memoria caché es preciso que ésta incorpore la lógica necesaria que le permita examinar simultáneamente todas las particiones y ver si el campo elegido del bloque coincide con alguna de las etiquetas de las particiones almacenadas. Este sistema permite decidir cual es el bloque que será sustituido en la caché por el nuevo bloque leído en memoria principal. Su principal desventaja es la necesidad de una circuitería compleja para examinar en paralelo los campos de etiqueta de todas las particiones de la memoria caché. Formato de instrucción Etiqueta Palabra n Correspondencia asociativa por conjuntos. Intenta juntar las ventajas de los dos métodos anteriores. La memoria caché ( de capacidad C )se divide en I conjuntos, cada uno con J particiones C=IxJ K = A módulo I K = nº de conjunto de la memoria caché Con este algoritmo, el bloque que contiene la dirección A se puede almacenar en una partición cualquiera del conjunto I. al igual que en la correspondencia directa, la dirección de la memoria principal se interpreta como tres campos. Las dos técnicas anteriores son casos particulares: a- I = C ; J = 1 à Correspondencia directa b- I = 1 ; J = C à Correspondencia totalmente asociativa. La utilización de I =C/2 , J = 2 ( 2 particiones por conjunto), es la organización más usual, también se emplea I =C/4 , J =4 ( 4 particiones por conjunto ), a partir de este valor, el beneficio marginal que se obtiene al aumentar el número de particiones por conjunto no compensa el coste que supone. Formato de instrucción Etiqueta Conjunto Palabra Estructura de Computadores II 10 Algoritmos de reemplazamiento: La sustitución de un bloque por otro en el caso de la correspondencia directa, la partición está determinada y no se puede realizar ninguna elección. Sin embargo, en las técnicas de tipo asociativo es necesario un algoritmo de reemplazamiento. Para lograr tasas de transferencia elevadas, estos algoritmos deben realizarse por hardware. Los algoritmos principales son: abcd- Partición más antigua en la memoria caché sin ser referenciada (LRU). Partición más antigua en la memoria caché (FIFO). Partición utilizada menos frecuentemente. (LFU). Partición elegida de forma aleatoria. Estrategia de escritura. Para reemplazar un bloque residente en la memoria caché, se debe tener en cuenta si ha sido modificado y se debe actualizar la memoria principal. En general se plantean dos problemas: a- Más de un dispositivo tiene acceso a la memoria principal. Si la palabra ha sido modificada en la memoria caché el dato de la memoria principal no es válido, si por el contrario ha sido modificado en memoria principal el dato de la caché no es válido. b- Se conectan varias UPC’s a un bus y cada una tiene su propia memoria caché local. La técnica más simple se denomina escritura directa y consiste en efectuar todas las operaciones de escritura tanto en memoria principal como en memoria caché, lo que asegura la validez del contenido. Su desventaja es que genera un tráfico elevado con la memoria y puede crear un cuello de botella. Otra técnica es la de realizar actuaciones sólo en la memoria caché, método que se conoce como postescritura. Cuando se produce una modificación se pone a “1” un bit de actualización asociado con cada partición de la memoria caché. Si se reemplaza un bloque se reescribe la memoria principal si y sólo si el bit de actualización está a “1”. El problema es saber que partes de la memoria principal ya no son válidas, para evitarlo los accesos de los módulos de E/S se permiten únicamente a través de la caché. En una organización de bus en la que más de un dispositivo que tienen una memoria caché asociada y se comparte la memoria principal aparece un nuevo problema. Si se modifica una palabrea de la memoria caché se invalida, además de la palabra en memoria principal, la misma palabra en otras memorias caché, en el caso de que la contengan. Incluso con la estrategia de escritura directa las memorias caché pueden tener datos inválidos. Un sistema que evita este problema se dice que mantiene la coherencia de la memoria caché. Tamaño del bloque Cuando se transfiere un bloque de la memoria principal a la memoria caché, con la palabra deseada se mueve un conjunto de palabras adyacentes. Cuando se aumenta el tamaño del bloque se aumenta la tasa de acierto por el principio de localidad; sin embargo, a partir de un tamaño determinado, la tasa de acierto disminuye debido a que la probabilidad de utilizar la información del bloque se hace menor que la probabilidad de rehusar la información a reemplazar y con ello aparecen dos efectos específicos: 1- Cuando mayor sea el tamaño de los bloques, menor será el número de estos que es posible tener en memoria caché. Si el número de bloques es pequeño aumenta la frecuencia de utilización del algoritmo de reemplazo de bloques. 2- Cuando crece el tamaño de un bloque, cada nueva palabra añadida a ese bloque estará a mayor distancia de la palabra requerida por la UCP, y por lo tanto es menos probable que sea necesitada a corto plazo. Memorias asociativas Estructura de una memoria asociativa: Estructura de Computadores II 11 Consiste en una matriz de celdas de memoria, con su lógica asociada, organizada en n palabras con m bits/palabra. El registro argumento A y el registro de máscara k tienen m bits cada uno y el registro de marca M consta de n bits. Cada palabra de la memoria se compara en paralelo con el contenido del registro argumento, y se pone a “1” el bit del registro de marca asociado a aquellas palabras cuyo contenido coincide con el del registro argumento. El proceso de lectura se realiza mediante un acceso secuencial a las palabras de memoria cuyos bits en el registro de marca están a “1”. Registro Argumento (A) Registro Máscara (K) Entrada Leer Matriz de celdas de Memoria Asociativa n palabras x m bits Registro de Marca (M) Escribir Salida El registro de máscara proporciona la clave para seleccionar la parte que se desee en la palabra argumento. La celda básica de memoria asociativa está formada por un elemento de memoria Q y la circuitería adecuada para hacer las funciones siguientes: a- Leer el bit almacenado en la celda durante una operación de lectura. b- Transferir al elemento de memoria el bit que tiene la celda en su entrada durante una operación de escritura. c- Comparar el contenido de la celda con el correspondiente bit sin enmascarar del registro argumento y proporcionar una salida para la lógica de decisión que actualiza el bit de marca (M). Determinación de la función lógica del registro de máscara. M es ‘1’ si se produce coincidencia y ‘0’ en caso contrario. Si el registro de máscara contiene sólo ceros, la salida de M valdrá ‘1’ independientemente del valor de A o de la palabra que hay en memoria por lo que es una situación que debe evitarse. Operación de lectura. Si hay más de una palabra de memoria que concuerda con los bits sin enmascarar del registro A, todas ellas tendrán un ‘1’en su posición del registro de marca. Para la operación de lectura es necesario examinar uno a uno los bits del registro de marca. Si Mi = 1 se aplica una señal de lectura a la palabra correspondiente. En la mayoría de aplicaciones la memoria asociativa almacena una tabla que no tiene, para una máscara dada, dos filas idénticas. En este caso, solamente puede coincidir una palabra con los bits sin enmascarar del registro A. Si se conecta la salida de Mi directamente a la línea de lectura Estructura de Computadores II 12 de la palabra correspondiente, en lugar de conectarse al registro M, se presenta de forma automática el contenido de la palabra que coincide y no se necesita señal de lectura Operación de escritura Una memoria asociativa debe de poder almacenar la información que se desee. Dependiendo de la aplicación, la escritura en este tipo de memoria puede adoptar diferentes formas. Si antes de las operaciones de búsqueda se carga la memoria con nueva información, su escritura se puede realizar direccionando secuencialmente cada posición, lo que la convierte en una memoria de acceso aleatorio para su escritura y direccionable por contenido para su lectura. Tiene como ventaja que la dirección para la entrada se puede decodificar como si fuese una memoria de acceso aleatorio, y en lugar de tener un bus de dirección de n líneas se puede reducir con un Decodificador a p líneas, donde n=2p. Si se tienen que borrar las palabras que no se necesitan e insertar nuevas palabras una a una, es necesario un registro especial, llamado registro etiqueta, que distingue las palabras activas de las inactivas, tendrá tantos bits como palabras la memoria. Memorias compartidas. En los sistemas en que diferentes elementos tienen acceso a una misma unidad de memoria la unidad básica es el árbitro, que es el elemento encargado de permitir el acceso a la unidad de memoria a cada uno de los procesadores que solicitan dicho recurso. El problema que se plantea es establecer la estrategia de asignación de prioridades a la petición de servicios de los distintos elementos. Los procedimientos más utilizados son: n Asignación de la menor prioridad al elemento servido: Para cualquier estado presente, la transición al próximo estado se obtiene asignando la menor prioridad al elemento servido. Con esta estrategia la complejidad del árbitro aumenta factorialmente con el número de procesadores a servir. n Rotación de prioridades: Intenta reducir el número de estados del árbitro y en consecuencia simplificar su diseño. El próximo estado se calcula rotando el orden de prioridades actual hasta que el procesador al que acaba de dar servicio tiene la menor prioridad. El número de estados del árbitro coincide con el número de elementos a servir. Memorias tipo pila Devuelven la información de modo inverso al de su almacenamiento, y se caracterizan porque sólo se puede leer el último dato almacenado en ellas, que se encuentra en la cumbre de la pila. (LIFO) Hay dos formas básicas de realizar una memoria de pila: A- Mediante un conjunto de registros. B- Mediante un conjunto de palabras de memoria principal. Para ello el procesador dispone de un registro especial, SP, puntero de pila; y del repertorio de instrucciones para su manejo. Pila realizada como un conjunto de registros Ventajas Desventajas Velocidad alta Hardware propio en la UCP Alto coste Capacidad limitada Pila formada por una zona de memoria principal Utiliza la memoria principal Bajo coste Gran capacidad Velocidad baja A veces se dan realizaciones mixtas, las primeras posiciones de la pila están soportadas por un conjunto de registros y el resto sobre memoria principal. Estructura de Computadores II 13 Las memorias tipo pila tienen como principales aplicaciones: • Salto a subrutinas • Tratamiento de interrupciones • Compilación de expresiones aritméticas. Tema 3 Unidad de Entrada Salida La unidad de E/S proporciona un método de comunicación eficaz entre el sistema central y el usuario. La E/S se puede ver como un conjunto de controladores; cada controlador se conecta al bus del sistema o a un conmutador centralizado y supervisa a uno o más dispositivos periféricos. Un controlador de E/S dispone de la lógica necesaria para realizar una función de comunicación entre los periféricos del computador y el bus. Los motivos por los que no se conectan los periféricos al bus directamente son: a- La gran variedad de tipos y métodos de operación, por lo que no es práctico incorporar dentro de la UCP la lógica que se necesita para controlar un conjunto tan amplio de dispositivos. b- La velocidad de transferencia de datos de los periféricos suelen ser menor que la de la memoria con la UCP. c- Los periféricos utilizan formatos y longitudes de palabra distintas a las del computador. Estas razones justifican la existencia de los controladores de E/S, que tiene dos grandes funciones • Comunicarse con la UCP y la memoria a través del bus del sistema. • Comunicarse con uno o varios dispositivos periféricos mediante enlaces de datos adaptados a cada periférico. Dispositivos externos Un dispositivo externo se conecta al computador a través de un enlace con un controlador de E/S. El enlace se utiliza para intercambiar datos e información, sobre su control y estado, entre el controlador de E/S y el dispositivo externo. Los periféricos pueden clasificarse en tres categorías: • Adaptados al usuario. • Adaptados a la máquina. • De comunicación. Lo dispositivos externos adaptados a la máquina pueden ser unidades de cinta y disco. Esto es debido a que desde el punto de vista funcional pertenecen a la jerarquía de memorias, pero estructuralmente están supervisados por un controlador de E/S. La comunicación con el controlador de E/S se efectúa mediante señales de datos, control y de estado del dispositivo. Los datos están constituidos por un conjunto de bit que se envían o reciben desde el controlador de E/S. Las señales de control determinan la función que realiza el dispositivo. La lógica de controla asociada con el periférico gobierna su funcionamiento en respuesta a las ordenes enviadas por el controlador de E/S. En una operación de salida los transductores convierten las señales eléctricas en otras formas de energía y a la inversa. Normalmente el transductor lleva asociado un registro que almacena temporalmente el dato que se transfiere entre el controlador de E/S y el mundo exterior. Estructura de Computadores II 14 Controlador de E/S Es el módulo del computador responsable del control de uno o más dispositivos externos y del intercambio de datos entre dichos periféricos con la memoria principal o con los registros de la UCP. Funciones del controlador de E/S En cualquier instante de tiempo la UCP se puede comunicar con uno o más dispositivos externos de manera no prefijada, dependiendo de las necesidades de E/S del programa que se esté ejecutando. Por ello los recursos internos del computador deben de compartirse, la función de E/S requiere un mecanismo de control y temporización que coordine el intercambio de información entre los recursos internos y los externos. Si el sistema emplea un solo bus, cada una de las interacciones entre la UCP y el controlador de E/S implica uno o más arbitrajes para conseguir el acceso al bus. La comunicación del controlador con la UCP requiere: a- Decodificación de la orden b- Intercambio de datos c- Información del estado d- Reconocimiento de la dirección. El controlador de E/S realiza también la comunicación con el dispositivo, lo que comprende ordenes, información del estado del dispositivo y datos. Una tarea esencial de un controlador de E/S es el almacenamiento temporal de los datos, debido a las diferentes velocidades de transferencia que tienen los diferentes dispositivos. Este almacenamiento sirve para adecuar las diferentes velocidades entre la interfaz interna con el computador y la interfaz externa. El controlador de E/S es responsable de la detección de errores, y de informar a la UCP cuando ocurren. Estructura del controlador de E/S: Los controladores de E/S varían considerablemente en complejidad y en el número de dispositivos externos que pueden controlar. El controlador de E/S se conecta con el resto del computador a través del bus del sistema. Al conjunto de registros que almacenan datos y estados se les denomina genéricamente puertos. El controlador debe de reconocer y generar las direcciones asociadas con los dispositivos que controla. Estructura del sistema de E/S Hay tres maneras de utilizar el bus para interconectar la UCP con la memoria y la unidad de E/S: 1- Utilizar dos buses independientes, uno para memoria y otro para el sistema de E/S. 2- Bus común para memoria y sistema de E/S, con líneas de control independientes. 3- Bus único, con líneas de control comunes. E/S controlada por programa. Cuando se emplea E/S controlada por programa el computador adapta su velocidad de trabajo a la del periférico. Si la UCP está ejecutando un programa y encuentra una instrucción de E/S, envía una orden al controlador E/S adecuado, el cual realiza la acción pedida y modifica el contenido de su registro de estado (RE) y no efectúa ninguna acción más para comunicárselo a la UCP. Es responsabilidad de la UCP comprobar periódicamente el estado del controlador de E/S, hasta que detecta el final de la operación. Ordenes de E/S Para ejecutar una instrucción de E/S, la UCP envía una orden de E/S y una dirección que especifica el controlador y el periférico en particular. La UCP puede enviar cuatro tipo de ordenes: de control, de comprobación, de lectura y de escritura. Mientras se realiza una operación después de la transferencia de un dato, el computador permanece en un bucle de espera hasta que el periférico esté preparado para realizar la siguiente transferencia, es decir, el procesador no realiza ningún trabajo útil mientras está en el bucle de espera. Estructura de Computadores II 15 Instrucciones de E/S. En la E/S controlada por programa, hay una correspondencia muy estrecha entre las instrucciones de E/S que la UCP recibe de memoria y las ordenes de E/S que la UCP envía al controlador de E/S para su ejecución. Las instrucciones se transforman fácilmente en órdenes de E/S, y a menudo hay una relación biunívoca entre ambas. La forma de la instrucción depende de la manera en que se direccionan los dispositivos externos. Cuando la UCP, la memoria principal y la unidad de E/S comparten un bus común, la forma de hacer el direccionamiento difiere según la E/S esté localizada en memoria o esté aislada: a- E/S localizada en memoria: Hay un único espacio de direcciones para las posiciones de memoria y los dispositivos de E/S. La UCP trata los registros de datos y de estado de los controladores de E/S como posiciones de memoria y utiliza las mismas instrucciones máquina para acceder a memoria y periféricos. Sólo se necesita un conjunto de señales de lectura y escritura. Cada controlador de E/S se organiza como un conjunto de registros que responden a señales de lectura y escritura en el espacio normal de direcciones. Se reserva un segmento el espacio total de direcciones para los registros internos de los controladores de E/S, aunque pueden estar localizados en cualquier dirección mientras no existan palabras de memoria que respondan a la misma dirección. b- E/S aislada: El bus del sistema dispone, además de las líneas de control de lectura y escritura en memoria, de líneas de control específicas de E/S para acceder a los periféricos. La línea de control especifica si la dirección se refiere a una posición de memoria o a un periférico. El rango de direcciones completo está disponible para ambos. Los computadores que poseen E/S localizada en memoria pueden usar instrucciones de referencia a memoria para acceder a datos de E/S lo que permite usar el mismo repertorio de instrucciones para E/S que para memoria. E/S por interrupciones. La idea básica es eliminar el bucle de espera. La UCP envía una orden de E/S al periférico y prosigue la tarea que estaba ejecutando, en lugar de quedarse esperando a que se efectúe la operación de E/S. Cuando el periférico está preparado para intercambiar información, fuerza una interrupción en la tarea que realiza la UCP para que atienda la operación de E/S. En ese momento la UCP realiza la transferencia de datos y a continuación sigue ejecutando el programa interrumpido. El periférico advierte a la UCP que está preparado para la transmisión activando una línea del bus de control. La línea de petición de interrupción. Para no inferir en la tarea que ejecuta, la UCP en el momento de ser interrumpida guarda el contenido del contador de programa y cualquier información que pueda afectar a la ejecución cuando retorne al programa interrumpido. Salvaguardar el contexto supone una sobrecarga adicional en el tratamiento de interrupciones. En algunos sistemas se hace de forma automática por el mismo sistema de interrupciones y en otros el encargado es el programa de servicio de interrupciones. La secuencia de pasos en el tratamiento de una petición de interrupción por parte de un periférico son: 1- Activar el sistema de interrupciones en la UCP. 2- El periférico activa la línea de petición de interrupción 3- La UCP suspende la ejecución del programa. Salva el contenido del CP y otros registros accesibles por programa. 4- La UCP inhibe las interrupciones (bit de máscara) y ejecuta el programa de servicio de interrupción. 5- Se informa al periférico de que se ha reconocido su petición de interrupción mediante la línea RI (Reconocimiento de Interrupción). El dispositivo se desactiva PI=0. 6- Cuando finaliza el programa de servicio de interrupción se activa el sistema de interrupciones (bit de máscara). 7- La UCP continua con la ejecución del programa. Clasificación de las interrupciones Clasificación de interrupciones Estructura de Computadores II 16 Origen a-. Externa: Provocadas por un periférico. b-. Interna: Provocadas por la UCP ( división por0). c-. Simuladas: Provocadas por software. Número de líneas de interrupción a-. Sólo una línea de interrupción Pi. b-. Múltiples líneas Pi1,Pi2,…Pin. Control de la UCP sobre la interrupción a-. Enmascarables. La UCP las puede desactivar. b-. No enmascarables. Identificación de la fuente programa. de interrupción a-. Múltiples líneas. b-. Encuesta. La interrupción se identifica por c-. Vectorizada. La interrupción identifica al periférico. Gestión de la prioridad de la interrupción a-. Por software. Un programa determina la prioridad. b-. Por hardware. Un circuito determina la prioridad. Niveles de interrupción a-. Único. La interrupción no puede interrumpirse. b-. Multinivel. Anidamiento de interrupciones. Identificación de la interrupción y gestión de su prioridad. La forma más directa de identificar la fuente de una interrupción es proporcionar múltiples líneas de petición de interrupción; solución que es poco práctica, por lo que se reúnen las peticiones de varios periféricos en una línea. Hay varios métodos para que la UCP diferencie cuál de los periféricos ha solicitado la interrupción: • Identificación por encuesta: Cuando la UCP detecta una petición de interrupción, lo primero que hace es ir a un programa de servicio de interrupciones, donde interroga a cada uno de los controladores de E/S para determinar cual de ellos originó la petición. Una vez identificado el periférico, la UCP comienza a ejecutar el programa de servicio específico para esa interrupción. Este método tiene como desventaja el tiempo que se pierde en identificar al periférico, aunque garantiza automáticamente la gestión de prioridades. • Interrupciones vectorizadas: Es un mecanismo de encuesta tipo hardware. El periférico envía a la UCP un vector de interrupción que, de forma directa o indirecta, determina el comienzo del programa de servicio específico de la interrupción. Esta técnica se conoce como interrupciones encadenadas (daisy chain). Cuando hay peticiones simultáneas está implícita la prioridad de los periféricos. Controlador de interrupciones. Cuando la UCP tiene múltiples líneas de interrupción, y se producen algunas peticiones simultáneas, es preciso dotar al sistema de algún mecanismo de selección de la interrupción más prioritaria. Cualquier solución tipo hardware que se adopte se puede conseguir en versión software, a costa de perder velocidad al atender la interrupción. Una de las alternativas es emplear un controlador de interrupciones (PIC), que amplia el número de líneas de interrupción de la UCP y se encarga de la gestión del sistema de interrupciones. Las funciones que realiza el PIC son: a- Identificar la fuente de la interrupción. b- Establecer las prioridades de cada periférico. c- Activar o desactivar de forma selectiva las peticiones de interrupción recibidas. d- Enviar a la UCP información sobre la petición de interrupción y cuál es el periférico que debe ser atendido. El PIC resuelve las peticiones simultáneas de diferentes periféricos mediante un codificador de prioridad. La lógica del codificador de prioridad es tal que si le llegan al mismo tiempo dos o más entradas, tendrá preferencia la de prioridad más alta. Otra de las funciones del PIC es activar o desactivar de forma selectiva las peticiones de interrupción que recibe. Hay dos formas básicas de realizar este enmascaramiento: Estructura de Computadores II 17 1- Individualmente: Cada una de las n entradas al PIC de petición de interrupción está controlada por una puerta AND de dos entradas, cuya segunda entrada es el bit correspondiente de un registro de máscara de interrupciones. Cada uno de los bits del registro de máscara son accesibles por programa y en cada momento la UCP recibe el valor deseado. El registro de estado almacena las peticiones de interrupción que han sido autorizadas por el registro de máscara. Las peticiones de interrupción se deben resolver por programa. 2- Por nivel: Las peticiones de interrupción, se ordenan siguiendo un criterio de prioridad que el codificador de prioridades se encarga de resolver. El codificador entrega a su salida un código que indica la entrada de mayor prioridad que ha solicitado una interrupción. La UCP fija un nivel que puede ser modificado por programa. Todas las interrupciones que tengan un nivel superior al especificado pueden ser atendidas, las otras quedan prohibidas. Interrupciones multinivel. Anidamiento de interrupciones. La organización de prioridades en una estructura multinivel significa que durante la ejecución de un programa de servicio de interrupciones se podrán aceptar peticiones de interrupción de algunos dispositivos, mientras que de otros no, dependiendo de sus prioridades relativas. Para la realización de este esquema, se debe asignar a la UCP un nivel de prioridad modificable por programa. El nivel de prioridad de la UCP es la prioridad del programa que se está ejecutando. La UCP aceptará interrupciones sólo de aquellos dispositivos que tengan una prioridad mayor que la suya. Acceso directo a Memoria Controlador de DMA El DMA necesita un módulo adicional conectado al bus del sistema: el controlador de DMA que es capaz de hacer las funciones asignadas a la UCP y asumir el control del sistema. El controlador de DMA tiene tres registros; datos, dirección y contador de palabras. Estos registros permiten al controlador de DMA transferir datos desde (o hacia) una zona contigua de memoria. El registro de dirección almacena la dirección de la siguiente palabra que se va a transmitir y se incrementa de forma automática después de cada transferencia. El contador de palabras almacena el número de palabras por enviar. La Unidad de Control del DMA comprueba si el contenido del registro contador de palabras es 0 y cuando alcanza este valor envía una señal de interrupción a la UCP que le indica el fin de la transferencia. En resumen la técnica de DMA funciona de la forma siguiente: La UCP emite una orden al controlador de DMA con la siguiente información: a- Si la operación de E/S es de lectura o escritura. b- Dirección del periférico. c- Posición de comienzo de memoria de donde hay que leer o escribir. d- Número de palabras que se tienen que leer o escribir. A partir de ese momento la UCP continúa realizando otra tarea. El controlador de DMA transfiere directamente, palabra a palabra, el bloque completo de datos entre el periférico y la memoria sin pasar por la UCP. Cuando la transferencia termina, envía una señal de interrupción a la UCP. Transferencia de datos mediante DMA. El controlador de DMA necesita el control del bus para transmitir los datos. Hay varios métodos: a- Ráfagas: Cuando el DMA toma el control del bus no lo libera hasta haber transmitido el bloque de datos completo. La velocidad de transferencia es máxima, pero la UCP está inactiva durante periodos grandes. b- Robo de ciclos : Toma el control durante un ciclo, transfiere una palabra y lo libera. Reduce al máximo la velocidad de transmisión y la interferencia del controlador sobre la UCP. c- DMA Transparente: Elimina totalmente la interferencia entre el controlador DMA y la UCP. El DMA sólo roba ciclos cuando la UCP no está utilizando el sistema. d- Por demanda: El periférico comienza la transferencia por DMA, devuelve el control del bus a la UCP cuando no tiene más datos. Cuando tiene más datos retoma el control del bus. e- Dato a dato: Cuando el periférico solicita una transferencia por DMA envía un único dato y devuelve el control a la UCP. El proceso acaba cuando se transfiere todo el bloque. Este Estructura de Computadores II 18 método es útil cuando se ejecuta de forma simultánea un programa con la transmisión recepción de datos a velocidades moderadas. Configuración del DMA. • Todos los módulos comparten el mismo bus del sistema. El controlador de DMA, que actúa como sustituto de la UCP, utiliza E/S controlada por programa para intercambiar datos entre la memoria y un periférico a través del DMA. Esta configuración es económica y poco eficaz, ya que cada transferencia de palabra consume dos ciclos de bus. • Las funciones de DMA y E/S se integran, lo que supone que hay un camino entre el DMA y uno o más controladores de E/S que no incluyen el bus del sistema. • Generalizando el concepto anterior, se utiliza en bus de E/S para conectar los controladores de E/S al controlador de DMA. Reduce a uno el número de interfaces de E/S en el controlador de DMA y proporciona una configuración ampliable. Procesador de E/S (PE/S). Características de los PE/S. El PE/S representa una extensión del concepto de DMA. Un PE/S tiene capacidad de ejecutar instrucciones de E/S, lo que le da un control completo sobre dicha operación. En los computadores con PE/S, la UCP no ejecuta instrucciones de E/S, Así la UCP inicia una transferencia de E/S al dar la orden al PE/S para ejecutar un programa en memoria, el cual especifica: el periférico que interviene; la zona de memoria utilizada; las prioridades y las acciones a realizar en caso de error. El PE/S sigue estas instrucciones y controla la transferencias de datos. Hay dos tipos de PE/S: 1. Canal selector: Controla múltiples dispositivos de alta velocidad y en un instante de tiempo está dedicado a la transferencia de datos con uno sólo de estos dispositivos. 2. Canal multiplexor: Puede controlar de manera simultánea operaciones de E/S con múltiples dispositivos. Tema 4 Unidad Aritmético Lógica La UAL es la parte del computador donde se efectúan las operaciones sobre los datos. Las otras unidades del computador, unidad de control, memoria y Entrada/Salida, son las encargadas de suministrar los datos y de recibirlos una vez procesados. Los datos llegan a la UAL a través de los registros y los resultados que se generan también se almacenan en registros. SUMADORES BINARIOS Un sumador binario se puede considerar como un conversor de código que recibe a la entrada dos números binarios x e y de n bits cada uno y produce una salida s de n+1 bits que es la suma de los operandos. Para conseguir un compromiso entre la velocidad y coste se emplea la estrategia de transformar el problema de la suma de dos números de n bits en n problemas idénticos de suma de dos números de 1 bit. Cada una de estas n sumas precisan información de los sumadores de las etapas previas. Semisumador binario: x = xy + xy c = xy x y x y c s 0 0 1 1 0 1 0 1 0 0 0 1 0 1 1 0 l l l l SSB Tabla de verdad c s Representación por puntos Estructura de Computadores II 19 Semisumador completo: Se diferencia del semisumador porque tiene una tercer entrada, Ci-1, de arrastre de las etapa anterior, que le permite encadenarse con otros SBC para el diseño de circuitos de suma de números de n bits ( n>1). x x 0 0 0 y 0 0 1 ci-1 0 1 0 ci 0 0 0 s 0 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 1 0 0 1 y SSB c ci s ci-1 SSB l l l l l Funciones lógicas: si = x i yi ci −1 + xi yi ci −1 + x i yi ci −1 + xi yi ci −1 ci = xi yi + xi ci-1 + yi ci-1 Se sintetizan mediante circuitos lógicos de dos niveles ya que mediante SSB’s conectados en cascada resulta más lento ya que deben de atravesar más puertas. Sumador binario serie. Con un SBC de 1 bit, dos registros y un elemento de memoria, que realiza la función de retardo unitario, se puede diseñar un circuito que realiza la suma de dos números de n bits. Cuya complejidad es independiente del número de bits que hay que sumar, sin embargo el tiempo de operación crece linealmente con el número de bits n. Sumador binario paralelo Mejora la velocidad de los sumadores binarios serie. Se conecta una cadena de SBC’s de forma que se introduzcan en paralelo todos los bits de cada uno de los dos operandos. Para sumar n bits se encadenan n SBC’s. xn-1 yn-1 x1 y1 x0 y0 cn-1 cn-2 sn-1 c1 c0 s1 c-1 s0 La salida sn-1 no será válida hasta que se conozca el arrastre cn-2 producido por el SBC de la etapa anterior. En el caso más desfavorable el resultado de la suma no será efectivo hasta que haya pasado un tiempo t = nd , siendo d el tiempo que tarda un SBC en general el arrastre. Por este motivo se le conoce como sumador con propagación de arrastre. Sumador - restador binario paralelo La forma adecuada de sumar números negativos depende del tipo de representación que se utilice, magnitud signo, complemento a 1 o complemento a 2. En el caso del complemento a 2 la resta es especialmente sencilla, ya que el valor negativo es fácil de realizar: • Se complementan todos los bits Estructura de Computadores II 20 • Se suma 1 teniendo en cuenta esto, se puede diseñar fácilmente un único circuito sumador restador: En la representación de complemento a 1 el resultado obtenido no siempre sería correcto ya que no se puede ignorar la salida cn-1. Si cn-1= 1 hay que sumar 1 al resultado, lo que complica el circuito con respecto al complemento a 2. Detección del rebose en el circuito sumador - restador. Cuando se suman números sin signo el arrastre de la última etapa sirve de indicador de rebose. En números con signos distintos nunca se produce rebose, por lo que sólo queda la situación en que el signo es igual lo que produce dos casos: • Los dos son positivos: El bit de signo es 0 y no puede generar ningún arrastre. El bit de signo de la suma sn-1 será 1 si se genera algún arrastre de la etapa anterior y el resultado será incorrecto. • Son negativos: Siempre se genera un arrastre en la posición del bit de signo ( c n1=1). El bit de suma Sn-1 será 0 sino genera o propaga arrastre desee la etapa anterior ( cn-2=0 ) y el resultado será incorrecto. xn-1 yn-1 sn-1 Rebose 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 0 R= Cn − 2 ⊕ Cn −1 Estructura de Computadores II 21 1 0 1 0 1 1 0 1 1 1 1 0 SUMADORES DE ALTA VELOCIDAD La naturaleza secuencial de la propagación del arrastre es el problema más difícil que hay que resolver para acelerar la suma. Las diferentes soluciones son: • Aceptación de la existencia de los arrastres. • Anticipación del arrastre: circuitería extra que desvía la generación del arrastre. • Suma condicional: Produce la suma en tiempo O (log n), para n operandos. • Detector de fin de arrastre. • Disminución del número de arrastres subiendo la base de numeración. • Arrastre almacenado: Para más de dos sumandos. Características de los arrastres. El arrastre se genera cuando la suma de los bits es mayor que uno; se propaga desde la posición (i-1)-ésima a (i+1)-ésima si la suma de los bits xi, yi es uno: y=0 y=1 x=0 --- p x=1 p g Estas situaciones [ - , p , g ] son mutuamente excluyentes. Sumador con anticipación de arrastre. Es la forma más extendida de diseñar sumadores de alta velocidad. Su principio básico es el de reducir el retardo producido por la propagación de los arrastres de los SBC’s de menor peso a los de mayor peso. Generando la entrada de arrastre de la entrada i-ésima directamente a partir de los bits de entrada a las etapas precedentes. La suma y arrastre i-ésimo se definen como: si = pi ⊕ ci −1 ; ci = g i + ci −1 ⋅ pi A medida que aumenta el número de bits del sumador crece la complejidad por lo que esta técnica no resulta viable. Como solución se encadenan N SBAA’s de X bits con propagación de arrastre. A pesar de que el SBAA de mayor peso no puede dar su resultado mientras no conozca el acarreo del anterior, el retardo es menor que en la solución de SBC’s. A este tipo de sumadores se les conoce como sumadores con propagación de arrastre anticipado. Sumadores de suma condicional. En cada bit del sumador se efectúan dos sumas diferentes si(0) y si(1), la primera supone que el arrastre de entrada ( ce) a esa posición es 0 y la segunda que es 1. Sumadores con detección de fin de arrastre. El tiempo de operación de la suma depende de forma lineal del número de bits de los sumandos. Como un arrastre de máxima longitud no se da frecuentemente, si esperamos este tiempo siempre, en la mayoría de los casos se empleará un tiempo excesivo en el cálculo de una suma. La realización entre las longitudes de propagación del arrastre más desfavorable y el valor medio de la longitud máxima viene expresada por: t= n log 2 n Un sumador que detecte cuando termina la operación es de naturaleza asíncrona ya que no es necesario un intervalo fijo para la realización de la suma. Estructura de Computadores II 22 Sumadores que minimizan el número de arrastres. Aumentando la base de numeración de los operandos con lo que se trabaja se disminuye la propagación de los arrastres, sin embargo esto se consigue en base a complicar la circuitería, además de trabajar a velocidades más bajas. Una forma alternativa de realizar la suma aritmética en bases superiores a dos es utilizando una tabla de consulta. Si los operandos de entrada son números de m bits, dicha tabla tendrá 2m filas X 2m columnas y 22m entradas. Se necesita pues una ROM de 22m palabras × (m+1) bits. Los dos sumadores concatenados dan la dirección de memoria cuyo contenido es su suma. Sumadores BCD. Si se suman dos dígitos BCD en un sumador binario de 4 bits el resultado es correcto si es menor que 10. Cuando es mayor o igual que 10 la suma no es correcta y debe ser corregida sumando 6 en BCD al resultado anterior. El circuito lógico que detecta cuando es necesario corregir el resultado ( c = 1 ) se obtiene de la forma siguiente: • Si hay un arrastre en el primer sumador ( suma > 15 ) • Si la suma está entre 10 y 15. Las configuraciones desde 1010 hasta 1111 Organización de sumadores en código BCD. • Sumador paralelo: contiene n sumadores BCD. El arrastre de salida de cada sumador se conecta al arrastre de entrada del siguiente. La suma se genera en paralelo. • Sumador dígito serie, bit paralelo: Los dígitos se aplican en serie a un único sumador BCD, los bits de cada dígito se aplican en paralelo. • Sumador dígito serie, bit serie: Es la más lenta, los bits se desplazan de uno en uno a través de un SBC. La suma binaria después de cuatro desplazamientos debe ser corregida para obtener un dígito válido en BCD. Restador en código BCD. Una forma económica de efectuar la resta en código BCD es la de formar el complementa a 9 ó 10 del sustrayendo y sumar al minuendo. Como el código BCD no es autocomplementario, el complemento a 9 se obtiene mediante un circuito que resta cada dígito BCD de 9. Esto se consigue complementando los bits a condición de que se incluya la corrección necesaria. Existen dos métodos para efectuar la corrección: • Se suma el número 10 ( 1010) a cada dígito BCD complementado; no se considera el arrastre después de cada suma. • Se le suma el número 6 ( 0100 ) a cada dígito BCD antes de complementarlo. Estructura de la Unidad Aritmético Lógica La complejidad de la UAL viene impuesta por los tipos de operaciones que puede efectuar y la forma que las ejecuta. Si se usan algoritmos análogos para diferentes operaciones se puede simplificar su diseño. Circuito comparador. Un circuito comparador se puede realizar de tres formas: • Utilizando un circuito combinacional • Utilizando un circuito secuencial • Utilizando un sumador Circuito combinacional. En el caso más general hay que sintetizar tres funciones lógicas Mayor, Menor e Igual, de 2n variables. La complejidad y coste del circuito aumenta de forma considerable con n. Circuito secuencial. Estructura de Computadores II 23 Un comparador recibe los bits xi, yi de forma serie, comenzando por los más significativos. El circuito parte de un estado inicial en el que considera que los dos números son iguales y continua en este estado mientras xi = yi. Cuando detecta que xi # yi puede decidir si x > y o x < y. A partir de ese instante el circuito no cambia de estado. El coste del comparador secuencial es independiente de la longitud n de los números, que sin embargo si que afecta al tiempo de ejecución. Mediante sumador. Dado que la UAL dispone de un sumador, la forma más usual de realizar la comparación de dos operandos es restando uno de otro y comprobar el signo del resultado. El procedimiento difiere según sean números con signo o sin signo. Estructura de Computadores II 24 Tema 5 Metodología de diseño Un sistema digital se puede definir como una colección de objetos denominados componentes, que se conectan con un objetivo definido. La función que realiza el sistema queda determinada cuando se conoce: • La función individual de cada componente. • La forma en que los componentes se interconectan entre sí. El método de diseño puede considerarse a diferentes niveles de detalle o complejidad. Se suelen emplear los siguientes niveles: • Nivel de puertas lógicas. • Nivel de registros • Nivel de procesador La descripción de un sistema digital se divide en dos partes: la Unidad de Procesamiento y la Unidad de Control. La Unidad de Procesamiento es la parte del sistema digital en la que se almacenan y transforman los datos. Consta de los siguientes elementos: • Registros de almacenamiento. • Operadores aritmético lógicos ( recursos de cálculo). • Red de interconexión ( Camino de datos ). • Puntos de control. • Señales de condición. La función de la Unidad de Control es generar una secuencia de señales de control de acuerdo con el algoritmo de transferencia de registros, que especifica la realización de la operación deseada. Módulos de un sistema. Un sistema se puede considerar constituido por dos clases de elementos: • Un conjunto de componentes, C, para el procesamiento de la información. • Un conjunto de señales, S, que transmiten la información entre los componentes. Cuando se modela un sistema digital se efectúa la correspondencia entre C y los nodo y S y los arcos obteniendo un grafo que recibe el nombre de diagrama de bloques del sistema. Este diagrama sirve para modelar la estructura del sistema pero no muestra su conducta funcional. Para mostrar la conducta funcional se usan las tablas de verdad, puertas lógicas y funciones de conmutación. Niveles de diseño: Diseño jerárquico. Si un sistema complejo se va a diseñar con puertas lógicas, el proceso de diseño constará de los siguientes pasos: • Especificar a nivel de procesador la estructura del sistema. • Especificar a nivel de registro la estructura de cada unidad del nivel de procesador. • Especificar a nivel de puertas lógicas la estructura de cada componente del nivel registro. Este punto de vista del diseño se conoce como diseño descendente o diseño estructurado. Un buen diseño debe promover la utilización de los componentes más adecuados en cada nivel. Desde esta perspectiva, conviene tener en cuenta las siguientes características: • Independencia de los componentes. • Modularidad del diseño. Nivel de registro. A este nivel la unidad básica es la palabra. Atendiendo al tipo de información se pueden distinguir dos clase de palabras, la palabra de datos y la de control. Los componentes que se emplean en un cierto nivel de diseño constituyen su principal caracterización. Un conjunto de componentes es completo si se puede realizar cualquier función lógica utilizando sólo módulos de ese conjunto. Modelo de un Sistema Digital. Cuando una máquina es capaz de efectuar diferentes operaciones las señales de selección de función están agrupadas en palabras llamadas instrucciones. En estos casos se habla de procesador de un conjunto de instrucciones. El problema de diseño a nivel de transferencia de registros se puede plantear en los términos siguientes: Dados un conjunto de algoritmos, un repertorio de instrucciones y un conjunto de restricciones, obtener la estructura del circuito que realiza las funciones deseadas empleando sólo componentes de este nivel. Estructura de Computadores II 25 Las ligaduras o restricciones especificadas en un problema de diseño imponen un compromiso entre el coste del circuito y su comportamiento (velocidad, fiabilidad, compatibilidad, … ). Para proceder al diseño del sistema digital que realiza una operación genérica, se subdivide éste en dos partes, Unidad de Procesamiento y Unidad de Control. La Unidad de Procesamiento realiza las funciones de almacenamiento y transformación de los datos mientras que la Unidad de Control controla la transferencia de los datos, las transformaciones y el secuenciamiento de acciones. La Unidad de Control produce secuencias de señales de control que gobiernan los cálculos realizados en la Unidad de Procesamiento. Las unidades de Control y Procesamiento se definen especificando los siguientes elementos: • Un conjunto de componentes. • La estructura de interconexión entre los componentes. • La función realizada por los componentes interconectados. La arquitectura de la Unidad de Procesamiento incluye: • Un conjunto de registros que almacenan los datos procesados. • Un conjunto de primi tivas o recursos que realizan el tratamiento sobre los datos. • Una red de interconexión capaz de conectar los registros con los recursos de cálculo. • Un conjunto de entradas de control denominadas puntos de control. • Un conjunto de salidas que constituyen las señales de condición o selección. La función que realiza un componente (recurso de cálculo, registro o red de interconexión) se determina por las señales de control generadas en la Unidad de Control, que están presentes en los puntos de control, es decir, se controlan externamente a través de la Unidad de Control que es un sistema o máquina secuencial. Unidad de Procesamiento La Unidad de Procesamiento es aquella parte del sistema en la que se almacenan y transforman los datos. Consta de registros de almacenamiento, operadores (recursos de cálculo), red de interconexión (camino de datos), puntos de control y señales de condición. Estos elementos se organizan de forma que permiten la ejecución de las operaciones o algoritmos que se necesitan y satisfacen ciertos requisitos de compromiso coste/prestaciones. Las unidades de procesamiento se pueden clasificar en dos grandes grupos; de propósito general o de propósito particular. Puntos de control. Las entradas de la Unidad de Procesamiento que reciben las señales de control se denominan puntos de control y se emplean para controlar la selección de operaciones, los caminos de datos y la carga de los registros. Permiten controlar el flujo de información a través de la estructura de la Unidad de Procesamiento. El conjunto de señales de control se pueden clasificar en tres categorías: • Relojes. Su activación permite cargar el registro correspondiente con el contenido presente en ese instante en el camino de datos que le llega • Conmutadores. Son dispositivos que controlan y/o seleccionan el paso de información de un camino de datos a otro. • De transformación. Controlan las distintas funciones de transformación que pueden efectuar las unidades funcionales de la Unidad de Procesamiento. Señales de condición o selección. Son salidas de la Unidad de Procesamiento que se utilizan por la Unidad de Control para determinar las señales de control condicionales o secuencias alternativas. En el lenguaje de descripción se especifican en secuencias de asignación condicionales o rupturas de secuencias condicionales. Unidad de Control La función de la Unidad de Control es generar una secuencia de señales de control de acuerdo con el algoritmo de transferencia de registro que describe la operación deseada Sus entradas son las señales de condición generadas por la Unidad de Procesamiento, más las entradas de control externas. Sus salidas son las señales de control que se distribuyen por los correspondientes puntos de control de la Unidad de Procesamiento. La especificación de la Unidad de Control consiste en definir sus dos funciones: • Generación de señales de control. • Secuenciamiento de las señales de control. Estructura de Computadores II 26 Existen varios métodos de realizar la Unidad de Control que van desde las estructuras fijas de lógica cableada sintetizadas con elementos de memoria y puertas lógicas, a estructuras flexibles y modificables de tipo programable. Unidad de Control con lógica cableada. Es el procedimiento convencional de diseño de circuitos secuenciales que se conoce como método de la tabla de estados. Las funciones de transición de estados y de salida se realizan con lógica combinacional y no son modificables sin tener que volver a sintetizar el circuito. Por lo que no se puede comenzar el diseño hasta que no se conocen de manera precisa todos los detalles del mismo. Dados el algoritmo de transferencia de registros y la Unidad de Procesamiento, el diseño de la Unidad de Control cableada por el método de los estados consta de los siguientes pasos: • Introducir un estado por cada sentencia del algoritmo de transferencia de registros. Si las microoperaciones son independientes y se pueden completar en un ciclo de reloj, se agrupan en un único estado. • Construir el diagrama de estados de acuerdo con las relaciones especificadas en el algoritmo de transferencia de registros. • Por cada nodo (estado) determinar las salidas (señales de control) que están activas. • Para cada arista determinar las entradas (externas y señales de condición) que originan la transición entre estados. • Aplicar el procedimiento general de síntesis de circuitos secuenciales al diagrama de estados. Modelo sistemático de síntesis de circuitos secuenciales. ¤ Modelar las especificaciones de la conducta secuencial deseada. ¤ Minimizar el número de estados. ¤ Codificar las entradas, salidas y estados. ¤ Seleccionar el tipo de elemento de memoria. ¤ Diseño de la circuitería combinacional. Unidad de Control basada en elemento de retardo. Esta realización es adecuada cuando el número de estados es pequeño. La codificación de cada estado se realiza con un elemento de memoria tipo D, lo que simplifica el procedimiento de diseño. De esta manera, la transformación entre el diagrama de estados y el circuito secuencial es directa. Cuando la transición al próximo estado no depende de ninguna variable de condición su realización es inmediata, la salida del elemento de memoria asociado con el estado Si se conecta a la entrada del elemento de memoria asociado con el elemento Sj. Cuando la transición depende del valor que toman las variables de condición la transformación se puede hacer con una puerta OR y un demultiplexor. Unidad de Control basada en contadores. La utilización de un contador como registro de estado en la síntesis de un circuito secuencial tiene ciertas ventajas: • Si el algoritmo de transferencia de registros presenta una estructura lineal (flujo secuencial de sentencias), la Unidad de Control se puede realizar programando el contador para que está en modo contaje (H=1). • Las rupturas de secuencia en el algoritmo de transferencia de registro se efectúan programando el contador para que este en modo carga paralela (L=1). Unidad de Control basada en registros de desplazamiento. Presenta las mismas ventajas que la realización basada en contadores. En este caso, la asignación del próximo estado corresponde a un código obtenido por uno de los dos métodos siguientes: a. Desplazando a derecha o izquierda el estado presente. b. Cargando un nuevo estado en el registro de desplazamiento a través de las entradas de carga en paralelo. La primera opción se utiliza para codificar estados que van en secuencia en el diagrama de estados, mientras que la segunda se usa cuando hay rupturas se secuencia. Unidad de Control basada en memorias ROM’s. Proporciona una realización de la Unidad de Control más flexible que las consideradas anteriormente. Las distintas arquitecturas que incorporan ROM’s difieren en la forma que trata las variables de condición. En el esquema típico, todas las variables de condición se utilizan con parte de las líneas de dirección de la ROM. Si hay q variables de condición, para cada estado se requieren 2q palabras ROM. Para n variables de estado se hay 2n grupos de 2q palabras, lo que hace un total de 2n+q palabras. Cada Estructura de Computadores II 27 palabra de la ROM consta de dos campos uno de n bits que representa el próximo estado y otro de m bits que constituyen las palabras de control. ROM Variables de condición Dirección q n+q 2n+q palabras × (n+m) bits Próximo estado Inicio Reloj n Cl m Registro Estado presente n Señales de control Un método para reducir el tamaño de la ROM se basa en el hecho de que no todas las variables de condición son necesarias para cada estado. Si sólo se necesita una variable de condición en cualquier estado es mejor seleccionar dicha variable fuera de la ROM, lo que reduce su tamaño a dos palabras por estado, lo que da un tamaño de 2n+1 palabras. Para seleccionar la variable de condición que se precisa en cada estado se puede emplear un multiplexor controlado por las variables de estado. Multiplexor Variables de condición 2n ROM Dirección 1 n+1 2n+1 palabras × (n+m) bits Selección n n Próximo estado Inicio Reloj Estado presente n Cl m Registro n Señales de control Como alternativa se puede emplear un multiplexor de q entradas y log2q variables de control que permite seleccionar una condición para cada estado. El tamaño de la ROM será de 2n+1 palabras con una longitud de log2q + m+ n bits. El método de selección por campo es preferible al de selección por estado si el número total de variables de condición es más pequeño que el número de estados. Estructura de Computadores II 28 Multiplexor Variables de condición q ROM Dirección 1 n+1 2n+1 palabras × (log2q+n+m) bits Selección log2q n Próximo estado Inicio Reloj Estado presente n Cl m Registro n Señales de control Unidad de Control basada en PLA’s. Las variables de condición y de estado son las entradas al array AND del PLA. El próximo estado y las señales de control son las salidas del array OR. La transformación de un diagrama de estados en una realización con PLA y un registro es directa: • En el array AND se asigna una columna a cada uno de los próximos estados de todos los estados. • En el array OR la correspondiente columna del array AND especifica el próximo estado y las señales de control. Estructura de Computadores II 29 Tema 6 Unidad de Control. La función de la Unidad de Control de un computador es la búsqueda de las instrucciones de memoria, su interpretación y generación, en los instantes adecuados, de las señales de control necesarias para ejecutar la operación especificada por cada instrucción. En este proceso se pueden distinguir dos aspectos: el secuenciamiento de las instrucciones y la interpretación de las mismas. Secuenciamiento de Instrucciones. Es el proceso por el cual las instrucciones de un programa van siendo seleccionadas para su ejecución en un orden determinado. El método más simple sería que cada instrucción especifique su sucesora o sucesoras, especificación explícita, tiene como desventaja que alarga el formato de las instrucciones provocando el consiguiente aumento de memoria necesaria para almacenar un programa. Dado que la mayor parte de las instrucciones de un programa tienen una única sucesora, si una instrucción i se almacena en la posición de memoria m y tiene una única sucesora i1 resulta natural almacenar la instrucción i1 en la posición m+1. Con este sistema se puede emplear para el secuenciamiento de instrucciones, un registro contador de programa. En general, si la instrucción i necesita p palabras de memoria, el incremento que debe sufrir el Contador de Programa para pasar a i1 será CP ß CP + p. La selección de un camino y la realización de bucles, requieren instrucciones capaces de transferir el control a una instrucción distinta a la que le sigue, son las rupturas condicionales e incondicionales. Con frecuencia también es necesario la realizar un mecanismo de transferencia de control temporal desde un programa P a un subprograma S. Existen dos situaciones en las que esto ocurre, los saltos a subrutinas y las interrupciones. Microoperaciones. La operación de un computador, al ejecutar un programa es una secuencia ciclos de instrucción con una instrucción máquina por ciclo. La secuencia de ciclos de instrucción no es necesariamente la misma que la secuencia de instrucciones del programa debido a la existencia de instrucciones de ruptura de secuencia. Cada ciclo de control se puede considerar compuesto de una serie de unidades más pequeñas llamadas fases o ciclos, que son: búsqueda, direccionamiento indirecto, ejecución e interrupción. De ellos sólo los ciclos de búsqueda y ejecución están presentes en todas las instrucciones. Cada una de las fases de una instrucción supone una serie de pasos en los que intervienen los registros de la UCP. A estos pasos elementales se les conoce como micooperaciones. El prefijo micro se refiere al hecho de que se considera cada paso como una unidad indivisible, que cuando se ejecuta supone un pequeño cambio en el estado del procesador. Ciclo de búsqueda. Ocurre al comienzo de cada ciclo de instrucción y origina que se realice la búsqueda de la instrucción en memoria. Memoria Bus de Control Bus de Datos Bus de Dirección RD UCP CP Unidad de Control RM RI Estructura de Computadores II 30 Se utilizan los cuatro registros siguientes: • Registro de dirección de memoria (RD). Conectado a las líneas del bus del sistema, especifica la próxima dirección de memoria a leer o escribir. • Registro de datos de memoria (RM). Conectado al bus de datos de sistema, contiene el dato a escribir en memoria o leído de memoria. • Contador de programa (CP). Almacena la dirección de la próxima instrucción que hay que buscar en memoria. • Registro de instrucción (RI). Almacena la última instrucción leída de memoria. El ciclo de búsqueda consta de tres pasos y cuatro microoperaciones, cada microoperación implica el movimiento de algún dato desde o hacia alguno de los cuatro registros. Si estos movimientos no interfieren unos con otros, pueden tener lugar dentro del mismo paso, lo que acelera la ejecución del ciclo. Posibles secuencias del ciclo de búsqueda Ciclo de Microoperaciones búsqueda Ciclo de Microoperaciones búsqueda Paso 1 RD ß (CP) Paso 1 RD ß (CP) Paso 2 RM ß Memoria Paso 2 RM ß Memoria Paso 3 CP ß (CP) + 1 RI ß (RM) Paso 3 CP ß (CP) +1 RI ß (RI) + 1 Para agrupar microoperaciones se deben seguir dos reglas simples: • Respeta r la secuencia de acciones. • Evitar conflictos de lectura/escritura. Ciclo de direccionamiento indirecto Una vez buscada la instrucción, el paso siguiente es encontrar los operandos a los que se refiere. Se supone que la instrucción tiene un formato unidireccional y que son posibles los direccionamientos directo e indirecto. Si la instrucción especifica un direccionamiento indirecto, un ciclo de este tipo debe preceder al de ejecución. Ciclo de interrupción. A la finalización del ciclo de instrucción, se efectúa un test para determinar si existe alguna petición de interrupción pendiente, Si es así se pasa al ciclo de interrupción. La naturaleza de este ciclo varía mucho de una máquina a otra. Ciclo de ejecución Los ciclo de búsqueda, direccionamiento indirecto e interrupción son simples y predecibles. Cada uno de ellos contiene una secuencia fija de microoperaciones y en cada caso, las mismas microoperaciones se repiten una y otra vez. Esto no sucede con el ciclo de ejecución, ya que para una máquina con N códigos de operación, hay N secuencias distintas de microoperaciones. Ciclo de instrucción. Cada fase del ciclo de instrucción se puede descomponer en una secuencia de operaciones elementales llamadas microoperaciones. Para reconocer en que fase de instrucción se encuentra se introduce el código de ciclo de instrucción de dos bits. Interpretación de las instrucciones. Todas las microoperaciones que se necesitan para realizar un ciclo de instrucción, incluyendo las específicas de cada una de las instrucciones del repertorio de instrucciones de la UCP, pertenecen a una de las categorías siguientes: 1- Transferencia de datos desde un registro a otro 2- Transferencia de datos desde un registro al bus del sistema 3- Transferencia de datos desde el bus del sistema a un registro 4- Realización de una operación aritmético lógica, utilizando registros como E/S. La unidad de control realiza dos funciones básicas: Estructura de Computadores II 31 • Secuenciamiento de las microoperaciones de la UCP • Ejecución de las microoperaciones. Para que la Unidad de Control realice su tarea debe poseer entradas que le permitan determinar el estado del sistema y salidas que puedan controlar su funcionamiento, Son las especificaciones externas de la Unidad de Control. Internamente la Unidad de Control contiene los componentes lógicos necesarios para hacer sus funciones se secuenciamiento y ejecución. Las entradas a una Unidad de Control son: • Reloj: Permite a la UCP mantener la temporización básica de todo el sistema. La Unidad de Control realiza una microoperación ( o un conjunto de ellas simultáneas) durante cada pulso de reloj, que se denomina ciclo del procesador. • Registro de instrucción. El código de operación de la instrucción actual se utiliza para determinar que microoperación hay que ejecutar durante el ciclo de ejecución. • Señales de condición. Las necesita la Unidad de Control para conocer el estado en que se encuentran la UCP y el resultado de las operaciones anteriores realizadas por la UAL. • Señales de control del bus del sistema. Señales de interrupción, etc. Sus salidas son: • Señales de control internas a la UCP. Hay dos tipos: las que originan que los datos se muevan entre los registros y las que activan funciones específicas de la UAL. • Señales de control hacia el bus del sistema: de control de memoria y de control a módulos E/S. Organización interna de la UCP. Para simplificar la organización y diseño de la UCP se organizan todos sus elementos alrededor de un bus interno. Con esta disposición se deben de proporcionar los puntos de control necesarios para permitir el movimiento de entradas y salidas del bus desde todos los registros. Se necesitan puntos de control adicionales para transferir datos a y desde el bus externo del computador y para gobernar el funcionamiento de la UAL. Unidad de Control con Lógica Programada Es esencialmente un circuito secuencial. Sus entradas se transforman en un conjunto de salidas que son sus señales de control. Entradas de la Unidad de Control Registro de instrucción Decodificador I0 I1 Reloj Generador de subciclos …. IK Unidad de Control S0 Sp C0 C1 ….. Cm Señales de control Dado que el computador ejecuta un conjunto de instrucciones será necesario un circuito asociado a la Unidad de Control que identifique cual es la instrucción que se está ejecutando, de tal forma que si la UCP está ejecutando la instrucción I, la Unidad de Control genera exclusivamente la secuencia de microoperaciones que realiza la instrucción. El elemento responsable de esta función es el decodificador Estructura de Computadores II 32 de instrucciones, que es un circuito combinacional que tiene como entrada el código de instrucción almacenado en el registro de instrucción. El generador de subciclos de la Unidad de Control produce una secuencia de pulsos repetitivos que se utilizan para medir la duración de las microoperaciones. El periodo de impulsos del reloj debe ser suficiente para permitir la propagación de las señales a través de los distintos caminos de datos que existen en la UCP. Dado que la Unidad de Control genera señales de control en diferentes instantes de tiempo durante un ciclo de instrucción, se divide el ciclo en un conjunto de subciclos suficiente para que se puedan ejecutar todas las instrucciones máquina del computador. Esta secuencia se repite periódicamente con la ejecución de cada instrucción. Dado que el número de ecuaciones lógicas que se necesitan para definir la UCP es muy grande se usa un enfoque más sistemático para la Unidad de Control que se conoce como microprogramación. Unidad de control microprogramada. La microprogramación es un método para el diseño de la Unidad de Control que se basa en el hecho de que una instrucción se puede especificar mediante una secuencia de instrucciones primitivas llamadas microinstrucciones. La ejecución de una microinstrucción requiere una secuencia de búsqueda - decodificación ejecución que aunque es más simple debe ser controlada por otra Unidad de Control. De una forma recursiva se podría considerar que esta nueva y más sencilla Unidad de Control se realiza con técnicas de microprogramación. La solución de este problema recursivo obliga a que la Unidad de Control final se realice mediante lógica de tipo cableado. La microprogramación se puede considerar como un método sistemático para diseñar la Unidad de Control de cualquier sistema digital. Conceptos básicos. La microprogramación permite generalizar un diseño de la Unidad de Control basado en la utilización de memorias ROM. Las funciones de transición de estado y de salida se sintetizan mediante tablas de consulta que están en una RAM o ROM. Cada sentencia del algoritmo de transferencia de registros que se almacena en una palabra de la memoria constituye lo que se denomina microinstrucción. Una microinstrucción es pues una o más microoperaciones que se pueden ejecutar de forma simultánea y que está contenida en una palabra de la ROM o RAM (palabra de control). Cada microinstrucción estaría representada por un conjunto diferente de 1’s y 0’s contenidos en las palabras de control. Los elementos que definen una microinstrucción son: 1- Las señales de control que están activas durante la ejecución de la microinstrucción y su temporización 2- El secuenciamiento de información que determina la próxima microinstrucción que hay que ejecutar. Así pues, una microinstrucción está compuesta de algunos campos que definen las señales de control, la dirección de la próxima microinstrucción y su temporización. El campo de control especifica los valores de las señales de control durante la ejecución de la microinstrucción y está dividido en subcampos, cada uno de los cuales gobierna una microoperación cuando se ejecuta la microinstrucción, por lo que el número de microoperaciones concurrentes no puede ser mayor que el número de subcampos de control. Existen dos formas básicas de definir los subcampos de control: a- Formato horizontal: Cada señal de control tiene un subcampo independiente de un bit que indica el correspondiente valor de la señal de control. Proporciona la máxima concurrencia entre señales de control. b- Formato vertical: Emplea un subcampo con varios bits para codificar subconjunto de las señales de control. Un subcampo de j bits puede especificar 2j-1 señales de control. Como en cada momento sólo puede haber una señal activa por subcampo, hay que elegirlos de forma que se garantice que las operaciones que controlan nunca se necesitan de forma simultánea. Es más lento que el formato horizontal, pero utiliza longitudes de palabra más pequeñas y requiere memorias de control más pequeñas. No tiene las señales de control decodificadas. Arquitectura de una Unidad de Control microprogramada Estructura de Computadores II 33 Los elementos clave son: El registro de dirección de memoria de control (RDC) que mantiene la dirección de la próxima microinstrucción que se va a leer. Cuando se lee una microinstrucción de la memoria de control, se transfiere al registro de datos de la memoria de control (RMC). Secuenciamiento de las microinstrucciones: Las dos tareas básicas realizadas por una Unidad de Control microprogramada son: • Secuenciamiento de las microinstrucciones. Obtener la próxima microinstrucción de la memoria de control. • Ejecución de las microinstrucciones, consiste en generar las señales de control que se necesitan para ejecutar la microinstrucción. La determinación de la siguiente microinstrucción se puede realizar: Por direccionamiento explícito: La dirección de la próxima instrucción se especifica en un campo separado. Es muy flexible y rápida, pero precisa una longitud grande. Trata de optimizar la utilización de la memoria de control. Esta dirección se carga en el registro de dirección de memoria de control (RDC). Cuando en el microprograma existen rupturas de secuencia condicional se necesitan dos o más direcciones por microinstrucción. En este esquema la memoria de control puede ser vista como una lista encadenada En la arquitectura de una Unidad de Control microprogramada con dos direcciones por instrucción cada microinstrucción tiene asociada su propio microprograma, almacenado a partir de una posición determinada de la memoria de control. La transformación de los bits del código de operación de la instrucción, en una dirección de la memoria de control donde está localizado el microprograma, la realiza un bloque denominado lógica de transformación. Un procedimiento de transformación es una regla que convierte el código de una instrucción en una dirección de la memoria de control. El bloque lógica de bifurcación proporciona la capacidad de toma de decisiones en la Unidad de Control. El formato con dos campos de dirección por microinstrucción produce memorias de control con longitudes de palabras grandes. Otra posibilidad de direccionamiento explícito que mejora este aspecto es el de usar un formato de microinstrucción con sólo un campo de dirección. Por direccionamiento implícito: Reduce el tamaño. La microinstrucción se ejecuta en el orden que se almacena en la memoria de control. Por lo que no se necesita ninguna información de secuenciamiento en la misma microinstrucción que sólo contiene los campos de control. Se necesita una microinstrucción especial para especificar una bifurcación, que tendrá dos campos. El primero define la condición que se utiliza para efectuar la bifurcación y el segundo la dirección de ésta. Ejecución de una microinstrucción El ciclo de ejecución de una microinstrucción consta de las siguientes fases: • Búsqueda (lectura de una microinstrucción). • Decodificación de los campos de la microinstrucción. • Ejecución de las microoperaciones. • Cálculo de la dirección de la siguiente microinstrucción. Atendiendo a la forma en que cada microinstrucción se ejecuta se pueden clasificar en: Monofásicas: Las microoperaciones especificadas en la microinstrucción se pueden ejecutar todas a la vez. Polifásicas: Sus campo se utilizan de forma escalonada a los largo del tiempo de ejecución. Apropiadas cuando la búsqueda es lenta a comparación con su ejecución. Conclusiones Un computador es una máquina programable de propósito general. El programador ve al computador como una máquina en cuya estructura se puede suponer que existe una jerarquía de niveles de abstracción: Nivel lógico Microprogramación Lenguaje máquina Lenguaje ensamblador Estructura de Computadores II 34 Lenguaje de alto nivel Un intérprete es un sistema que analiza y ejecuta instrucciones del lenguaje que describe un determinado nivel. Cada nivel de abstracción de un computador es idealmente ejecutado por un intérprete realizado en el nivel inmediatamente superior de la jerarquía. La Unidad de Control de un computador se encarga de extraer de la memoria cada instrucción, decodificarla y generar la secuencia correcta de señales de control para que pueda ejecutarse. Es decir, interpreta el lenguaje máquina de un computador y está constituida por niveles lógicos y de microprogramación. Un interprete del nivel de microprogramación interpreta las instrucciones del lenguaje de microprogramación, llamadas microinstrucciones, directamente sobre los circuitos digitales del nivel lógico. Un interprete del nivel de lenguaje máquina interpreta las instrucciones del lenguaje máquina del computador con la ayuda de una Unidad de Control microprogramada. Si se suprime y se interpreta el lenguaje máquina directamente sobre el nivel lógico se habla de una Unidad de Control con lógica cableada, mientras que en el anterior se dispone de una Unidad de Control con lógica microprogramada. En la Unidad de Control microprogramada las señales de control se generan por programa y resulta sencillo introducir modificaciones en el diseño, ya que sólo se necesita alterar el contenido de la memoria de control. Cuando esta es del tipo RAM se dice que la Unidad de Control es microprogramable.