Tema 1 Estructuras de interconexión de un computador.

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