Documente Academic
Documente Profesional
Documente Cultură
1. Objetivos de la asignatura.
2. Niveles de descripción de un computador.
3. Estructura básica de un computador convencional.
4. Evolución histórica: tecnología y arquitectura.
5. Lenguajes de descripción hardware.
1. Objetivos de la asignatura
La arquitectura de un computador está constituida por el conjunto de funcionalidades
disponibles para un programador que utiliza el lenguaje máquina, básicamente, el repertorio de
instrucciones y los elementos de memoria referenciados desde él, es decir, los registros
generales y la memoria principal. Las funcionalidades de una arquitectura se pueden conseguir
con diferentes organizaciones internas o estructuras, diferenciándose unas de otras
fundamentalmente en los parámetros de rendimiento y el coste. Finalmente, la estructura de un
computador se puede implementar con diferentes tecnologías, siendo nuevamente el coste y el
rendimiento los elementos diferenciales. Arquitectura, estructura y tecnología constituyen, pues,
tres niveles de estudio del hardware de un computador.
Para situar con mayor precisión el objeto de estudio de esta asignatura analizaremos en el
apartado siguiente los diferentes niveles de descripción que se suelen contemplar en el estudio de un
computador digital.
A) Unos elementos de entrada, es decir, disponibles para el diseño en este nivel, y que
proceden del nivel inmediato inferior.
B) Unos elementos de salida, es decir, objetivos del diseño en este nivel, y destinados al
nivel inmediato superior.
Con esta estrategia, la complejidad del sistema queda dividida, acotada y organizada en las
complejidades parciales de cada nivel, dentro de cuyos límites se puede aplicar una metodología
propia de estudio.
1
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
computador digital:
APLICACIONES
ALGORITMOS
ARQUITECTURA Estructura de
Computadores
TRANFERENCI DE REGISTROS
LOGICO
ELECTRONICO
FISICO
Cada nivel se corresponde con la visión que tiene del sistema un tipo determinado de
usuario, y en cada uno podemos considerar dos procesos de estudio diferentes, el análisis y la
síntesis. El análisis parte de la implementación del sistema a un cierto nivel en términos de
elementos básicos del nivel inferior, y llega a determinar la función del mismo, es decir, su
especificación. El sentido de la síntesis es el opuesto, parte de la especificación de un sistema y
obtiene su implementación en función de los elementos básicos del nivel inferior. En la siguiente
figura hemos representado gráficamente esta relación:
Análisis
ESPECIFICACION IMPLEMENTACION
Síntesis
Ejemplo:
a a +b Sín t esis
Su m a dor
b a r r a st r e
a
a +b
a b a +b a r r a st r e
0 0 0 0
0 1 1 0 a r r a st r e
1 0 1 0 An á lisis b
1 1 0 1
2
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
DD
IN OUT
VSS
F ís ic o (s ilic io )
Nivel Electrónico
En este nivel los elementos de salida, es decir, los biestables y las puertas lógicas, se
obtiene a partir de dispositivos electrónicos (resistencias, transistores, etc.) conectados según
una determinada topología. Como metodología de estudio (análisis y síntesis) en este nivel se
utilizan técnicas cuantitativas de análisis en el plano eléctrico-temporal, fundamentalmente
ecuaciones algebraicas y diferenciales.
VD
D
IN OUT
VS S
Nivel Lógico
Los elementos de entrada a este nivel son los biestables y las puertas lógicas, y los de
salida son módulos combinacionales y secuenciales tales como multiplexores, codificadores,
sumadores, registros, contadores, etc. Este nivel de estudio dispone de sus propias técnicas de
análisis y síntesis. El comportamiento de un circuito combinacional se representa con una
función lógica que admite una expresión algebraica manipulable simbólicamente dentro de un
formalismo matemático: el álgebra de conmutación (un álgebra de Boole). Para los circuitos
secuenciales se utiliza la teoría de las máquinas de estados finitos.
3
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
S Q
S Q
NQ
NQ R
R
Circ u ito ló g ic o
bus
RMIC RMICAUX
SECUENCIADOR
ROM
RI MAR DE
CONTROL
bus
Transferencia de registros
El nivel de lenguaje máquina suele ser el primer nivel al que tiene acceso el usuario de
un computador, salvo si la máquina es microprogramable, en cuyo caso dispone de un nivel
intermedio que permite modificar el repertorio de instrucciones. Normalmente, el usuario no
utiliza directamente el lenguaje máquina, sino una representación simbólica del mismo conocida
como lenguaje ensamblador, que ofrece algunas prestaciones más que el puro lenguaje
máquina, como el uso de macros y la definición simbólica de constantes y posiciones de
memoria.
Este nivel queda definido por 1) el repertorio de instrucciones, con sus formatos, tipos de
direccionamiento, modos de secuenciamiento y representación de datos, y 2) la memoria y el
conjunto de registros visibles por el programador. En la actualidad cabe distinguir dos
planteamientos diferentes a la hora de definir el nivel máquina de un computador.
4
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
LDR Ri, Dj
STR Ri, Dj
ADD Ri, Rj
En primer lugar está el planteamiento CISC (Complex Instruction Set Computers) que
define un repertorio de instrucciones bastante complejo y numeroso, con muchos tipos de
direccionamiento y muchos modos de control, pretendiendo reducir la distancia semántica que lo
separa de los lenguajes de alto nivel, y facilitar así el diseño del compilador. La
microprogramación es la técnica de diseño de la unidad de control con la flexibilidad suficiente
para facilitar la implementación de las máquinas CISC. Un caso extremo de proximidad al
lenguaje de alto nivel lo tenemos en arquitecturas avanzadas que tienen este tipo de lenguaje
como su lenguaje máquina.
En segundo lugar tenemos el planteamiento RISC (Reduced Instruction Set Computer),
que simplifica la complejidad y el número de instrucciones máquina, dejándolo reducido a un
conjunto pequeño y rápido que cubre un porcentaje muy elevado del peso computacional de los
programas. Los compiladores para este tipo de arquitecturas asumen la responsabilidad de
utilizar eficientemente unas instrucciones con poco contenido semántico pero elevada velocidad
de ejecución.
Dos aspectos importantes del nivel máquina son también la gestión de memoria y la
entrada/salida. Sin embargo, en los computadores actuales estos recursos los utiliza el
programa del usuario a través del sistema operativo.
5
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Este nivel requiere un proceso de traducción al nivel máquina que es realizado por un
programa denominado compilador. Se trata de un programa que toma como dato de entrada un
programa fuente escrito en un lenguaje de alto nivel, y produce como salida un programa objeto
escrito en lenguaje máquina con una semántica equivalente (igual significado).
Algoritmos
En el nivel algorítmico se expresa la resolución de un problema mediante un conjunto de
reglas aplicadas de forma sistemática y ordenada, es decir, mediante un algoritmo. Los
procedimientos que define un algoritmo son independientes de cualquier lenguaje de
programación y de cualquier máquina particular.
Aplicaciones
Las aplicaciones se corresponden con dominios de actividad que pueden automatizarse
con el uso de un computador digital. Del análisis del dominio se extraen unas especificaciones
funcionales que son expresadas mediante algoritmos. Codificados estos algoritmos en un
lenguaje de programación y previa compilación, se ejecutan en la máquina.
6
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
X3 X3
X2 X2
MUX
Z
X1
X1
X0
X0
El diseño resultante es más costoso (mayor número de conmutadores) que el que podemos
obtener si planteamos el diseño directamente con conmutadores:
S1 S0 1
X3
S1 S0
X2
S1 S0
X1
S1 S0
X0
7
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
tiene en cuenta no sólo la arquitectura (repertorio de instrucciones) sino la forma en que se ejecutan
estas instrucciones (estructura) en la ruta de datos de la máquina. Este hecho puede dar lugar a que
el orden de las instrucciones máquina generadas no sea el orden lógico que utilizaría un
programador de lenguaje máquina que ignorase los detalles estructurales de la arquitectura. Esta
situación viene producida fundamentalmente por la segmentación y paralelización de las
instrucciones dentro de la máquina y se estudiará con detalle en las asignaturas de Ampliación de
Estructura de Computadores y Arquitectura e Ingeniería de Computadores.
MEMORIA
P ROCES AD OR
CON TROL
EN TRAD A
S ALID A
U AL REG.
La memoria almacena las instrucciones del programa, los datos iniciales, los resultados
parciales y los finales. Se accede de forma directa (RAM) a cualquier posición para realizar
operaciones de lectura o escritura.
El procesador es la unidad encargada de leer y ejecutar las instrucciones. Para ello
dispone de una ruta de datos constituida por un conjunto de registros (REG.), una unidad
aritmético-lógica (UAL), y unos buses de comunicación; y una unidad de control, que es la
encargada de generar las señales que gobiernan todos los dispositivos.
La entrada y salida constituyen la unidad para la transferencia de información con el
mundo exterior. Funcionalmente la máquina tiene las siguientes características:
1) Organización lineal de la memoria
2) Palabra de longitud fija.
3) Espacio único de direcciones.
4) Memoria única para datos e instrucciones sin diferenciar entre ambos.
5) Ejecución secuencial de las instrucciones salvo las de ruptura de secuencia
A esta organización básica de von Neumann se han ido incorporando algunas aportaciones
significativas entre las que destacaremos las siguientes:
a) Sistema de interrupciones, que permite la interrupción de un programa en ejecución
producida por una señal externa a la máquina. El sistema de interrupciones permite una mejor
sincronización de la Entrad/Salida con el exterior y la posibilidad de compartir la CPU por más de
un programa
8
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Programa principal
I1
I2
. señal de interrupción
.
.Ii
Ii+1 línea de interrupción
.
.
.In
Rutina de tratamiento
i1
i2
.
.
im
CPU
palbras
Memoria cache
(Mc)
bloques
Memmoria principal
(Mp)
9
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Memoria principal
(Mp)
páginas
Memoria secundaria
(Ms)
Tc
P r ogr a m a
1 ciclo
I1
3 ciclos
I2
2 ciclos
I3
10
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
T = N * CPI * Tc
Es decir, mientras la arquitectura influye a través del número medio de ciclos por instrucción y del
número total de instrucciones, la organización lo hace a través de éste último y el tiempo de ciclo,
mientras que la tecnología lo hace casi exclusivamente a través del tiempo de ciclo (o su inversa, la
frecuencia de reloj del procesador). El tiempo de ciclo viene determinado por los tres niveles tecnológicos:
físico, electrónico, lógico y trasferencia de registros.
La tecnología ha experimentado una transformación continua durante las últimas décadas. Desde
la aparición del primer computador comercial, la industria informática ha pasado por cuatro generaciones
de computadores, diferenciadas básicamente por la tecnología de los componentes básicos. Los relés y las
válvulas de vacío de 1940 a 1950, los diodos y transistores discretos de 1950 a 1960, los circuitos
integrados de pequeña y media escala de integración (SSI/MSI) de 1960 a 1970, y los circuitos integrados
de alta y muy alta escala de integración (LSI y VLSI) desde 1970 en adelante. La disminución del tiempo
de conmutación de los componentes electrónicos ha repercutido directamente en el aumento de velocidad
de los computadores. También el aumento de la capacidad de integración y de encapsulado han repercutido
en la misma dirección. Los cambios tecnológicos alteran constantemente las relaciones de
compromiso tecnología/organización/arquitectura, obligando a la reconsideración de viejas
ideas ante un nuevo avance tecnológico.
Paralelismo y Segmentación
Las organizaciones y arquitecturas paralelas consiguen que en ciertos instantes de
tiempo el computador procese simultáneamente más de una operación básica. La simultaneidad
temporal se consigue fundamentalmente con dos técnicas: el paralelismo y la segmentación. La
primera ejecuta simultáneamente varias operaciones independientes replicando el número de
operadores hardware. La segunda descompone el operador y la operación correspondiente en
etapas secuenciales y autónomas, de manera que simultáneamente se puedan ejecutar etapas
diferentes de varias operaciones. Ambas técnicas se consideran como dos formas del
paralelismo: el paralelismo espacial o replicación la primera, y el paralelismo temporal la
segunda.
La idea básica de la segmentación estaba ya latente en la propuesta de von Neumann
para construir el primer computador de programa almacenado. Al hablar sobre las técnicas de
entrada/salida, sugería la conveniencia de disponer un buffer que permitiese el solapamiento
11
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
de la ejecución del programa con las operaciones de E/S, es decir, una forma primaria de
procesamiento segmentado.
Procesadores Segmentados
Se trata de arquitecturas monoprocesador que operan con una organización interna en
la que se segmenta la ejecución de las instrucciones a fin de iniciar una (y finalizar otra) cada
ciclo de operación. Sin embargo este objetivo límite difícilmente llega a conseguirse debido a los
riesgos estructurales, las dependencias de datos, las bifurcaciones y las excepciones. Para
reducir al máximo el efecto de tales ineficiencias se utilizan técnicas software como la
reordenación estática de instrucciones, el renombramiento de registros, y los saltos retardados; y
técnicas hardware como el adelantamiento (forwarding), la reordenación dinámica de
instrucciones y la predicción dinámica de saltos.
Regist r os
In st r u cción 1 Bu 1 De1 E j1 E s1
In st r u cción 2 Bu 2 De2 E j2 E s2
In st r u cción 3 Bu 3 De3 E j3 E s3
Bu 4 De4 E j4 E s4
In st r u cción 4
ciclos
1 2 3 4 5 6 7 8
Procesadores Superescalares
Un procesador superescalar de grado m emite m instrucciones por ciclo, debiendo ser
también m el paralelismo a nivel de instrucción para explotarlo completamente. En estos
procesadores los recursos para la decodificación y ejecución de instrucciones se incrementan
hasta el punto de disponer de m cauces segmentados operando concurrentemente, si bien en
algunas etapas los cauces pueden compartir algunas unidades funcionales. En general, los
conflictos por dependencias de datos, de control y estructurales de los procesadores escalares
segmentados siguen existiendo en los superescalares con mayor complejidad.
Las máquinas superescalares proporcionan compatibilidad a nivel del código objeto con
las máquinas escalares, detectando el paralelismo de las instrucciones en tiempo de ejecución.
Normalmente, se dividen las instrucciones máquina en categorías, y como mucho una
instrucción de cada categoría pueden emitirse simultáneamente.
12
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Un ida d
de
Un ida d E m isión
de Un ida d de ejecu ción 2 vía 2
de
In st r u ccion es
Bú squ eda
vía 3
Un ida d de ejecu ción 3
Procesadores VLIW
En un procesador VLIW (Very Long Instruction Word) una única instrucción especifica
más de una operación concurrente, reduciéndose el número de instrucciones por programa en
comparación con el caso escalar. Las organizaciones VLIW extendieron y formalizaron el
concepto de microcodificación horizontal que se venia utilizando años atrás para el diseño de
procesadores de propósito especial dedicados a tareas intensivas en cálculo, tales como el
procesamiento de señales digitales. Utilizando técnicas avanzadas de compilación se puede
extraer el paralelismo de grano fino de un amplio rango de aplicaciones científicas y de propósito
general. En estos procesadores los conflictos por dependencias de datos y estructurales se
resuelven antes de la ejecución, y son explícitamente controlados por las instrucciones. El
hardware adicional se dedica a caminos de datos paralelos y más unidades funcionales, en
lugar de a lógica de control y sincronización.
In st r u cción la r ga
Procesadores Vectoriales
Los procesadores vectoriales disponen de operaciones que trabajan sobre vectores de
números. Por ejemplo, una operación vectorial puede sumar dos vectores de 64 elementos en
punto flotante dando como resultado otro vector de 64 elementos. La instrucción vectorial es
equivalente a un bucle completo en el que se calcula un elemento del resultado en cada
iteración, se actualiza el índice y se bifurca al comienzo.
Una simple instrucción vectorial especifica, pues, una gran cantidad de trabajo, por lo
que se reduce la anchura de banda necesaria para su lectura en comparación con la de las
instrucciones escalares equivalentes. Además, el acceso a los datos tiene un patrón conocido.
Desde el punto de vista arquitectónico son procesadores segmentados con instrucciones
máquina vectoriales. Al no existir dependencias entre operaciones de una instrucción vectorial,
se explota eficientemente la segmentación en las unidades aritméticas. Pero para conseguir el
13
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
rendimiento máximo de estas arquitecturas hay que alimentar a las unidades funcionales
segmentadas con nuevos datos en cada ciclo de reloj, lo que requiere un gran ancho de banda
con la memoria principal.
Multicomputadores
Son multiprocesadores de memoria distribuida donde cada procesador tiene un espacio
privado de direcciones. Se comunican y sincronizan mediante paso de mensajes a través de una
red de interconexión. Las topologías de red más utilizadas son la malla y el hipercubo.
14
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Mem or ia Mem or ia
M1 Mn
AHPL (A Hardware Programming Language) fue propuesto por F.J. Hill y G.R. Peterson unos meses
más tarde que el CDL y DDL, y apareció publicado por primera vez en 1973 en la edición original de
Digital Systems: Hardware Organization and Design. Los autores concibieron AHPL como un lenguaje
de síntesis: todo dispositivo síncrono que pudiese ser implementado en hardware debía ser
expresable en AHPL de manera tal que se pudiese traducir a una realización física siguiendo un
conjunto simple de reglas. En opinión de uno de sus autores, F.J. Hill, que participó como
miembro del grupo de trabajo que formuló las especificaciones originales para VHDL, la
existencia de AHPL favoreció la incorporación de mecanismos para permitir el proceso de
síntesis en VHDL.
15
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
ISPS (Instruction Set Processor Specifications) con este lenguaje se dió un paso importante
hacia la formalización del proceso de diseño a niveles de comportamiento. Además de la
simulación y la síntesis, ISPS se utilizó en la generación de software, la verificación de
programas y la evaluación de arquitecturas. ISPS favoreció los aspectos de comportamiento
sobre los estructurales pero sin eliminarlos completamente.
16
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
S ín te s i
i1 su m a
ca r r y
i2
D o c u m e n ta c i Mo d e la d o
Cir cu it o
Re n d im ie n t
semisu ma do
Compon en t es:
pu er ta AND
pu er ta OR
pu er ta XOR
............................
............................
VHD L
EN TITY cir cu ito IS
P ORT(i1,i2 : IN bit ; su m , ca r r y : OU T);
E N D cir cu it o;
ca r r y S im u la c ió
i2 si
CLK
La síntesis automática tiene como objetivo la generación de dispositivos digitales a partir de una
especificación inicial expresada en un lenguaje de descripción hardware. VHDL, al ser un lenguaje con
una semántica poco formal, en el que se pueden mezclar diferentes estilos de descripción, no es el más
apropiado para utilizar como entrada en las herramientas de síntesis. Sin embargo, dado su status de
estándar IEEE y su amplia aceptación en la industria electrónica, resulta muy conveniente no romper el
ciclo de diseño saliendo de VHDL en la fase de síntesis. Por ello, lo que se realiza habitualmente en este
terreno es definir subconjuntos sintetizables de VHDL. En este sentido cabe distinguir dos grandes
subconjuntos. Uno que engloba las construcciones secuenciales de VHDL, utilizado para la síntesis de alto
nivel, y otro que parte de unas construcciones concurrentes de VHDL que permiten descripciones de
dispositivos a nivel de transferencia de registros (RTL), utilizado para la síntesis de bajo nivel.
17
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
La diagnosis de fallos en circuitos digitales se puede plantear a partir de las descripciones VHDL
de los mismos. En efecto, en lugar de identificar la parte de circuito que falla, podemos localizar la parte de
descripción VHDL cuya implementación hardware tiene un fallo físico y está causando el fallo de
comportamiento observado. En principio esta diagnosis es similar a la que se realiza a nivel de puertas,
pero en este caso el nivel de descripción hardware puede ser más alto y consecuentemente el modelo de
fallos será diferente.
La verificación formal de un diseño consiste en probar que para todos los estados iniciales
aceptables y para todas las entradas posibles, la implementación del diseño cumple su especificación. Las
otras dos alternativas para verificar un diseño, la síntesis automática y la simulación funcional, pueden
resultar incompletas. En efecto, los diseños producidos por síntesis automática son correctos por
construcción si los componentes primitivos están completamente verificados y si las transformaciones
realizadas en el proceso de síntesis son así mismo correctas. Sin embargo, probar la corrección formal de
un método de síntesis implica probar la corrección formal del método en sí y del software que lo
implementa, tarea que puede resultar impracticable. Por otra parte, la verificación funcional por simulación
exhaustiva también es impracticable a partir de una complejidad media en el diseño. La verificación formal
requiere un modelo matemático para representar las propiedades bajo estudio y un cálculo para realizar
computación simbólica sobre el modelo. La lógica es la rama de las matemáticas más ampliamente
utilizada en la verificación formal, incluyendo la lógica de predicados de primer orden, la lógica de orden
superior y la lógica temporal. Al no existir una semántica formal para VHDL los sistemas de verificación
formal, al igual que los sistemas de síntesis, se limitan a subconjuntos del lenguaje.
Los modelos de rendimiento constituyen el nivel más alto de abstracción de los sistemas
electrónicos. Estos modelos se utilizan principalmente para estudiar la capacidad global de procesamiento
de información de un sistema en las primeras etapas del proceso de diseño. El objetivo es identificar las
principales unidades funcionales y definir su forma de actuación en la transformación de los datos de
entrada en datos de salida. A este nivel de conceptualización el diseñador ve una unidad funcional como
algo que realiza una cierta tarea en un cierto tiempo, sin detalles específicos sobre la forma de realizar la
tarea. En realidad, puede que estos detalles no se conozcan aún en esta fase del diseño. Debido a esta
ocultación de detalles sobre los valores de los datos y sus transformaciones específicas se dice que los
datos son no interpretados, y para resaltar este hecho a los modelos de rendimiento se les denomina a veces
modelos no interpretados. VHDL, al disponer de recursos expresivos con alto nivel de abstracción, facilita
la confección de modelos de rendimiento basados en redes de Petri extendidas y colas estocásticas.
Finalmente, la documentación es una de las tareas más importantes en todo proceso de diseño, y
muy particularmente cuando el sistema tiene el grado de complejidad de los circuitos actuales. En estos
casos se hace indispensable disponer de lenguajes con una elevada capacidad de abstracción y ampliamente
aceptados por los diseñadores, como ocurre en la actualidad con VHDL.
Como muestra la siguiente figura, VHDL dispone de recursos expresivos para cubrir totalmente
la descripción y el modelado de dispositivos digitales en los niveles circuito lógico, transferencia de
registros y chip. Los niveles de sistema y circuito eléctrico sólo se cubren parcialmente. Pero lo más
interesante del lenguaje en este aspecto es que permite mezclar en una misma descripción diferentes
niveles. Esto, unido al modelo de concurrencia que permite la construcción de modelos estructurales en los
que los componentes básicos pueden a su vez ser descritos con modelos estructurales, hace posible el
establecimiento de una descomposición estructural de la jerarquía de diseño.
18
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
S OF TWAR E
AR QU ITECTU RA
VHD L
TRAN S F EREN CIA D E REGIS TROS
LÓGICO
ELECTRICO
F ÍS ICO
Á
19
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Las instrucciones máquina son las acciones elementales que puede ejecutar un computador.
Una acción compleja deberá codificarse como una secuencia de instrucciones máquina en lo que se
denomina un programa. La arquitectura de un procesador entendida como el conjunto de recursos
operativos disponibles por un programador a nivel de lenguaje máquina queda definida por el repertorio
de instrucciones (ISA: Instruction Set Architecture). En general, una instrucción codifica una operación
básica que el computador realiza sobre unos datos ubicados en la memoria o en los registros de la
máquina y a los que accede utilizando un modo de direccionamiento. Por consiguiente, la arquitectura
ISA de un procesador viene determinada por los siguientes factores:
a) Tipos de datos y formatos que pueden manejar las instrucciones: naturales, enteros, reales,
caracteres, etc.
b) Modos de direccionamiento de los datos ubicados en la memoria: inmediato, directo,
indirecto, etc. Estos dos factores son determinantes para la implementación eficiente de las
estructuras complejas de datos de un lenguaje de alto nivel.
c) Conjunto básico de operaciones que se pueden realizar sobre los datos: suma, resta, etc.
Propiedad de ortogonalidad
Diremos que un repertorio es ortogonal cuando las instrucciones puedan combinar los elemento
de los tres factores anteriores sin ninguna restricción. La ortogonalidad completa no se da en ningún
repertorio de máquina real.
tipo de direccionamiento
.
indirecto --
directo --
inmediato --
(MUL, real, indirecto)
tipo de datos
instrucciones y los campos que codifican el valor de los factores citados. En general una
instrucción se compone de los siguientes campos:
El CO determina la operación que se realiza sobre OP1,OP2,... El resultado se deja en OPd. Lo normal es
que el número de operandos fuente de un repertorio no pase de 2. La dirección de la instrucción siguiente IS
queda implícita en todas las instrucciones (se trata de la instrucción siguiente del programa) salvo en las
instrucciones de ruptura condicional o incondicional de secuencia.
a) 3 operandos explícitos
• Máxima flexibilidad
• Ocupa mucha memoria si los operandos no están en registros
b) 2 operndos explícitos
c) 1 operando explícito
CO OP1 (fuente
d) 0 operandos explícitos
CO
Ejemplo:
E = (A – B)*(C + D)
3 operandos 2 operandos 1 operando 0 operandos
ADD C, D, C ADD C, D LOAD A (PUSH) LOAD A
SUB A, B, A SUB A, B SUB B (PUSH) LOAD B
MUL A, C, E MUL A, C STORE A SUB
MOV C, E LOAD C (PUSH) LOAD D
ADD D (PUSH) LOAD C
MUL A ADD
STORE E MUL
(PULL) STORE E
Ejemplo: código máquina en cada una de las tres alternativas correspondiente a la sentencia de
asignación C := A + B
C=A+B
Pila Acumulador Conjunto de registros
PUSH A LOAD A LOAD R1, A
PUSH B ADD B ADD R1, B
ADD STORE C STORE C, R1
POP C
(operandos - en memoria)
3
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
OPERANDOS se pueden utilizar para extender el CO de aquellas instrucciones con menor número de operandos.
Ejemplo: Partimos de una máquina con instrucciones de longitud fija de 24 bits y consideraremos los
siguientes supuestos:
0000 R OP
0001 R OP 15 instrucciones de
. . .
. . . 2 operandos
. . .
1110 R . (CO de 4 bits)
1111 0000 .
1111 0001 15 instrucciones de
.
. 1 operando
.
1111 1110 OP (CO de 8 bits)
1111 1111 0000 0000 0000 0000
1111 1111 0000 0000 0000 0001 216 = 65.536
. instrucciones de
. 0 operandos
.
1111 1111 1111 1111 1111 1111 (CO de 24 bits)
2 2 4 16
L CO R OP
Para optimizar el CO se puede utilizar la codificación de Huffman que veremos con el siguiente
Ejemplo: Supongamos las siguientes frecuencias de ejecución de 7 tipos diferentes de
instrucciones:
2) Se unen las dos frecuencias menores de la columna anterior con sendos arcos, obteniéndose
un nuevo nodo cuyo valor será la suma de los nodos de procedencia.
3) Se repite el paso 2) hasta llegar a la raíz del árbol que tendrá valor 1
4) Comenzando en la raíz, asignamos 0 (1) al arco superior y 1 (0) al inferior hasta llegar a los
nodos terminales
ADD 0.53 0
SU B 0.25
0 1
MU L 0.12 0 0.47
0
DIV 0.03 0.22 1
0.06 0
STA 0.03 1 1
0.10
LDA 0.02 0 1
0.04
J MP 0.02
1
5
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
• Modo big-endian: almacena el byte más significativo del escalar en la dirección más baja de
memoria
• Modo little-endian: almacena el byte más significativo del escalar en la dirección más alta de
memoria.
big-endian little-endian
184 12 184 78
185 34 185 56
186 56 186 34
187 78 187 12
Alineación
Un objeto de datos de n bytes ubicado en la dirección de memoria D se dice que está alineado si
D mod n = 0
6
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
32 bits 32 bits
32 bits
32 bits
a la CPU
Espacios de direcciones
En un mismo procesador pueden diferenciarse hasta 3 espacios de direcciones diferentes:
3. Modos de direccionamiento.
Los modos de direccionamiento determinan la forma como el operando (OPER) presente en las
instrucciones especifican la dirección efectiva (DE) del dato operando (DO) sobre el que se realiza la
operación indicada por CO.
Inmediato.
CO OPER
DO = OPER
• El dato operando se ubica en la propia instrucción ==> no requiere accesos a memoria.
• Se suele utilizar para datos constantes del programa
• El tamaño está limitado por el número de bits de OPER
Implícito
CO
• El dato operando se supone ubicado en algún lugar específico de la máquina, por ejemplo, una pila
Directo (memoria o registros)
OPER = Dirección de memoria o de un registro
DE = OPER
DO = <OPER>
Memoria
o
Registros
CO OPER
DO
7
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
• La especificación de un registro requiere menor número de bits que la de una posición de memoria
• El acceso a los registros es más rápido que a Memoria
• El direccionamiento directo a memoria se conoce como absoluto
• A veces se limita el número de bits de OPER limitando el acceso a sólo una parte de la memoria que
suele ser la correspondiente a las direcciones más bajas (página cero)
Indirecto (memoria)
OPER = Dirección de memoria
DE = <OPER>
DO = <<OPER>>
Memoria
CO OPER
DE
DO
CO dirección
2n-p direcciones
p bits n-p bits
dirección 2n direcciones
n-bits
Indirecto (registro)
OPER = Dirección de un registro
DE = <OPER>
DO = <<OPER>>
Registros Memoria
CO OPER
DE
DO
en la instrucción (OPER) que se interpreta como un desplazamiento respecto al contenido del registro.
La distinta naturaleza del registro hace que se diferencien tres modos con desplazamiento. Todos
explotan la proximidad de los datos o instrucciones referenciadas para utilizar menor número de bits en
el campo OPER.
+ DO
Registro Base
Ejemplo: A = B + C
Programa
Memoria
Registros de datos
RB A
B RD1
C RD2
Este programa podremos reubicarlo en memoria y siempre llevará a la dirección apuntada por el
registro base RB la suma de los contenidos de las dos direcciones siguientes.
Direccionamiento relativo
DE = <Contador de programa> + OPER; OPER = desplazamiento
• Se utiliza en las instrucciones de salto para conseguir la reubicación de estas instrucciones
• El desplazamiento en estas instrucciones tiene signo (c2) lo que significa que el salto relativo se
puede dar hacia posiciones anteriores o siguientes a la ocupada por la instrucción.
Memoria
CO OPER
+ DO
Contador de Programa
9
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Direccionamiento indexado
DE = <Registro índice> + OPER; OPER = desplazamiento
• Se utiliza para recorrer estructuras lineales como los arrays
• Par facilitar su uso se suele complementar con el pre o post incremento o decremento del registro
índice
Memoria
CO OPER
+ DO
Registro Indice
Relativo
registro operando
+
dirección dirección
Modos compuestos
Veremos los modos compuestos analizando el repertorio de algunos procesadores.
• Inmediato
DO = OPER
- enteros: 8, 16 y 32 bits
- reales: 32 bits (simple precisión), 64 bits (doble precisión) y 96 bits (precisión extendida)
• Directo
- Memoria o absoluto
DE = OPER, DO = <DE>, con OPER de 16 y 32 bits
10
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
- Registro
Ri = OPER, DO = <Ri>, con Ri cualquier registro
• Indirecto registro
- puro
DE = <Ri>, con Ri cualquier registro
Memoria
CO OPER
Ri
DO
DE
Ri
+ Inc
DO
DE
Ri
- Dec
DO
DE
+ DO
DE
Ri
11
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Memoria
Escala CO Despla
x + DO
DE
Rj Ri
• Indirecto memoria
- Postindexado (= base + desplazamiento indirecto indexado + desplazamiento)
DE = <<Ri> + despla1> + <Rj>xEscala + Despla2
CO Despla1 Despla2
Memoria
+ DIR
Ri DE
DO
Rj
x
+
Escala
12
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
CO Despla1 Despla2
+
Memoria
Ri + DIR +
DE
Rj
DO
Escala
• Relativo
- Básico
DE = <CP> + Despla
Memoria
CO Despla
+ DO
DE
CP
Memoria
Escala CO Despla
x + DO
DE
Rj CP
13
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
CO Despla1 Despla2
Memoria
+ DIR
CP DE
DO
Rj
x
+
Escala
CO Despla1 Despla2
+
Memoria
CP + DIR +
DE
Rj
DO
Escala
CO A
B I A
X Escala
(1,2,4,8) Memoria
+
Registro de segmento DE
LA
SR
+
segmento
(6 registros SR)
Paginación
• Inmediato
DO = A (1,2,4 bytes)
• Registro
LA = R, DO = <R> (LA = dirección lineal)
• Desplazamiento
LA = <SR> + A
• Base
LA = <SR> + <B>
• Base + desplazamiento
LA = <SR> + <B> + A
• Indexado
LA = <SR> + <I>xEscala + A
• Relativo
LA = <PC> + A
15
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Visibilidad en C
Un programa escrito en C no es más que una colección de subprogramas (funciones) en
idéntico nivel, dentro del programa principal (Main). Estas funciones pueden llamarse entre sí, incluso
de forma recursiva. Las variables locales definidas en una función son visibles sólo dentro de la función.
En cambio las variables globales se definen fuera de la funciones (en la función Main) y pueden ser
referenciadas desde cualquiera de ellas.
Las variables locales de una función se asignan dinámicamente Estudiaremos ahora los
modos de direccionamiento más adecuados para satisfacer los requerimientos de los lenguajes de alto nivel.
Estos modos reducirán al mínimo el número de instrucciones requeridas para acceder a los elementos de las
diferentes estructuras de datos (array, record, etc.) que soportan estos lenguajes, es decir, para calcular sus
direcciones efectivas. Estos lenguajes presentan una estructura de bloques e incorporan el concepto de
visibilidad de las variables del programa, es decir, las reglas de acceso a las variables de cada uno de los
bloques.
, es decir, cada vez que se activa la función. La asignación tiene lugar dentro de un registro de
activación (RA) que se ubica en la pila asociada al programa. Dada la naturaleza recursiva de las
llamadas, pueden existir en la pila más de un RA para la misma función (tantos como llamadas).
Supongamos el siguiente perfil de progrma C:
main
fa fb fc fd fe
16
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
RA main
RA fe PRAG
Puntero al Registro de Activación Global
RA fc
(1ª llamada)
RA fc
(2ª llamada)
Registros de Activación
RA fb
visibles desde la última
(1ª llamada)
llamada a fc
RA fb
(2ª llamada)
RA fc
(3ª llamada)
PRAL
Crecimiento de la PILA Puntero al Registro de Activación Local
Visibilidad en Pascal
En los lenguajes de tipo Pascal un bloque puede ser un procedure o una function, y el concepto
de visibilidad adquiere una estructura anidada. Los bloques de un programa de este tipo presentan una
estructura jerárquica y la visibilidad de variables desde la llamada a un bloque se extiende a todos los
bloques (últimas llamadas) en el camino hasta la raíz (main)
17
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
RA main
RA Ba PRAG
RA Bb
(1ª llamada)
RA Bb
(2ª llamada)
Registros de Activación
RA Bf
visibles desde la última
llamada al bloque Bh
RA Be Display del RA Bh
RA Bh
(1ª llamada)
RA Bh PRAL
(2ª llamada)
RA main
Despla
PRA G
Variable g lobal
RA
(procedimiento Despla
en ejecución)
PRA L
Variable local
18
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
main
Ba Bl
Bb Bc
Bd
RA main
RA Ba PRAG
(1ª llamada)
RA Ba Despla 2
(2ª llamada)
RA Bb
Despla 1
RA Bd display PRAL
19
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Var. referenciada
RA proc. Ejec.
Despla
DE = <<PRAL> + Despla> Î
Var. referenciada
RA proc. refer.
Despla 2
Referencia a var.
display
PRAL
RA proc. Ejec.
20
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Factor_escala (=1,2,4,8)
RA proc. Ejec.
Despla
1º elemento
Indexación
array X RX
n-simo elemento
PRAL
Factor_escala (=1,2,4,8)
RA proc. referen.
Despla 2
1º elemento
Indexación
array X RX
n-simo elemento
Despla 1 display
Inicio RA referenc.
RA proc. Ejec.
PRAL
21
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
1º elemento
Indexación
array X RX
n-simo elemento
RA proc. Ejec.
Despla
Puntero local
PRAL
RA proc. ejec.
Despla 1
1º campo
Despla 2
record
n-simo campo
PRAL
22
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
RR: record
RA proc. ejec. x: real
Despla 1 R: record
y: boolean
1º campo de RR(x) Despla 2 z: integer
.
1º campo de R (y)
Despla 3 .
record RR .
2º campo de R (z)
end R
PRAL .
.
.
end RR
acceso al campo z de R
Despla 2
record
campo accedido
RA proc. ejec.
Despla 1
puntero local
PRAL
23
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Consideremos un computador con una memoria de 4K palabras de 12 bits, un registro acumulador y dos bits
de condición (Z y N)
11
0 11
000 0 ACUMULADOR
(AC)
M E M OR IA R egistro d e estad o
1 0
NZ
FFF
Todas las instrucciones tienen longitud fija de 12 bits y están compuestas por un código de
operación (CO) situado en los 4 bits más significativos (del 8 al 11) y una dirección/operando
situada en los 8 bits menos significativos (del 0 al 7). Los 8 bits de la dirección/operando tienen el
significado de dirección en las instrucciones de salto y referencia a memoria, y significado de dato
en las instrucciones de operando inmediato.
11 8 7 0
CO DIR ECCION /OPE RAN DO
La máquina dispone de once instrucciones, tres de carga y almacenamiento (LDA, STA, LDAI),
tres aritmetico-lógicas (SUM, SUMI, NOR), cuatro de salto condicional (JZ, JNZ, JN, JNN) y una
instrucción de parada (HALT). En la siguiente tabla se muestran el código simbólico, el tipo de
direccionamiento, el código binario (CO) y la semántica de cada una de las instrucciones. El
símbolo <-- significa transferencia de la información a su derecha hacia el elemento a su izquierda;
MEMORIA(DIRECCION) expresa el contenido de la posición de MEMORIA apuntada por
DIRECCION; los paréntesis angulares expresan contenido y el símbolo & concatenación.
24
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Programa
Inicializa 10 posiciones de memoria (de la 20 a la 29) con un contenido igual a su dirección.
Dirección Simbólico Binario comentario
0 LDA 4 0001 00000100 AC <-- (STA -----)
1 SUMI 1 0101 00000001 AC <-- (STA -----) + 1
2 STA 4 0010 00000100 MEMORIA(4) <-- (STA ------ + 1)
3 LDA 14 0001 00001110 AC <-- índice
4 STA ---- 0010 00010011 MEMORIA(índice) <-- índice
5 SUMI 1 0101 00000001 AC <-- índice + 1
6 STA índice 0010 00001110 índice <-- índice + 1
7 LDA 30 0001 00001101 AC <-- límite
8 NOR 30 0110 00001101 AC <-- complemento1(límite)
9 SUMI 1 0101 00000001 AC <-- complemento2(límite)
10 SUM índice 0011 00001110 AC <-- índice - límite
11 JNZ 0 1000 00000000 Vuelve a dirección 0 si resultado ≠ 0
12 HALT 0000 00000000 Parada
13 30 000000011110 límite
14 20 000000010100 índice
Para referenciar posiciones de memoria consecutivas (indexación) hemos utilizado un artificio poco
recomendable en programación: modificar instrucciones en tiempo de ejecución, concretamente, sumando un
1 a la instrucción STA índice (inicialmente en binario 001000010011) de la posición 4. De esa forma, cada
vez que se recorra el cuerpo del ciclo que constituye el programa, la instrucción STA índice referenciará la
posición de memoria siguiente a la que referenció en el recorrido anterior. El ciclo finalizará cuando el índice
iguale el límite. Para detectarlo se realiza la resta índice -limite (complementando a dos límite, es decir,
complementando a 1 y sumando 1, y sumando el resultado a índice) y se bifurca sobre Z.
0 LDA 14
1 SUMI 1
2 STA 14
4 STA (ind) 14
25
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Números naturales
Representación binaria
N ≡ ( x n−1 , x n− 2 ,..., x1 , x 0 )
n−1
V(N) = ∑ 2 . xi
i
i= 0
Codifica en binario puro con 4 bits cada uno de los dígitos decimales
Ejemplo 2 5 5 ---> BCD = 0010 0101 0101 en cambio en binario sería:
2 5 5 ---> binario = 1111 1111
BCD desempaquetado
BCD empaquetado
1
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Números enteros
Signo y magnitud
N ≡ ( x n−1 , x n− 2 ,..., x1 , x 0 )
n−2
V ( N ) = ∑ 2 i xi si Xn-1 = 0
i =0
n−2
V ( N ) = − ∑ 2 i xi si Xn-1 = 1
i =0
n−2
V ( N ) = (1 − 2 xn−1 ) ∑ 2i xi
i =0
Complemento a dos
1 0000 0000 = 28
- 0011 0010 = 50 (magnitud de -50)
0 1100 1110 = - 50 en c2
-128 64 32 16 8 4 2 1
1 0 0 0 1 0 0 0
-128 +8 = -120
2
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
0 bien pesando sólo las posiciones con cero (cuando el número es negativo) y sumando 1:
64 + 32 + 16 + 4 + 2 + 1 + 1 = 120
0 1 0 0 0 0 0 1 = 65
c1 = 1 0 1 1 1 1 1 0
+ 1
1 0 1 1 1 1 1 1 = -65
Complemento a uno
n −2
V ( N ) = − xn−1 • (2 n−1 + 1) + ∑ 2i xi
i =0
• rango de representación = [- 2n-1 - 1, 2n-1 - 1]
• resolución = 1
• dificultades
doble representación del cero
la resta es más compleja que en c2
3
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Números reales
Utilizando una notación exponencial, un número real R queda determinado por dos valores, un exponente
(e) y una mantisa (m) tal que el valor de R venga dado por la expresión:
e
V(R) = B • m
La representación en coma flotante utiliza esta definición y establece un formato para la mantisa y para el
exponente.
Exponente
Utiliza una representación sesgada o codificación en exceso con un sesgo = 2k-1-1; siendo k el número
de bits reservados para el campo del exponente. Es decir, en lugar de representar directamente
e, utilizamos su codificación E exceso 127, siendo E = e + 127.
Para k = 8 bits se codifica el exponente (con signo) con valores que van de –127 a +128 utilizando el
código exceso 28-1-1 = 127. Los correspondientes valores codificados van en decimal de 0 (todos
los bits a 0) a 255 (todos los bits a 1). La tabla siguiente muestra el rango de valores del
exponente y su codificación en exceso 127:
Una propiedad importante de la codificación sesgada es que se mantiene el orden natural de los vectores
binarios en relación con su magnitud: el más grande es el 1111 1111 y el más pequeño 0000 0000, cosa
que no ocurre en la representación en signo y magnitud, c1 o c2. Esta propiedad es importante a la hora de
comparar números en coma flotante.
4
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Mantisa
La mantisa m se representa en coma fija normalizada (signo y magnitud), es decir, haciendo que el primer
dígito decimal valga 1, y ajustando convenientemente el exponente:
Base
Se suele utilizar la base 2. (la arquitectura IBM S/390 utiliza base 16)
31 30 23 22 0
s E M
signo Exponente Mantisa
Por ejemplo:
0111 1111 = 127
+ 1 0100
1001 0011
0,8164062 x 2 20 = 856063,95
- 0,8164062 x 2 20 = - 856063,95
0,8164062 x 2 -20 = 0,000000778585
- 0,8164062 x 2 -20 = - 0,000000778585
Los rangos de números que pueden representarse en coma flotante con 32 bits y el formato descrito
aparecen en la siguiente gráfica:
5
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
desbordamiento desbordamiento
a cero negativo a cero positivo
recta real
-24 128 -127 0 -127 -24 128
- (1 - 2 ) x 2 - 0,5 x 2 0,5 x 2 (1 - 2 ) x 2
En esta gráfica se aprecia la existencia de 5 regiones excluidas de dichos rangos:
• La anterior representación no contempla un valor para el cero. Sin embargo, en la practica se destina
una configuración de bits especial, como veremos en el estándar del IEEE.
• Aparecen dos tipos de desbordamientos, el desbordamiento propiamente dicho que ocurre cuando una
215
operación aritmética da lugar a un número cuyo exponente es mayor que 128 (ejemplo 2 ), y el
desbordamiento a cero que ocurre cuando una magnitud fraccionaria es demasiado pequeña (ejemplo
2-215)
• Los números representados no están espaciados regularmente a lo largo de la recta real. Están más
próximos cerca del origen y más separados a medida que nos alejamos de él.
• Tenemos que elegir el compromiso entre rango de representación y precisión de la misma repartiendo
convenientemente los bits entre mantisa y exponente. Si aumentamos los bits del exponente
aumentamos el rango pero disminuimos la densidad de números representados en dicho rango, ya que
la cantidad total de valores representables lo determina el número total de bits (32).
Hay que notar que con la representación en coma flotante no se representan más valores individuales. Con
32
32 bits sólo podemos representar 2 valores diferentes. La coma flotante distribuye estos valores entre
dos intervalos, uno positivo y otro negativo.
formato simple
31 30 23 22 0
s E f
signo Exponente Mantisa
6
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
formato doble
63 62 52 51 0
s E f
signo Exponente Mantisa
En el formato simple, los valores de exponente de 1 a 254 representan números en coma flotante
normalizados distintos de cero, con exponente sesgado en un rango de -127 a +127 y
mantisa con un 1 implícito a la izquierda del punto decimal, lo que significan 24 bits efectivos.
Ejemplo:
RIEEE = 1 10000001 01000000000000000000000
↓ ↓ ↓
- e = 129 - 127 = 2 f = 0.01(2 = 0.25(10 => 1.f = 1.25(10 => R(10 = -1.25 • 2 2 = - 5
En este estándar no todos los patrones de bits se interpretan como valores numéricos, algunas se utilizan
para representar valores especiales:
1) Un exponente cero con una fracción cero representa al +0 ó -0, dependiendo del bit de signo.
2) Un exponente todo unos con una parte fraccionaria cero representa al +∞ o al -∞, dependiendo del bit
de signo.
3) Un exponente de todo unos con una fracción distinta de cero se conoce como NaN (Not a Number) y
se emplea para indicar varias condiciones de excepción.
4) Un exponente cero con una parte fraccionaria distinta de cero representa un número denormalizado.
En este caso el bit a la izquierda de la coma es cero y el exponente original -126.
En la siguiente tabla resumimos la interpretación de los números en coma flotante y simple precisión:
Infinito
n + (+ ∞) = + ∞ n ÷ (+∞) = +0
n - (+ ∞) = - ∞ (+ ∞)+ (+ ∞) = + ∞
n + (- ∞) = - ∞ (- ∞)+ (- ∞) = - ∞
n - (- ∞) = + ∞ (- ∞)- (+ ∞) = - ∞
n x (+ ∞) = + ∞ (+ ∞)- (- ∞) = + ∞
7
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Operación
(+ ∞)+ (- ∞)
(- ∞)+ (+ ∞)
Suma o resta (+ ∞)- (+ ∞)
(- ∞)- (- ∞)
Multiplicación 0 x ∞
División 0/0
∞/∞
x RE 0
Resto
∞ RE y
Raíz cuadrada x con x < 0
Números denormalizados
Se incluyen para reducir las situaciones de desbordamiento hacia cero de exponentes. Cuando el exponente
del resultado es demasiado pequeño se denormaliza desplazando a la derecha la parte fraccionaria e
incrementando el exponente hasta que el exponente esté dentro de un rango representable.
Caracteres
Como se puede observar en ambos casos la representación es compatible con la BCD empaquetada de 4
bits. Además, el valor binario (sin signo) de ambos códigos mantiene el orden de los símbolos
correspondientes a los dígitos decimales y caracteres, lo que facilita la ordenación de información
simbólica en los programas.
Compresión de datos
La representación de datos comprimidos ha ido adquiriendo cada vez más importancia debido a la
utilización de mayores cantidades de información, sobre todo en las aplicaciones multimedia.
Comprimiendo datos se optimiza tanto la memoria utilizada para su almacenamiento como el tiempo de
transmisión por las redes. Uno de los métodos de compresión más conocido es el llamado de Lempel-Ziv
(LZ), que aprovecha de forma bastante simple las repeticiones de ciertos patrones de bits que aparecen en
una cadena. Se aplica a cualquier tipo de información representada por una cadena de bits y se realiza en
los siguientes pasos:
1) Se descompone la cadena de modo que no se repita el mismo patrón de bits. Para ello:
8
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
1-0-11-00-10-100-110-1001-000
3) Se sustituye cada fragmento por el par (número de prefijo, bit adicional). El 0 indicará el
prefijo vacío. En nuestro ejemplo:
(0,1)-(0,0)-(1,1)-(2,0)-(1,0)-(5,0)-(3,0)-(6,1)-(4,0)
(000,1)-(000,0)-(001,1)-(010,0)-(001,0)-(101,0)-(011,0)-(110,1)-(100,0)
000100000011010000101010011011011000
1) 0001-0000-0011-0100-0010-1010-0110-1101-1000
2) (000,1)-(000,0)-(001,1)-(010,0)-(001,0)-(101,0)-(011,0)-(110,1)-(100,0)
3) (0,1)-(0,0)-(1,1)-(2,0)-(1,0)-(5,0)-(3,0)-(6,1)-(4,0)
1 2 3 4 .......
4) 1-0-11-00 .......
En el ejemplo anterior la cadena resultante es más larga que la original, en contra del propósito del
método. La causa es la poca eficiencia del método para cadenas muy cortas. Cuando se aplica a una cadena
muy larga, los fragmentos crecen en longitud más rápidamente que las subcadenas de bits necesarias para
su codificación. Por ejemplo, supongamos que una cadena de 100.000 bits se ha dividido en 1.000
fragmentos con un tamaño medio de 100 bits (los primeros serán probablemente más cortos y los últimos
más largos). Para codificar el prefijo solo se necesitan 10 bits (210 = 1024). Por tanto cada fragmento estará
codificado por 11 bits (los 10 del prefijo más el bit adicional), mientras que su longitud original era de 100
bits. Es decir, el método lograría comprimir el fichero de datos a un 10% de su tamaño original.
9
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
100.000 bit s
100 bit s
1.000 fr a gm en t os
Está claro que cuanto más largos sean los fragmentos, más eficaz será el método. Esto ocurre si la
cadena tiene muchas repeticiones. El caso extremo es una cadena con todo ceros. En este caso la
fragmentación es muy simple:
0-00-000-0000-00000-000000-0000000-...
Para 1MB, que son 8.388.608 bits, tendríamos 4.096 fragmentos y necesitaríamos sólo 12 bits
para describir el prefijo. Por tanto, necesitaríamos 13 bits para describir cada fragmento o 53.248 bits para
10
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
describir el fichero entero. El fichero habría quedado reducido a 6,65 KB, es decir, al 0,63 % de su tamaño
original.
El caso opuesto es una cadena de bits cuya fragmentación contenga todas las subcadenas posibles.
Por ejemplo, hay 128 subcadenas de 8 bits. Si la fragmentación resultara en una concatenación de todas
ellas, se necesitarían 8 bits para describir el prefijo y 9 para describir el fragmento, mientras que la longitud
original de los fragmentos es de 8 bits. El método resultaría perfectamente inútil en este caso.
El método LZ es más eficaz cuanto más regular sea la cadena, es decir, cuantas más repeticiones
contenga. Esta característica está de acuerdo con el teorema de Shannon, que afirma que cuanto más
regular y menos aleatoria sea una cadena (menor sea su entropía), mayor será su grado de compresión.
Shannon demostró que para una cadena de n bit aleatorios y completamente independientes unos de otros
la entropía vale:
Como el programa WinZip de Windows utilizan alguna variante de este método, se puede
comprobar empíricamente la fórmula de Shannon creando ficheros de cadenas de bits aleatorios con
diferentes probabilidades p = 0,01; 0,1; 0,2, etc. y comprimiendo los ficheros con WinZip. Después se
podrá observar que los tamaños comprimidos están en la misma relación que los previstos en la fórmula de
Shannon.
11
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
General: byte, palabra, doble palabra y cuádruple palabra con contenido binario arbitrario.
Entero: valor binario con signo en c2 de una palabra, una doble palabra, o una cuádruple palabra.
Ordinal: entero sin signo de un byte, una palabra o una doble palabra.
BCD desempaquetado: un dígito BCD en cada byte
BCD empaquetado: dos dígitos BCD en un byte.
Campo de bits: secuencia contigua de bits independientes no alineada de hasta 232 - 1 bits.
Cadena de bytes: Secuencia contigua de bytes, palabras, o dobles palabras de hasta 232 - 1 bytes.
Coma flotante:
• IEEE 754 de simple precisión (32 bits)
• IEEE 754 de doble precisión (64 bits)
• IEEE 754 de precisión ampliada(78 bits)
En otro apartado estudiaremos las nuevas instrucciones paralelas que operan simultáneamente sobre un
conjunto de datos del mismo tipo, conocidas como SIMD (Single Instructions Multiple Data) e
introducidas por primera vez en el Pentium para acelerar las operaciones enteras de las aplicaciones
multimedia (MMX), y ampliadas en el Pentium III a las operaciones paralelas de coma flotante (SSE:
Streaming SIMD Extension), muy frecuentes en las aplicaciones visuales.
REG --> REG: transferencia MEM --> REG: carga (load) PILA --> REG: extracción (pop)
REG -->MEM: almacenamiento (store) MEM --> MEM: movimiento(move) PILA --> MEM: extracción (pop)
REG --> PILA: inserción (push) MEM --> PILA: inserción (push)
- Una instrucción diferente para cada tipo de movimiento. Ejemplos TR, STO, LD, PUSH, POP
• Direcciones de la fuente y destino de la transferencia. Son los operandos de la instrucción con sus
correspondientes tipos de direccionamiento
• Tipo y tamaño del dato transferido: byte, media palabra, una palabra, doble palabra, etc. Ejemplo MC
68.X
b
W 12
LW
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Ejemplo VAX-11
MOVEC Long. Fuente Dirección Fuente Relleno Long. Destino Dirección Destino
Memoria
Memoria
Relleno
Desplazamientos aritméticos
S S 0
Desplazamientos lógicos
13
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
0 0
Rotaciones
rotación izquierda
rotación derecha
Con la AND podemos realizar funciones de máscara cuando queramos seleccionar un conjunto
determinado de bits, y con la XOR podemos complementar bit a bit un segmento de bits. En el siguiente
ejemplo hemos creado una máscara sobre los 4 bits menos significativos de R1 haciendo la AND con R2, y
hemos complementado los 6 bits centrales de R1 haciendo la XOR con R3:
Suma
Resta
Multiplicación
División
Cambio de signo
Valor absoluto
Incremento
Decremento
Comparación
14
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Por ejemplo cambio de BCD a binario o cambio de formato EBCDIC a formato ASCII como realiza la
instrucción Translate (TR) del S/370.
Los procesadores con espacio de E/S independiente disponen de instrucciones específicas tales
como:
15
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Desplazamiento y rotación
SHL Desplazamiento lógico a la izquierda
SHR Desplazamiento lógico a la derecha
SAL Desplazamiento aritmético a la izquierda
SAR Desplazamiento aritmético a la derecha
ROL Rotación izquierda
ROR Rotación derecha
Transformación de datos
XLAT Traduce con la ayuda de una tabla
Entrada/Salida
IN Entrada de dato desde un dispositivo de E/S
OUT Salida de dato hacia un dispositivo de E/S
Manipulación de direcciones
LEA Carga el desplazamiento del operando fuente (no su valor) en el destino
Tipos de datos
Los diferentes medios de una aplicación multimedia suelen utilizar el siguiente número de bits para
codificar sus informaciones básicas:
Gráficos y vídeos: utilizan 8 bits para cada punto (escala de grises) o componente de color.
Audio: utiliza 16 bits para cada valor muestreado de la señal.
Gráficos 3D: pueden utilizar hasta 32 bits por punto.
16
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Para poder realizar el procesamiento paralelo de estas informaciones básicas, MMX define los tres
tipos de datos siguientes:
8 bytes empaquetados
1 byte 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte B
4 palabras empaquetadas
1 cuádruple palabra Q
Registros MMX
Existen 8 registros de propósito general MMX que se designan como mmi (i = 0,...7). Estos
registros no tienen una realidad independiente dentro de la organización del procesador, se soportan
sobre los 64 bits menos significativos de los registros de punto flotante de 80 bits. El campo de
exponente del correspondiente registro de punto flotante (bits 64-78) y el bit de signo (bit 79) se pone
a 1’s, convirtiendo el contenido en un valor NaN desde el punto de vista de los valores en punto
flotante. De esta forma se reduce la posible confusión, asegurando que los valores de datos MMX no
se tomen como valores en punto flotante. Las instrucciones MMX acceden sólo a los 64 bits menos
significativos de los registros. Este uso dual de los registros de punto flotante no significa que se
pueda mezclar en las aplicaciones ambos usos de forma indiscriminada. Dentro de una aplicación el
programador deberá asegurar que el código MMX y el código en punto flotante estén encapsulados
en rutinas separadas.
17
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Ejemplo: instrucción de suma paralela con truncamiento de dos registros MMX con 8 bytes
empaquetados
+ + + + + + + +
0101 0101 0101 0101 0101 0101 0101 0101
mmj
Instrucciones Aritméticas
Este grupo lo forman 9 instrucciones, 3 de suma, 3 de resta y 3 de multiplicación. En ellas se
distingue entre la aritmética con saturación y con truncamiento. En la aritmética binaria con
truncamiento el resultado de una operación con desbordamiento queda truncado por la pérdida del bit
de desbordamiento. Por el contrario, en la aritmética con saturación, cuando la suma produce un
desbordamiento, o la resta un desbordamiento negativo, el resultado se fija respectivamente al mayor
o menor valor representable.
Ejemplo:
1111 0000 0000 0000
+ 0011 0000 0000 0000
rebose --> 1 0010 0000 0000 0000 resultado en aritmética con truncamiento
La aritmética con saturación se utiliza, por ejemplo, cuando se suman dos números que
representan intensidad de imagen (nivel de negro., por ejemplo, o de un color base) y no se quiere
que el resultado sea menos negro (menos intenso en el caso de color base) que la suma de las
imágenes originales. Las instrucciones de este grupo son las siguientes:
18
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Instrucciones de Comparación
La tecnología MMX dispone de instrucciones paralelas de comparación que generan una máscara de bits
como resultado. Estas instrucciones posibilitan la realización de cálculos dependientes de los resultados
anteriores eliminando la necesidad de instrucciones de bifurcación condicional. La máscara resultado de
una comparación tiene todo 1’s en los elementos correspondientes a una comparación con resultado true, y
todo 0’s cuando el resultado de la comparación es false:
a3 a2 a1 a0 SI a3 = b3
a2 ≠ b2
= = = = a1 = b1
b3 b2 b1 b0 a0 ≠ b0
ENTONCES
11...11 00...00 11...11 00...00
Instrucciones de Conversión
La tecnología MMX utiliza dos conjuntos de instrucciones para realizar conversiones entre los tipos de
datos MMX (PACK y UNPACK). Las instrucciones UNPACK toman un tipo de datos pequeño y producen
uno mayor (por ejemplo, uno de 16 bits en otro de 32 bits). Las instrucciones UNPACK toman dos
operandos y los entrelazan, como ocurre en el siguiente ejemplo para datos con componentes de 16 bits:
mmi mmj
b3 b2 b1 b0 a3 a2 a1 a0
mmi
b1 a1 b0 a0
mmi mmj
0 0 0 0 a3 a2 a1 a0
mmi
0 a1 0 a0
19
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Instrucciones Lógicas
El repertorio MMX dispone de 4 operaciones lógicas que realizan otras tantas operaciones bit a bit de este
tipo sobre los 64 bits de los operandos. Combinadas con las máscaras resultantes de las instrucciones de
comparación permiten la realización de cálculos alternativos en función de resultados anteriores. Las
instrucciones de este grupo son las siguientes:
Instrucciones de Desplazamiento
Este grupo lo constituyen operaciones de desplazamiento y rotación lógicos y aritméticos realizados en
paralelo sobre cada uno de los elementos de datos de uno de sus operandos. El otro indica el número de
bits de desplazamiento o rotación. Las instrucciones de este grupo son las siguientes:
Instrucciones de Transferencia
La única instrucción de este grupo permite la transferencia de información entre registros
MMX, la carga de registros MMX desde memoria, y el almacenamiento de los contenidos de los
registros MMX en memoria:
for i = 0 to 3
if a[i] = color then
Salida[i] = c[i] else
Salida[i] = a[i]
20
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Fase 1 a3 a2 a1 a0 mm0 A
= = = =
color color color color mm1 Color
a3 a2 a1 a0 mm2 c3 c2 c1 c0 mm4 C
00...00 11...11 00...00 11...11 mm0 11...11 00...00 11...11 00...00 mm0
0 a2 0 a0 mm0 c3 0 c1 0 mm4
OR
c3 a2 c1 a0 mm0
T
⎡a3 a 2 a1 a 0 ⎤ ⎡d 3 c3 b3 a3 ⎤
⎢b b b b ⎥ ⎢ ⎥
⎢ 3 2 1 0 ⎥ = ⎢d 2 c 2 b2 a 2 ⎥
⎢c3 c 2 c1c0 ⎥ ⎢d1c1b1 a1 ⎥
⎢ ⎥ ⎢ ⎥
⎣d 3 d 2 d1 d 0 ⎦ ⎣d 0 c0 b0 a 0 ⎦
El proceso se realiza en dos pasos y supondremos que los elementos de la matriz son palabras de
16 bits. En la fase 1 se utiliza la instrucción UNPACK para entrelazar los elementos de filas
adyacentes; y en la fase 2 se desempaquetan los resultados de la primera fase utilizando esta vez
instrucciones UNPACK de doble palabra (32 bits) para producir la salida deseada. El proceso se
resume en la siguiente figura:
21
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
mm3 mm1
d1 c1 d0 c0 b1 a1 b0 a0
mm1 mm5
d0 c0 b0 a0 d1 c1 b1 a1
Ejemplo 3:
Función de desvanecimiento gradual de una imagen B y aparición simultanea de otra imagen A
Las dos imágenes A y B se combinan en un proceso que efectúa sobre cada par de pixels homólogos
la media ponderada por un factor de desvanecimiento fade que irá variando de 0 a 1, y su
complementario (1-fade), que lo hará de 1 a 0
El resultado es una transformación gradual de la imagen B en la imagen A a medida que fade pasa
de 0 a 1. Cada pixel ocupa 1 byte y hay que desempaquetarlo previamente a un valore de 16 bits
para adaptarlo al tamaño de las multiplicaciones MMX de 16 bits.
Si una imagen tiene una resolución de 640 X 480 y en el cambio de imagen se emplean 255 valores
posibles para fade (fade codificado con 1 byte), será necesario ejecutar el proceso 640*480*255 =
7.833.600 veces. Eso para el caso de imágenes en blanco y negro, si fuesen en color necesitaríamos
esa cantidad multiplicada por 3 (tres componentes básicas del color), es decir 23.500.800. Para
secuenciar las operaciones pongamos la expresión anterior de la intensidad del pixel resultante de la
siguiente forma:
22
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Luego hay que restar al Pixel_A el valor del Pixel_B, multiplicar el resultado por fade y sumar
finalmente el valor del Pixel_B. A estas operaciones hay que añadir las previas de movimiento de
datos y desempaquetamiento. En la siguiente figura aparece el esquema del proceso:
Imagen_A Imagen_B
a3 a2 a1 a0 mm0 mm1 b3 b2 b1 b0
Desempaquetar
mm0 a3 a2 a1 a0 b3 b2 b1 b0 mm1
Resta
r3 r2 r1 r0 mm0
x x x x
+ + + +
b3 b2 b1 b0 mm1
= = = =
nuevo3 nuevo2 nuevo1 nuevo0 mm0
empaqueta
r3 r2 r1 r0 mm0
23
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Este grupo de instrucciones juega un triple papel en las posibilidades expresivas y computacionales del
repertorio:
Reutilización de parte del código del programa. Los procesos iterativos son el caso más elemental
de reutilización de código, que se construyen con instrucciones de bifurcación condicional. El
segundo caso es el de las subrutinas, con ellas se construyen los bloques (funciones y
procedimientos) de los lenguajes de alto nivel.
Descomposición funcional del programa. Se trata del segundo papel que cumplen las subrutinas
dentro de un programa: facilitar la modularidad del mismo, y con ello su depuración y
mantenibilidad.
CO Condición Dirección
Semántica:
IF Condición = True THEN
CP <-- Dirección
ELSE
CP <-- <CP> + 1
Gestión de la Condición
• Generación
• Selección
simples compuestas
nemotécnico Condición nemotécnico Condición
CC (carry clear) ¬C HI (high) ¬C • ¬Z
CS (carry set) C LS (low or same) C+ Z
NE (not equal) ¬Z HS (high or same) ¬C
EQ (equal) Z LO (low) C
VC (overflow clear) ¬V GE (greater or equal) N xor ¬V
VS (overflow set) V LT (less than) N xor V
PL (plus) ¬N GT (greater than) (N xor ¬V)and¬Z
MI (minus) N LE (less or equal) (N xor V)orZ
24
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
• Uso
a) Con almacenamiento de la condición en un registro de estado o condición: una 1ª
instrucción de gestión de datos o comparación genera la condición que se
almacena en un registro de estado de la máquina, y una 2ª instrucción
selecciona la condición y bifurca en caso que sea cierta (True)
b) Con almacenamiento de la condición en un registro general: una 1ª instrucción de
gestión de datos o comparación genera la condición que se almacena en un
registro general de la máquina que debe especificarse en la misma, y una 2ª
instrucción selecciona la condición y bifurca en caso que sea cierta (True)
Especificación de la dirección
• direccionamiento directo (Jump)
• direccionamiento relativo (Branch)
• direccionamiento implícito (Skip: salta una instrucción si se cumple la condición))
3.2 Subrutinas
Supongamos que en diferentes puntos de un programa se realiza la operación de elevar al cuadrado
un número. El código simbólico (MC68000) de la operación sería el siguiente:
MOVE.W N, D0
MULS D0, D0
MOVE,W D0, N
El programador tiene dos opciones para repetir el código en los puntos donde aparezca la operación:
las macros y las subrutinas.
a) Una MACRO o subrutina abierta es una llamada que se realiza en aquellos puntos donde aparece
la operación y que el ensamblador sustituye por el código correspondiente en un proceso
denominado de expansión de macros.
2
N1
MOVE .W N1, D0
MULS D0, D0
MOVE .W D0, N1
2
N2
MOVE .W N2, D0
MULS D0, D0
MOVE .W D0, N2
25
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
b) Una SUBRUTINA o subrutina cerrada por el contrario no repite el código en cada llamada, bifurca
a un único código que una vez ejecutado devuelve control a la instrucción siguiente a la que realizó la
bifurcación:
N12
MOVE .W N, D0
MU LS D0, D0
MOVE .W D0, N
N22
Analizaremos las diferentes alternativas de resolución de estos problemas resaltando las ventajas e
inconvenientes de cada una.
1) Utilización de un registro
Se trata de una alternativa fácil de implementar y rápida en su ejecución, sin embargo, impide el
anidamiento y la recursión.
Sub
Salto Sub
dir Retorno
dir Registro
Pi i l
dir PC
Aunque en el 68000 no es necesario utilizar esta alternativa, su codificación podría ser la siguiente:
26
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
cuadrado MOVE.W N, D0
MULS D0, D0
MOVE.W D0, N
JMP (A0)
.......
MOVE.W N1, N
LEA.L siguiente1, A0
JMP cuadrado
siguiente1 ......
MOVE.W N2, N
LEA.L siguiente2, A0
JMP cuadrado
siguiente2 .
.
2) Utilización de una posición de memoria de la subrutina
Esta alternativa exige que antes de bifurcar a la subrutina se ponga la dirección de vuelta en una
posición de memoria perteneciente a la subrutina (por ejemplo, la primera). El retorno se realiza con un
salto incondicional e indirecto sobre esta posición.
dir dir1
Sub1
Salto Sub1 Sub2
dir
Salto Sub2
dir1
Retorno Retorno
Esta alternativa permite un número ilimitado de llamadas anidadas, pero no permite la recursión.
vuelta ---------------------------
cuadrado MOVE.W N, D0
MULS D0, D0
MOVE.W D0, N
LEA.L vuelta, A0
JMP (A0)
.......
LEA.L siguiente1, A1
MOVE.L A1, vuelta
JMP cuadrado
siguiente1 .......
LEA.L siguiente2, A1
MOVE.L A1, vuelta
JMP cuadrado
siguiente2 ......
27
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
JSR D1
RTS
JSR Sub1
dir
JSR Sub2 JSR Sub3
dir1 dir2
Pila antes de Pila después Pila después Pila después Pila después Pila después Pila después
la llamada a de la llamada de la llamada de la llamada de la vuelta de la vuelta de la vuelta
sub1 a sub1 a sub2 a sub3 de sub3 de sub2 de sub1
dir2
cuadrado MOVE.W N, D0
MULS D0, D0
MOVE.W D0, N
RTS
......
JSR cuadrado
siguiente1 .....
JSR cuadrado
siguiente2 .....
......
28
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
2) Utilización de memoria
La utilización de memoria para el paso de parámetros aporta mayor capacidad pero lentifica
el proceso por la necesidad de acceder a memoria. Tanto esta alternativa como la anterior impiden la
recursión de las subrutinas
3) Utilización de la pila
Cuando se realiza la llamada no sólo se introduce en la pila la dirección de retorno, sino que
previamente se introducen también los parámetros que deben transferirse. La subrutina accede a los
parámetros actuales en la pila.
Prog. Principal
Subrutina
Sub
Paso de
parámetros
(PUSH)
JSR Sub
dir
Liberación RTS
de parámetros
29
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Prog. Principal
Subrutina
Sub
Preservación
del contexto
Paso de
parámetros
(PUSH)
JSR Sub
dir
Liberación Restauración
de parámetros del contexto
RTS
Pila antes Pila después Pila después Pila después Pila después Pila después Pila después
del paso de del paso de de la llamada de preservar de restaurar de la vuelta de la
parámetros parámetros a sub el contexto el contexto de sub liberación
del área de
contexto parámetros
dir dir dir
parametro n parametro n parametro n parametro n parametro n
JSR Sub
dir
Liberación
de parámetros Restauración
del contexto
Destrucción de
variab. locales
RTS
30
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
La evolución de la Pila en el proceso de llamada, ejecución con variables locales y vuelta de subrutina sería la
siguiente:
Pila después Pila después Pila después Pila después Pila después Pila después Pila después
del paso de de la llamada de reservar de preservar de restaurar de liberar de la vuelta
parámetros a sub var. locales el contexto el contexto var. locales de sub
contexto
Finalmente, para que el RA de una subrutina pueda recuperarse cuando se vuelve de una
llamada a otra subrutina, es necesario que antes de realizar la llamada se guarde en el nuevo RA (el
de la subrutina llamada) la dirección del antiguo RA (el de la subrutina que realiza la llamada, o
subrutina padre). De esta manera todos los RAs quedan enlazados a través de este nuevo campo:
contexto Subrutina
Estado de en
var. locales ejecución
la Pila
R.A D. RA padre
de
Sub3 Dir. Retorno
parámetros
contexto
contexto
parámetros
MC 68000
En el 68000 los registros de activación se gestionan con las instrucciones LINK y UNLK, y contienen
los cuatro campos siguientes:
31
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
SP A7
Variables locales
Dirección de retorno
Parámetros
PRAG A5
Variables globales
Es decir:
Teniendo en cuenta que en la pila están ya los parámetros y la dirección de retorno de la subrutina la
ejecución de esta instrucción inmediatamente después de entrar en la rutina tiene el siguiente efecto:
• Guarda en la pila el puntero de registro de activación actual (A6), que contiene el puntero de registro
de activación de la subrutina padre.
• Copia el puntero de pila en el puntero de registro de activación actual, que no varía durante la
ejecución de la subrutina. Con esto se enlaza el registro de activación de la subrutina con el de la
subrutina padre.
• Decrementa el puntero de pila reservando espacio para las variables locales de la subrutina.
32
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
La instrucción UNLK desasigna la zona de memoria local restituyendo el puntero de registro de activación
de la subrutina padre. Tiene el siguiente formato:
UNLK An
Es decir:
La ejecución de esta instrucción antes del retorno de subrutina tiene el siguiente efecto:
• Copia en el puntero de pila el contenido del puntero del registro de activación actual. Con esto se
libera la zona de variables locales de la pila.
• Saca de la pila el puntero de registro de activación de la subrutina padre y lo coloca como puntero de
registro de activación actual. El puntero de pila queda apuntando a la dirección de retorno.
Subrutina
Programa Principal Sub
LINK A6, #despla
Preservación del
contexto
Paso de parámetros
(PUSH)
JSR Sub
dir Liberación
de parámetros Restauración del
contexto
UNLK A6
RTS
Pentium
El procesador Pentium II tiene instrucciones equivalentes a las del 68000 para realizar la gestión de
las subrutinas: CALL, ENTER, LEAVE y RETURN equivalentes a JSR, LINK, UNLK y RTS.
Subrutina
Programa Principal Sub
ENTER
Preservación del
contexto
Paso de parámetros
(PUSH)
CALL Sub
dir Liberación
de parámetros Restauración del
contexto
LEAVE
RETURN
33
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Sin embargo, en el 8088 y 8086 la subrutina se iniciaba con la siguiente secuencia de instrucciones:
PUSH EBP
MOV EBP, ESP
SUB ESP, espacio_para_variables_locales
Esta secuencia de instrucciones es más rápida que su equivalente ENTER que se introdujo con el
80286 (10 ciclos ENTER frente a 6 la secuencia anterior). La instrucción ENTER se añadió al
repertorio para sustituir a todo el código anterior, aunque su velocidad de ejecución es menor que la
de dicho código.
IF-THEN-ELSE
L.A.N. L.M.
IF A ope B THEN CMP A, B
<sentencias1> Bope L1
ELSE <sentencias2>
<sentencias2> BRA L2
L1 <sentencias1>
L2 ......
IF-THEN-ELSE-IF
L.A.N. L.M.
IF A1 ope1 B1 THEN CMP A1, B1
<sentencias1> B¬ope1 L1
ELSE IF A2 ope2 B2 THEN <sentencias1>
<sentencias2> BRA L
...... L1 CMP A2, B2
ELSE IF An open Bn THEN B¬ope2 L2
<sentenciasn> <sentencias2>
ELSE BRA L
<sentencias> L2 .......
34
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
CASE
L.A.N. L.M.
CASE K OF TABLA
0: <sentencias1> L0
1: <sentencias2> L1
...... L2
n: <sentenciasn> ...
defecto: <sentencias> Ln
Ln+1
MOVE K, A1
LEA TABLA(A1), A2
JMP (A2)
L0 <sentencias0>
BRA FIN
L1 <sentencias1>
BRA FIN
....
Ln <sentenciasn>
BRA FIN
Ln+1 <sentenciasn+1>
FIN ........
REPEAT
L.A.N. L.M.
REPEAT INI <sentencias>
<sentencias> CMP A, B
UNTIL A ope B B¬ope INI
......
FOR
L.A.N. L.M.
FOR A = B TO C DO MOVE B, A
<sentencias> CMP C, A
BGT L2
<sentencias>
INC A
BRA
L1 ......
35
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
• Tiempo de respuesta
• Tiempo de CPU
Tiempo de respuesta Es el tiempo necesario para completar una tarea, incluyendo los accesos al disco, a la
memoria, las actividades de E/S y los gastos del S.O. Es el tiempo que percibe el usuario.
Tiempo de CPU Es el tiempo que tarda en ejecutarse un programa, sin tener en cuenta el tiempo de espera
debido a la E/S o el tiempo utilizado para ejecutar otros programas. Se divide en:
1
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Tiempo de CPU utilizado por el usuario. Es el tiempo que la CPU utiliza para ejecutar el programa del
usuario. No se tiene en cuenta el tiempo de espera debido a la E/S o el tiempo utilizado para ejecutar otros
programas
Tiempo de CPU utilizado por el S.O. Es el tiempo que el S.O. emplea para realizar su gestión interna.
La función time de Unix produce una salida de la forma: 90.7u 12.9s 2:39 65%, donde:
• Tiempo de CPU del usuario = 90.7 segundos
• Tiempo de CPU utilizado por el sistema = 12.9 segundos
• Tiempo de CPU= 90.7 seg.+ 12.9seg = 103.6
• Tiempo de respuesta = 2 minutos 39 segundos =159 segundos
• Tiempo de CPU = 65% del tiempo de respuesta = 159 segundos*0.65 = 103.6
• Tiempo esperando operaciones de E/S y/o el tiempo ejecutando otras tareas 35% del tiempo de respuesta =
159 segundos*0.35 = 55.6 segundos
El tiempo de respuesta se utiliza como medida del rendimiento del sistema (con el sistema no cargado), mientras
que el rendimiento de la CPU normalmente hace referencia al tiempo de CPU del usuario sobre un sistema no
cargado.
donde Tc = Duración_del_ciclo_de_reloj
Además del número de ciclos de reloj que necesita la ejecución de un programa, también se puede medir el
número de instrucciones NI ejecutadas, y podremos calcular el número medio de Ciclos de reloj Por Instrucción o
CPI como:
o bien:
NI • CPI
Tiempo _ de _ CPU =
Fc
En determinadas situaciones de diseño puede ser útil calcular el número total de ciclos de reloj de la CPU como:
2
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
n
Número_de_ciclos_de_reloj_de_la_CPU = ∑ CPI
i =1
i • NI i
donde NIi representa el número de veces que el grupo de instrucciones i es ejecutado en un programa, y CPIi
representa el número medio de ciclos de reloj para el conjunto de instrucciones i. El tiempo de CPU se evalúa en
este caso mediante una de las 2 siguientes expresiones:
⎛ n
⎞
Tiempo_de_CPU = ⎜
⎝
∑ CPI
i =1
i • NI i ⎟ • Tc
⎠
⎛ n ⎞
⎜⎜ ∑ CPI i • NI i ⎟⎟
⎝ i =1 ⎠
Tiempo _ de _ CPU =
Fc
El número medio de ciclos por instrucción vendrá dado por:
⎛ n ⎞
⎜⎜ ∑ CPI i • NI i ⎟⎟
⎝ i =1 ⎠ n NI
CPI = = ∑ (CPI i • i )
NI i =1 NI
Esta última expresión calcula el CPI multiplicando cada CPIi individual por la fracción de ocurrencias de las
instrucciones i en el programa. CPIi debe ser medido, y no calculado a partir de la tabla del manual de referencia,
ya que se deben incluir los fallos de cache y otras ineficiencias del sistema de memoria.
Ejemplo
Solución
CP U A
Com pa r a cion es 20 %
CP U B
Sa lt os 20 % 20 %
100
80
Ot r a s 60 % 60 %
in st r u ccion es
3
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Luego la alternativa de diseño correspondiente a la CPU A sería más rápida. La ganancia de velocidad de la
alternativa A sobre la B valdrá:
NI 1 Fc
MIPS = 6
= 6
=
Tiempo _de _ejecución 10 CPI * 10 * Tc CPI * 10 6
NI
Tiempo _ de _ ejecución =
MIPS * 10 6
• Los MIPS dependen del repertorio de instrucciones, por lo que resulta un parámetro difícil de utilizar para
comparar máquinas con diferente repertorio
• Pueden variar inversamente al rendimiento, como ocurre en máquinas con hardware especial para punto
flotante, que emplean menor tiempo que las que no disponen de este hardware y por tanto tienen mejor
rendimiento. Sin embargo presentan un menor valor de los MIPS porque ejecutan menor número de
instrucciones
En definitiva, los MIPS pueden fallar al dar una medida del rendimiento, puesto que no reflejan el tiempo de
ejecución. Por esta razón se han venido utilizando los MIPS relativos, que miden cuantas veces más tarda en
ejecutarse un programa en la máquina a medir que en una de referencia, que por definición tiene un MIPS (VAX-
11/780):
4
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
• Existen operaciones en coma flotante rápidas (como la suma) o lentas (como la división), por lo que puede
resultar una medida poco significativa. Por ello se han utilizado los MFLOPS normalizados, que dan distinto
peso a las diferentes operaciones. Por ejemplo: suma, resta, comparación y multiplicación se les da peso 1;
división y raíz cuadrada peso 4; y exponenciación, trigonométricas, etc. peso 8:
Productividad (throughput)
Número de tareas ejecutadas en la unidad de tiempo
Si llamamos fm a la fracción de tiempo que puede utilizarse el modo de ejecución más rápido, es decir,
introduciendo una mejora, y gvmejora la ganancia de velocidad propia del elemento o modo mejorado, la ganancia
de velocidad global del sistema vendrá dada por la siguiente expresión:
(1 - fm) * Tsin
tiempo en
que se fm * Tsin / gvmejora
puede
utilizar la fm * Tsin
mejora
tiempo
ahorrado
en la
mejora
5
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Tsin Tsin 1
gvglobal = = =
Tcon ( 1 − f )* Tsin + f m * Tsin ( 1 − fm ) + f m
m
gvmejora gvmejora
Esta expresión recoge la forma cuantitativa de la ley de Amdahl. Si obtenemos el límite cuando la ganancia de
velocidad del modo mejorado tiende a infinito, es decir, suponemos que el modo mejora infinitamente, obtenemos
lo siguiente:
1
lim _ gv global =
1− fm
gv mejora → ∞
Es decir, que la ganancia de velocidad global se mantiene limitada por una expresión de la fracción fm
gvglobal
1/(1-fm)
gvmejora
Ejemplo
Un disco magnético 10 veces más rápido que en la máquina original. El disco se utiliza sólo el 40% del tiempo de
ejecución. ¿Cual es la ganancia de velocidad global?
fr=0.4
CPU
gvmejora = 10
gvglobal
1 1
gvmejora = 10; fm = 0.4 ==> gvglobal = = = 1.56
0.4 0.64
(1 − 0.4) +
10
1
lim gvglobal = = 1.666 (máxima ganancia para velocidad del disco infinita)
(1 − 0.4)
gvmejora --> ∞
6
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
P1 P2
5 segundos 2 segundos
Velocidad de ejecución media aritmética Ra = (2.000 + 5.000)/2 = 3.500 instrucciones/segundo
Si con esta velocidad media calculamos las instrucciones ejecutadas en 7 segundos =
3.500 * 7 = 24.500 instrucciones ≠ 20.000
Ejemplo
Se ejecutan 4 programas P1, P2, P3, P4 (que representan 4 modos de ejecución de un programa general) sobre 3
computadores A, B y C. Por cada programa se ejecutan 108 instrucciones, resultando los siguientes tiempos en
segundos:
7
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
MIPS Computador
Programa A B C
P1 100 10 5
P2 0,1 1 5
P3 0,2 0,1 2
P4 1 0,125 1
m m
∑ ∑r
1 1 1
Ta = ti =
m m i
i =1 i =1
Tiempos de ejecución medios aritméticos
Ta(A) = 1/4*(1/100+1/0,1+1/0,2+1) = 16,01/4 = 4,002
Ta(B) = 1/4*(1/10+1+1/0,1+1/0,125) = 19,1/4 = 4,775
Ta(C) = 1/4*(1/5+1/5+1/2+1) = 1,9/4 = 0,475
Se utiliza con medidas de rendimiento normalizadas con respecto a una máquina de referencia.
8
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Los modelos de simulación pueden construirse con mayor precisión, recogiendo especificaciones detalladas
de diseño. Sin embargo, estos modelos requieren una gran capacidad computacional cuando se incorporan todos
los componentes básicos de la máquina.
En la tercera alternativa es la máquina o máquinas reales las que se evalúan con el fin de disponer de algún
criterio de elección. En este caso (y posiblemente en algunos modelos de simulación) será necesario disponer de
un conjunto de programas representativos de la carga real de trabajo que vaya a tener la máquina, y con respecto a
los cuales se realicen las medidas. Estos programas patrones se denominan benchmarks, y serán el objeto de
estudio de este apartado.
Podemos utilizar diferentes criterios no excluyentes a la hora de clasificar los benchmarks que se utilizan en
la actualidad para evaluar los computadores.
Comenzaremos con una clasificación general en función del ámbito de aplicación que representan, es decir, el
tipo de recursos computacionales que mayoritariamente intervienen en la evaluación. En este sentido los
clasificaremos en:
• Enteros: aplicaciones en las que domina la aritmética entera, incluyendo procedimientos de búsqueda,
operaciones lógicas, etc. Por ejemplo, SPECint2000.
• Punto flotante: aplicaciones intensivas en cálculo numérico con reales. Por ejemplo, SPECfp2000 y
LINPACK.
• Transacciones: aplicaciones en las que dominan las transacciones on-line y off-line sobre bases de datos.
Por ejemplo, TPC-C.
En segundo lugar los agruparemos por la naturaleza del programa que implementan:
• Programas reales: Compiladores, procesadores de texto, etc. Permiten diferentes opciones de ejecución.
Con ellos se obtienen las medidas más precisas
• Núcleos (Kernels): Trozos de programas reales. Adecuados para analizar rendimientos específicos de las
características de una determinada máquina: Linpack, Livermore Loops
• Patrones conjunto (benchmarks suits) Conjunto de programas que miden los diferentes modos de
funcionamiento de una máquina: SPEC y TPC.
• Patrones reducidos (toy benchmarks): Programas reducidos (10-100 líneas de código) y de resultado
conocido. Son fáciles de introducir y ejecutar en cualquier máquina (Quicksort,...)
A continuación estudiaremos con algún detalle tres de los benchmarks con mayor difusión.
LINPACK
Es una colección de subrutinas Fortran que analizan y resuelven ecuaciones lineales y problemas de mínimos
cuadrados. Los sistemas de ecuaciones lineales que contempla utilizan diferentes formas de las matrices:
generales, en banda, simétricas, triangulares etc. Se diseñó para medir el rendimiento en supercomputadores a
finales de los 70 y principio de los 80 (Dongarra). Lo componen las siguientes subrutinas:
matrices generales
matrices en banda
matrices definidas positivas
matrices en banda definidas positivas
9
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
La tabla siguiente muestra los resultados de este benchmark para algunos computadores corriendo bajo un sistema
operativo y utilizando un compilador concreto. La primera columna numérica presenta el resultado en
Mflops/segundo, es decir, en millones de operaciones en punto flotante por segundo para una matriz de orden
100. La segunda para una matriz de orden 1000, y la tercera presenta el rendimiento de pico de la máquina. Para
resolver un sistema de n ecuaciones se realizan 2/3n3 + 2n2 ( se cuentan tanto las sumas y as multiplicaciones) .
10
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
SPEC es una sociedad sin ánimo de lucro cuya misión es establecer, mantener y distribuir un conjunto
estandarizado de benchmarks que se pueden aplicar a las últimas generaciones de procesadores. Se han
sucedido ya 4 generaciones de benchmarks: SPEC89, SPEC92, SPEC95 y SPEC2000. En lo que sigue nos
limitaremos a la última, que es la única en vigor.
SPEC2000
SPEC CPU2000
Los diseña el OSG (Open Systema Group) de SPEC que es el encargado de los benchmarks de componentes
y sistemas. En este apartado se encuentran los SPECint2000 y SPECfp2000, representativos de las
aplicaciones enteras y reales (punto flotante). Dentro de SPEC existen otros dos grupos HPG (High
Performance Group) y GPCG (Graphics Performance Caracterization Group).
La máquina de referencia de los SPEC CPU2000 es la UltraSPARC10 con un procesador UltraSPARC IIi, a
300 MHz y 256 MB de memoria. Esto significa que todos los resultados se calculan como ratios frente a la
máquina de referencia, que por definición tiene SPECint2000 = 100, y SPECfp2000 = 100.
SPECint2000
Lo integran los siguientes programas:
vpr(versatil place and route): implementa los procesos de ubicación (placement) y conexionado
(routing) de un circuito digital sobre bloques lógicos de FPGAs. Pertenece a la clase de programas
de optimización combinatoria. Utiliza simulated annealing como procedimiento de optimización.
mcf: Programa de planificación temporal (scheduling) de transporte público que utiliza el código
MFC del método simplex de red (versión especializada del algoritmo simplex de programación
lineal).
crafty: programa de juego de ajedrez por computador con un número significativo de operaciones
enteras y lógicas tales como AND, OR, XOR y desplazamientos.
parser: analizador sintáctico de inglés basado en gramáticas de enlace (link grammar) con un
diccionario de mas de 60.000 palabras.
eon: trazador de rayos (ray tracer) que transmite un número de líneas 3D (rayos) sobre un modelo
poligonal 3D, calcula la intersección entre las líneas y los polígonos, y genera nuevas líneas para
calcular la luz incidente en los puntos de intersección. El resultado final es una imagen vista por
cámara.
perlbmk: versión del lenguaje de script Perl en el que se han eliminado las características
específicas del SO.
11
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
gap: implementa un lenguaje diseñado para computar en grupos (GAP: Groups, Algorithm and
Programming).
vortex: procede de un OODBMS (sistema de gestión de bases de datos orientado a objetos) que se
ha adaptado para conformarlo a las exigencias de SPEC2000.
SPECffp2000
Lo integran los siguientes programas:
12
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
13
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
CINT2000 Result
Copyright © 1999-2000 Standard Performance Evaluation Corporation
14
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
CFP2000 Result
Copyright © 1999-2002 Standard Performance Evaluation Corporation
Intel Corporation SPECfp2000 = 773
Intel D850EMV2 motherboard (2.0A GHz, Pentium 4 processor) SPECfp_base2000 = 764
SPEC license #
Tested by: Intel Corporation Test date: May-2002 Hardware Avail: May-2002 Software Avail: Apr-2002
13
15
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
La siguiente gráfica muestra la evolución de los procesadores en los últimos años caracterizados
por su valor de SPECint con referencia en el VAX 11/780
TPC es un consorcio de 47 fabricantes de software y hardware entre los que se encuentran Compaq, Digital,
IBM, NCR, Sun, Informix, Intel, Microsoft y Oracle dedicado al diseño de benchmarks para la medida de
rendimiento de los sistemas informáticos. Estos benchmarks analizan la mayoría de los aspectos del sistema en
relación con el procesamiento de transacciones, es decir, accesos de consulta y actualización a bases de datos.
Tiene el inconveniente de la cantidad de tiempo que requieren las pruebas (meses) haciendo que su coste sea
elevado (millones de pesetas). Los benchmarks TPC-A , TPC-B y TPC-C ya están en desuso. TPC-D fue
sustituido en abril de 1999 por TPC-H y TPC-R.
TPC-R: es similar a TPC-H pero permite optimizaciones adicionales basadas en el conocimiento de las
preguntas.
TPC-W: La carga de trabajo se configura en un entorno de comercio que simula las actividades de un
servidor de WEB orientado a las transacciones comerciales.
Estudiaremos con más detalle en los siguientes parágrafos los actuales TPC-R y TPC-H.
TPC-R y TPC-H
Los benchmarks TPC-R y TPC-H fueron introducidos para sustituir al TPC-D como estándar industrial
para aplicaciones comerciales. Los dos son muy similares ya que modelan la misma aplicación comercial (base de
datos, preguntas y funciones de refresco). Se diferencian en las reglas de implementación , ya que mientras TPC-
H limita el uso de índices y esquemas de particiones, TPC-R no limita el uso de estas estructuras en la base de
datos.
16
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Base de Datos
La base de datos de TPC-H y TPC-R utiliza un esquema en la 3ª forma normal y responde al diagrama relación-
entidad de la siguiente figura (8 tablas):
nation region
TPC dispone de un generador de datos para todas las tablas de la base dependiendo del factor de escala
SF. El factor de escala determina el tamaño de los datos de la base, por ejemplo, SF=100 significa que la suma de
todas las tablas de la base es igual a 100 GB. Las dos tablas mayores son lineitem y orders que contienen el 83%
de los datos. El tamaño de todas las tablas excepto nation y region tienen un tamaño proporcional al factor de
escala.
Carga de Trabajo
Las cargas de trabajo para ambos benchmarks constan de los siguientes componentes:
La construcción de la base de datos incluye todos los tiempos de respuesta para crear las tablas, cargar los
datos, crear índices, definir y validar restricciones, etc.
Las 22 preguntas están definidas en SQL-92 como plantillas (templates), por lo que antes de ser ejecutada
sobre la base de datos se tiene que realizar la sustitución de parámetros. Se han elegido para mostrar la capacidad
del sistema utilizando todos los recursos en contextos monousuario y multiusuario.
Las dos funciones de refresco (RF1 y RF2) modelan la carga de nueva información (RF1) y la eliminación
de información obsoleta (RF2). RF1 inserta nuevas filas en la tabla lineitem y orders, mientras que RF2 elimina el
mismo número de filas de las mismas tablas.
Métrica de rendimiento
La principal métrica de rendimiento de TPC es la métrica de rendimiento compuesta (QphH/QphR). Para
calcular la métrica compuesta de un sistema para un factor de escala dado, hay que ejecutar un test de potencia
seguido por un test de capacidad de procesamiento (throughput). Después se combinan los resultados de ambos
tests para calcular la métrica compuesta.
En un test de potencia se ejecuta la función de refresco RF1, seguida por la ejecución de las 22 preguntas en
modo de único usuario, y por la ejecución de la función de refresco RF2.
En el test de capacidad se ejecutan las 22 preguntas (flujos de preguntas Si) en orden predefinido en múltiples
sesiones concurrentes. Además en una sesión separada se ejecuta secuencialmente un par de actualizaciones
(RF1, RF2) por cada flujo de preguntas.
17
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
S1 S2 Sn RF1
Inserción RF1
RF2
Q1
Flujo de Q2
Q3
preguntas .
.
.
.
Q21
.... .
Q22
.
RF1
Borrado RF2
RF2
El número mínimo de flujos depende del factor de escala, según la tabla siguiente:
Los resultados de los test de potencia y capacidad se utilizan para calcular la potencia de procesamiento
(Powre@Size) y la capacidad de procesamiento (Throughput@Size)
3600 ∗ SF
Power @ Size =
i = 22 j =2
24 ∏ QI (i,0) * ∏ RI ( j,0)
i =1 j =1
• i=1,2,...22;j=1,2
• QI(i,0): tiempo de respuesta en segundos de la query Qi del test de potencia (power)
• RI(j,0): tiempo de respuesta en segundos de la función de refresco RFj
• 3600: segundos (= 1 hora)
La capacidad de procesamiento se calcula como la razón del número total de preguntas ejecutadas a lo largo del
intervalo de ejecución. La unidad es preguntas/hora. Para un factor de escala SF viene dada por:
18
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
S ∗ 22 ∗ 3600
Throughput @ Size = ∗ SF
TS
TPC-H y TPC-R también definen una métrica precio/rendimiento como la división del precio total del sistema
por el resultado de la métrica compuesta.
100 GB Results
System Operating Date
Rank Company System QphH Price/QphH Database Cluster
Availability System Submitted
HP Oracle 9iR2
HP Tru64
AlphaServer w/Real
1 5,578 404 US $ 07/15/02 Unix 07/15/02 Y
ES45 Model Application
V5.1A/IPK
68/1000 Cluste
IBM eServer
IBM DB2 UDB Turbolinux 7
2 x350 with 2,960 336 US $ 06/20/02 02/01/02 Y
7.2 Servers
DB2 UDB
SGI 1450
Server with IBM DB2 UDB
3 2,733 347 US $ 10/31/01 Linux 2.4.3 05/11/01 Y
DB2 UDB EEE 7.2
EEE v7.2
Microsoft
Microsoft SQL
Windows
HP Proliant Server 2000
4 1,933 89 US $ 12/31/02 .NET 07/31/02 N
DL760 X900 Enterprise
Enterprise
Edition
Server
Microsoft
ProLiant 8000- Microsoft SQL
5 1,699 161 US $ 08/01/00 Windows 07/21/00 N
X700-8P 2000
2000
Microsoft
Microsoft SQL
Windows
HP Proliant Server 2000
6 1,695 82 US $ 06/26/02 2000 06/26/02 N
DL580 G2 Enterprise
Advanced
Edition
Server
e-@ction
Microsoft
Enterprise Microsoft SQL
7 1,669 169 US $ 01/31/01 Windows 12/22/00 N
Server Server 2000
2000
ES5085R
Microsoft
Netfinity Microsoft SQL
8 1,454 200 US $ 08/01/00 Windows 05/23/00 N
8500R Server 2000
2000
Microsoft
ProLiant 8000- Microsoft SQL
9 1,308 174 US $ 08/01/00 Windows 04/05/00 N
8P 2000
2000
Microsoft
NetServer Microsoft SQL
10 1,291 195 US $ 08/18/00 Windows 08/18/00 N
LXr8500 Server 2000
2000
19
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
300 GB Results
System Operating Date
Rank Company System QphH Price/QphH Database Cluster
Availability System Submitted
Compaq Microsoft
Windows
ProLiant IBM DB2
1 12,995 199 US $ 06/20/02 2000 04/09/02 Y
DL760 x900- UDB 7.2
Advanced
64P Server
Compaq
Oracle 9i R2 Compaq
AlphaServer
3 5,976 453 US $ 06/01/02 Enterprise Tru64 Unix 05/05/02 Y
ES45 Model Edition V5.1A/IPK
68/1000
NUMA-Q IBM DB2 DYNIX/ptx
4 5,923 653 US $ 09/05/00 09/05/00 N
2000 UDB 7.1 4.5.1
AlphaServer Compaq
Informix XPS
7 ES40 Model 2,832 1,058 US $ 02/14/01 Tru64 UNIX 12/19/00 Y
8.31 FD1
6/667 V5.1
Microsoft Microsoft
ProLiant
8 1,506 280 US $ 11/17/00 SQL Server Windows 11/17/00 N
8000-8P 2000 2000
Microsoft Microsoft
NetServer LXr
9 1,402 207 US $ 08/18/00 SQL Server Windows 08/18/00 N
8500 2000 2000
1,000 GB Results
System Operating Date
Rank Company System QphH Price/QphH Database Cluster
Availability System Submitted
HP 9000 Oracle 9i
Database
Superdome HP UX 11.i
1 25,805 231 US $ 10/30/02 Enterprise 06/24/02 N
Enterprise 64-bit
Edition
Server v9.2.0.2.0
Compaq Microsoft
Windows
ProLiant IBM DB2 UDB
2 22,361 255 US $ 06/20/02 2000 02/06/02 Y
DL760 7.2
Advanced
X900-128P Server
Oracle 9i
Sun
Database Sun Solaris
3 Fire[TM] 18,802 256 US $ 07/17/02 01/17/02 N
Enterprise 8
15K server Edition
HP 9000
Orcacle9i.9.0.1 HP UX 11.i
5 Superdome 13,160 564 US $ 09/05/01 08/06/01 N
Enterprise Edi 64-bit
Enterprise
20
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Server
IBM
IBM DB2 UDB IBM AIX
6 RS/6000 SP 12,866 649 US $ 08/15/00 06/15/01 Y
7.1 4.3.3
550
HP 9000 Informix
Superdome Extended HP UX 11.i
7 9,754 814 US $ 02/13/01 02/13/01 N
Enterprise Parallel Ser 64-bit
Server 8.31FD1
3000 GB Results
System Operating Date
Rank Company System QphH Price/QphH Database Cluster
Availability System Submitted
HP 9000 Oracle 9i
Database
Superdome HP UX 11.i
1 27,094 240 US $ 10/30/02 Enterprise 08/26/02 N
Enterprise 64-bit
Edition
Server v9.2.0.2.0
Sun Fire[TM]
Oracle 9i R2
15K Server
2 23,813 237 US $ 10/30/02 Enterprise Sun Solaris 9 06/26/02 N
with Oracle9i Edition
R2
Compaq Microsoft
Windows
ProLiant IBM DB2
3 21,053 291 US $ 06/20/02 2000 02/06/02 Y
DL760 UDB 7.2
Advanced
X900-128P Server
HP 9000 Oracle 9i
Superdome Database HP UX 11.i
5 17,908 569 US $ 05/15/02 12/17/01 N
Enterprise Enterprise 64-bit
Server Edition
Sun Starfire Oracle9i
Enterprise Database
6 10,764 1,250 US $ 06/19/01 Sun Solaris 8 04/13/01 Y
10000 with Ent. Edition
Oracle9i 9.0.1
100 GB Results
^ Compan System Date
System QphR Price/QphR Database
y Availability Submitted
PowerEdge 6600/1.6 GHz Xeon Oracle 9i R2 Enterprise
4,452 41 US $ 04/04/03 10/11/02
MP Edition
1,000 GB Results
^ Company System QphR Price/QphR System Availability Database Date Submitted
21
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Otros benchmarks
Whetstone: Benchmark sintético representativo de la programación numérica escalar (punto flotante). Está
formado por un conjunto de bucles con una alta localidad de referencia, lo que favorece a las cache pequeñas.
Utiliza muchas llamadas a librería, lo que posibilita mejorar los resultados optimizando estas librerías. El
resultado se expresa en whetstone/segundo, es decir, instrucciones del benchmark/segundo. Se basa en una
estadística recogida por Brian Wichmann del National Physical Laboratory de Inglaterra, utilizando un
compilador Algo 60 que traducía Algo a instrucciones de la máquina imaginaria Whetstone, una pequeña
ciudad a las afueras de Leicester.
Dhrystone: Benchmark sintético que utiliza un juego de palabras relativas a su antecesor whetstone y es
representativo de programas generales (enteros) escritos originariamente en Fortran. Reúne operaciones
aritméticas de enteros, tratamiento de caracteres y punteros. Está constituido por un bucle de gran tamaño. El
resultado se expresa en dhrystone/segundo, es decir, número de ejecuciones del bucle por segundo. En la
actualidad está también disponible en ADA, Pascal y C.
El tráfico con memoria es uno de los cuellos de botella más importantes para el funcionamiento del procesador. Se
disminuye este tráfico con instrucciones que operen sobre registros, ya que el acceso es más rápido y las
referencias a los registros se codifican con menor número de bits (instrucciones más cortas).
Conclusión
Se opta por el tipo de máquina con registros de propósito general (RPG)
22
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Conclusión
Dentro de las máquinas con registros de propósito general, las que operan en la instrucciones ALU de registro
- registro (RR) son las que optimizan el uso de registros, quedando el acceso a memoria limitado a las
instrucciones de carga y almacenamiento.
Registros
Genearales
R0
R1
R2
Almacenamiento
R3
ALU . Carga Memoria
.
.
.Rn
Conclusión
Es indiferente desde el punto de vista del rendimiento. Serán motivos de compatibilidad con otros
procesadores los que determinen una elección
Conclusión
Datos alineados, o si el procesador permite lo no alineados, será el compilador quien genere siempre datos
alineados.
2.5 Direccionamientos
Los modos de direccionamiento pueden reducir significativamente el número de instrucciones de un
programa. Sin embargo, añaden complejidad al repertorio aumentando con ello el CPI (número medio de ciclos
por instrucción). En la gráfica siguiente aparecen los resultados de medir los modos de direccionamiento que
utilizan 3 programas del SPEC89 sobre la arquitectura VAX (una de las que más modos de direccionamiento
dispone): Tex, Spice y gcc. Como puede observarse en la gráfica, los direccionamientos inmediato y con
desplazamiento dominan con diferencia sobre los demás. No se ha incluido el direccionamiento relativo que se
utiliza casi exclusivamente en las instrucciones de bifurcación.
23
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
1%
Indirecto memoria 6%
1%
0%
Indexado 16%
6%
24%
Indirecto registro 3% TeX
11%
Spice
43% gcc
Inmediato 17%
39%
32%
Desplazamiento 55%
40%
0%
Otros 3%
3%
El direccionamiento registro + desplazamiento alcanza más del 75%. El tamaño de los desplazamientos no aparece
en la gráfica pero varía de 12 a 16 bits en un porcentaje que va del 75% al 99%. El tamaño del campo inmediato
varia de 8 a 16 bits en un porcentaje que va del 50% al 80%.
Conclusiones
Una máquina eficiente, que favorezca los casos frecuentes (que como hemos visto por la ley de Amdahl son los
que más aportan a la ganancia de velocidad global de la máquina) debería soportar:
Conclusiones
enteros de 16 y 32 bits
flotantes de 64 bits
caracteres de 8 bits
24
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
0%
Doble Palabra 66%
0%
89%
Palabra 34%
91% TeX
Spice
0% gcc
Media Palabra 0%
4%
11%
BYTE 0%
5%
2.6 Operaciones
Se cumple en la práctica que las operaciones más simples son las que más se repiten en los programas,
concretamente las operaciones de carga, salto condicional, comparación, almacenamiento, suma, and, resta,
transferencia entre registros y saltos-retornos de subrutina se llevan el 96% de las ocurrencias, para el caso de
programas enteros ejecutándose sobre la familia x86, tal como muestra la siguiente tabla:
TOTAL 96%
Conclusiones
El repertorio ISA de un procesador eficiente no debera incluir muchas más operaciones que las aparecidas en
la tabla anterior.
25
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
16%
Llamada/retorno 13%
10%
TeX
18%
Bifurcación 12% Spice
12%
gcc
66%
Condicional 75%
78%
Si analizamos la distribución de los saltos condicionales observamos (figura siguiente) que más de un 70% son
saltos sobre igual o diferente, y un gran número son comparaciones con cero. Esto justifica que algunos
procesadores incorporen un registro cuyo contenido es siempre igual a cero.
25%
LT/GE 0%
11%
TeX
3%
GT/LE 25% Spice
0%
gcc
72%
EQ/NE 75%
89%
La gráfica siguiente muestra la distribución del desplazamiento (número de bits) relativa al PC:
40
punto flotante 35
30
enteros 25
20
15
10
5
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
bits del desplazamiento
Conclusiones
Instrucciones que integren el test sobre la condición y el correspondiente salto
Registro cuyo contenido es inalterable igual a cero.
Desplazamiento de 8 bits
26
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
que deben de realizar. Resulta, pues, conveniente optimizar la ejecución de estas instrucciones. Del análisis de los
datos se deducen los siguientes hechos:
retorno
t = 33
llamada
w=5
profundidad
de
anidamiento
Puede observarse que la variación del nivel de anidamiento se ha mantenido dentro de un valor w = 5 durante una
secuencia de t = 33 llamadas/retornos de procedimientos.
Conclusiones
Este comportamiento de los programas en lo relativo a las llamadas a procedimientos se ha explotado en
algunos procesadores (por ejemplo, SPARC) utilizando una ventana de registros para soportar los entornos,
marcos o registros de activación (RA). Este mecanismo lo analizamos en el punto siguiente.
Registros de propósito general: ventanas para soportar llamadas a procedimientos
El procesador dispone de n registros físicos r0, r1, ...rn de los que en cada momento sólo son visibles para
el programador (ventana) m de ellos: R0, R1, ..., Rm (m < n). Cuando todavía no se ha realizado ningún salto a
subrutina, los registros visibles coinciden con los m primeros registros físicos. Cuando se ejecuta una instrucción
de salto, los registros visibles se desplazan sobre los físicos de tal manera que se da un solapamiento entre los
últimos antes del salto y los primeros después del salto. Es en los registros de solapamiento donde se realiza el
paso de parámetros a la rutina y la devolución de resultados.
27
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
r0 r1 ri rn
Ventana de registros visibles
R0 Rm
R. parámetros R. var. locales R. temporales
R0 Rm
salto 1 R. parámetros R. var. locales R. temporales
R0 Rm
R. parámetros R. var. locales R. temporales
ventana de solapamiento 1
salto 2
ventana de solapamiento 2
El conjunto de registros tiene una estructura de buffer circular, de tal manera que cuando se agota su capacidad se
lleva a memoria el conjunto de registros del entorno (registro de activación) que primero se introdujo (primera
llamada). El tamaño del buffer se elige de manera tal que permita soportar un nivel de anidamiento activo (en
registros) de acuerdo a los datos empíricos que muestran los programas. En nuestro caso vimos que una variación
de nivel igual a 5 se mantenía durante 33 llamadas/retorno, lo que significa que durante esas 33 llamadas todos
los registros de activación se hubiesen soportado en un sistema con 5 ventanas .
B.in
A.out B.loc ventana actual
C.in
A.loc B.out
ventana salvada
A.in
restauración
salvaguardia
Ejemplo
En la siguiente figura se presenta el diseño de un sistema de registros con ventana de solapamiento
que dispone de 32 registros físicos, r0, r1, ...r31, y una ventana de 8 registros: R0, R1, ..., R7. El
solapamiento es de 2 registros.
28
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
r0 R0
r1 R1
r2 R2
JSR RTS
r3 R3
+1 -1
r4 R4
r5 R5
r6 R6 R0
r7 R7 R1
Lógica
000 00000 combinacional r8 R2
001 00110
010 01100 Sumador r9 R3
011 01010
100 10110 r10 R4
dirección del
registro visible r11 R5
r12 R6
r13 R7
r31
Un compilador consta de una serie de etapas, las cuales transforman representaciones abstractas de alto
nivel, en representaciones de más bajo nivel, hasta llegar al repertorio de instrucciones. Un compilador busca en
primer lugar la exactitud de la traducción (mantenimiento de la semántica del programa en la transformación), en
segundo lugar la velocidad del código generado, en tercer lugar el tamaño del código, en cuarto lugar la velocidad
del compilador, y en quinto lugar el soporte a la depuración. Desde el punto de vista del rendimiento que ahora
nos ocupa, la velocidad del código generado es el factor a optimizar
Las optimizaciones realizadas por los compiladores modernos podemos resumirlas en las siguientes:
Optimización de alto nivel: realizadas en el código fuente
• Integración de procedimientos: sustituye la llamada a un procedimiento por el cuerpo de éste (expansión
de macros).
29
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Optimización del uso de registros: es una de las que reporta mayor incremento de rendimiento. La
estudiaremos con más detalle a continuación.
Por último conviene destacar que las dos ayudas más importantes que la arquitectura de un procesador puede
prestar al diseño del compilador son:
• Regularidad del repertorio, es decir, ortogonalidad de sus elementos para simplificar la generación de código
• Proporcionar funciones primitivas, no soluciones codificadas en las instrucciones, pues estas resultan difícil
de utilizar cuando el caso se aparta ligeramente del que originó su diseño.
Ejemplo
Asignación de las 6 variables (V1,...V6) que aparecen en el segmento de programa de la siguiente figura, en la
que se indica de forma gráfica sus interferencias. Se disponen de 3 registros en la máquina: R1, R2 y R3.
2) Se colorea el grafo asignando a los nodos los tres registros de manera que no se asigne el mismo registro a
dos nodos conectados por un arco en el grafo.
3) Los nodos que no pueden ser asignados a registros se asignan a memoria (V7)
30
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
R1 R2
V1 V2 V3 V4 V5 V6
V1 V2
V3 V4 V5 V6
R3 R1 R3 Memoria
Características comparativas
CISC(Complex Instruction Set Computers) RISC( Reduced Instruction Set Computers)
• Arquitectura RM y MM • Arquitectura RR (carga/almacenamiento)
• Diseñadas sin tener en cuenta la verdadera demanda • Diseñadas a partir de las mediciones practicadas en los
de los programas programas a partir de los 80
• Objetivo: dar soporte arquitectónico a las funciones • Objetivo: dar soporte eficiente a los casos frecuentes
requeridas por los LANs
• Muchas operaciones básicas y tipos de • Pocas operaciones básicas y tipos de direccionamiento
direccionamiento complejos simples
• Instrucciones largas y complejas con formatos muy • Instrucciones de formato simple (tamaño filo) ==>
diversos ==> decodificación compleja (lenta) decodificación simple (rápida)
• Pocas instrucciones por programa ==> elevado • Muchas instrucciones por programa ==> reducido
número de ciclos por instrucción (CPI) número de ciclos por instrucción (CPI)
• Muchos tipos de datos ==> interfaz con memoria • Sólo los tipos de datos básicos ==> interfaz con
compleja memoria sencilla
• Número limitado de registros de propósito general • Número elevado de registros ==> uso eficiente por el
==> mucho almacenamiento temporal en memoria compilador para almacenamiento temporal
• Baja ortogonalidad en las instrucciones ==> muchas • Alto grado de ortogonalidad en las instrucciones ==>
excepciones para el compilador mucha regularidad para el compilador
Segmentación
Una de la ventajas de los procesadores RISC es la facilidad que presentan sus instrucciones para ser ejecutadas de
forma segmentada, es decir, solapando dos o más fases de ejecución. La tarea de cada instrucción se divide en
etapas, de tal forma que en cada ciclo se ejecuta una etapa de una instrucción, simultaneándose la ejecución de
etapas de diferentes instrucciones.
31
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Modelo secuencial
instrucción 1 I D X M E
instrucción 2 I D X M E
instrucción 3 I D X M E
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ciclos
instrucción 1 I D X M E
instrucción 2 I D X M E
instrucción 3 I D X M E
instrucción 4 I D X M E
I D X M E
instrucción 5
1 2 3 4 5 6 7 8 9 ciclos
Modelo infrasegmentado
En cada n ciclos se lanza una nueva instrucción (Stanford MIPS). Esto está motivado fundamentalmente porque el
tiempo de ciclo no permite acceder a algunos recursos hardware como la memoria, por lo que se necesitan dos (o
más) ciclos para acceder a la misma.
instrucción 1 I D X M E
instrucción 2 I D X M E
instrucción 3 I D X M E
instrucción 4 I D X M E
I D X M E
instrucción 5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 ciclos
Modelo supersegmentado
Aumentan el rendimiento disminuyendo el tiempo de ciclo. Esto lo consiguen aumentando considerablemente el
número de etapas del procesador (o dividiendo la etapa en subciclos). Con ello se consigue que el rendimiento
máximo del procesador aumente; pero tiene un inconveniente que va a afectar considerablemente al rendimiento
real: el aumento de las latencias de las instrucciones inducido por el aumento del número de conflictos entre las
instrucciones que tengan algún tipo de dependencia a la hora de la ejecución (dependencias de datos, estructurales
o de control), con la consiguiente pérdida de rendimiento.
32
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
instrucción 1 I D X X X X B E
instrucción 2 I D X X X X M E
instrucción 3 I D X X X X M E
instrucción 4 I D X X X X M E
I D X X X X M E
instrucción 5
1 2 3 4 5 6 7 8 9 10 11 12 ciclos
Modelo superescalar
Para aumentar el rendimiento el modelo superescalar lanza a ejecutar en cada ciclo n instrucciones a la
vez, siendo n el orden o grado del superescalar. Sin embargo, para que se puedan lanzar a ejecutar a la vez n
instrucciones no debe haber conflictos entre ellas. Éste es un factor que va a limitar, de forma significativa, el
rendimiento, y es una medida del paralelismo implícito que presentan las aplicaciones y que pueden extraer los
compiladores.
instrucción 1 I D X M E
instrucción 2 I D X M E
instrucción 3 I D X M E
instrucción 4 I D X M E
I D X M E
instrucción 5
I D X M E
instrucción 6
1 2 3 4 5 6 7 8 ciclos
Dependencias
Son las causantes de la disminución de rendimiento en la ejecución segmentada y superescalar. Son de tres tipos:
Dependencias de datos
Producidas por la referencia a un mismo dato por más de una sentencia (instrucción). Son de tres tipos:
S1 X := ...
.
.
.
S2 ...:=...X...
33
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
S1 ...:=...X...
.
.
.
S2 X :=...
S1 X :=...
.
.
.
S2 X :=...
S1
S2 S4
S3
Dependencias de control
Debido a las instrucciones de salto condicional.
Dependencias de recursos(estructurales)
Producidas al tratar de usar recursos compartidos
34
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Ejemplo: DLX
• Arquitectura de 32 bits
• 32 registros de uso general (GPR) de 32 bits. R0 siempre contiene 0
• Memoria direccionable por byte en modo big-endian
• Instrucciones de longitud fija de 32 bits y alineadas
• Un solo modo de direccionamiento: registro + desplazamiento (16)
• Datos 8, 16 y 32 bits (enteros)
6 5 5 16
tipo I Operación rs rd Inmediato
(Inmediato)
Cargas rd Å Memoria
Almacenamientos Memoria Å rs
Operaciones inmediatas rd Å rs Operación Inmediato
6 26
Tipo J Operación Destino
(salto)
Saltos condicionales, incondicionales y a subrutina
6 5 5 5 11
Tipo R
Operación rs1 rs2 rd Función
(registro)
Repertorio de instrucciones
Veamos algunas de las instrucciones de los diferentes grupos:
INSTRUCCIONES ARITMETICO/LOGICAS
Instrucción Ejemplo Semántica
ADD (Sumar) R1 ← R2 + R3 ADD R1, R2, R3
ADDI (Sumar inmediato) R1 ← R2 + 3 ADDI R1, R2, #3
SLLI (Desplazamiento lógico izquierda) R1 ← R2 << 5 SLL R1, R2, #5
SLT (Activa menor que) IF (R2 < R3) R1 ← 1 ELSE R1 ← 0 SLT R1, R2, R3
INSTRUCCIONES DE CARGA/ALMACENAMIENTO
Instrucción Semántica Ejemplo
LW (Cargar palabra) R1 ←32 M[30 + R2] LW R1, 30 (R2)
R1 ←32 M[1000 + 0] LW R1, 1000 (R0)
LB (Cargar byte) R1 ←32 (M[40 + R3]0)24 ## M[40+R3] LB R1, 40 (R3)
LBU (Cargar byte sin signo) R1 ←32 024 ## M[40+R3] LBU R1, 40 (R3)
SW (Almacenar palabra) M[500+R4]←32 R3 SW 500(R4), R3
35
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Conclusión:
el DLX tiene aproximadamente el triple de rendimiento que el VAX
4 4
ratio de rendimiento
3,5 3,5
3 3
2,5 2,5
DLX/VAX
1,5 1,5
1 1
ratio CPI
0,5 0,5
0 0
matrix
fi
spice
tomcatv
espresso
eqntott
nasa7
fpppp
doduc
SPEC 89
36
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Soporte físico
• Semiconductor
• Magnéticas
• Opticas
• Magneto-ópticas
Alterabilidad
• RAM: lectura y escritura
• ROM (Read 0nly Memory): Son memorias de sólo lectura. Existen diferentes variantes:
ROM programadas por máscara, cuya información se escribe en el proceso de
fabricación y no se puede modificar.
PROM, o ROM programable una sola vez. Utilizan una matriz de diodos cuya unión
se puede destruir aplicando sobre ella una sobretensión.
EPROM (Erasable PROM) o RPROM (Reprogramable ROM), cuyo contenido puede
borrarse mediante rayos ultravioletas para volverlas a escribir.
EAROM (Electrically Alterable ROM) o EEROM (Electrically Erasable ROM), son
memorias que están entre las RAM y las ROM ya que su contenido se puede volver a
escribir por medios eléctricos. Se diferencian de las RAM en que no son volátiles.
Memoria FLASH. Utilizan tecnología de borrado eléctrico al igual que las EEPROM,
pueden borrarse enteras en unos cuantos segundos, mucho más rápido que las
EPROM.
Duración de la información
• Estáticas: el contenido permanece inalterable mientras están polarizadas.
• Dinámicas: el contenido sólo dura un corto período de tiempo, por lo que es necesario
refrescarlo (reescribirlo) periódicamente.
Proceso de lectura
• Lectura destructiva: necesitan reescritura después de una lectura.
• Lectura no destructiva
1
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Ubicación en el computador
• Interna (CPU): registros, cache(L1), cache(L2), memoria principal
• Externa (E/S): discos, cintas, etc.
Parámetros de velocidad
• Tiempo de acceso
• Tiempo de ciclo
• Ancho de banda(frecuencia de acceso)
Unidades de transferencia
• Palabras
• Bloques
nivel superior
aumenta capacidad aumenta velocidad
Registros de la CPU
Memoria cache(L1,L2)
Memoria principal
Discos magnéticos
En el nivel i+1 se ubica una copia de aquellos bloques del nivel i que tienen mayor probabilidad
de ser referenciados en el futuro inmediato
nivel i+1
nivel i
2
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Se consigue que el mayor número de referencias generado por los programas correspondan a
informaciones ubicadas en los niveles más altos de la jerarquía.
Cada celda básica es un dispositivo físico con dos estados estables (o semi-estables) con
capacidad para cambiar el estado (escritura) y determinar su valor (lectura). Aunque en los
primeros computadores se utilizaron los materiales magnéticos como soporte de las celdas de
memoria principal (memorias de ferritas, de película delgada, etc.) en la actualidad sólo se
utilizan los materiales semiconductores.
Selección
Lectura/Escritura
Organización 2D
Es la organización más sencilla que responde al esquema mostrado en la siguiente
figura:
3
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
SC Control
R/W
m
m
datos datos
entrada salida
Ejemplo
En la siguiente figura se muestra la organización 2D de un chip de memoria con 4 palabras de 4
bits:
De0 De1 De2 De3
R/W
3
A0 2
DEC 1
0
A1
4
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Organización 3D
En lugar de una única selección (decodificador) de 2n salidas en esta organización se
utilizan dos decodificadores de 2n/2 operando en coincidencia. Las líneas de dirección se
reparten entre los dos decodificadores. Para una configuración dada de las líneas de dirección se
selecciona un único bit de la matriz. Por ello se la denomina también organización por bits.
Selección
X
2n/2
n/2
Matriz de celdas
n
2n/2
Selección 2n X m celdas
dirección Y
n/2
SC Control
R/W
m
m
datos datos
entrada salida
Ejemplo:
A2 A3
DEC
0 1 2 3
R/W
3
A0 2
DEC 1
0
A1
5
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
En esta organización se necesitan varias matrices de celdas básicas, tantas como bits
deba tener la palabra de memoria, actuando sobre ellas en paralelo los circuitos de
decodificación:
DE C X
u n a pa la br a
DE C
Y
SC SC
n n
2n * m bits 2n * m * k bits
R/W R/W
m m•k
6
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
n
SC SC SC
n 1 n 2 n k
m m m
R/W
k •m
A0
A1
A9
SC
SC SC SC SC
D0
.
.
.
D7
7
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
SC SC
n n+k
2n * m bits 2n * N * m bits
R/W R/W
m m
2k-1
An +k+1,...An
DEC
1
0
dir eccion es
An -1,...A0 SC
n
SC SC SC
n 1 n 2 n N
m m m
R/W
m
bu s de da t os
8
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
A10
DE C
A11
SC
A0
A1
A9
SC
SC SC SC SC
D0
.
.
.
D7
SC SC
n n+k’
2n * m bits 2n * N * m * k bits
R/W R/W
m m*k
9
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
dn-1 dn-2........ d1 d0
D0 0 0 ... 0 0
D1 0 0 ... 0 1
D2 0 0 ... 1 0
D3 0 0 ... 1 1
. .
. .
. .
Di ---------------------
. Memoria
.
. 2m palabras
Dj
---------------------
.
.
.
D2n-1 1 1 ... 1 1
dn -1
dn -2 ldm -1
. ldm -2 Mem or ia
. .
. . 2 m pa la br a s
.
d1 ld1
d0 ld0
SC
F u n ción
de
selección
Si la memoria debe ocupar posiciones consecutivas, las líneas menos significativas del bus de
direcciones se conectarán con las líneas de direcciones locales de la memoria:
ld0 = d0
ld1 = d1
.
.
.
ldm-2 = dm-2
ldm-1 = dm-1
La función de selección será una función booleana del bus de direcciones:
SC = fb(dn-1, dn-2,...,d1, d0)
10
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
d3 d2 d0 d3 d2 d1 d3 d1 d0 d3 d2
d0
d3 d2 d1 d0 00 01 11 10
D00 0 0 0 0
D01 0 0 0 1 00 0 0 0 0
D02 0 0 1 0 ld2 RAM
D03 0 0 1 1 01 1 1 1 1
D04 0 1 0 0 ld1 23 = 8 d2
D05 0 1 0 1 palabbras 11 0 0 0 0
D06 0 1 1 0 ld0 d3
D07 0 1 1 1 SC 10 1 1 1 1
D08 1 0 0 0
D09 1 0 0 1 d1
D10 1 0 1 0
D11 1 0 1 1
D12 1 1 0 0
D13 1 1 0 1
D14 1 1 1 0
D15 1 1 1 1
d3 d2 d3 d2
11
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
d0
d3 d2 d1 d0 00 01 11 10
D00 0 0 0 0
D01 0 0 0 1 00 1 1 1 1
D02 0 0 1 0 ld2 RAM
D03 0 0 1 1 01 1 1 1 1
D04 0 1 0 0 ld1 23 = 8 d2
D05 0 1 0 1 palabbras 11 0 0 0 0
D06 0 1 1 0 ld0 d3
D07 0 1 1 1 SC 10 0 0 0 0
D08 1 0 0 0
D09 1 0 0 1 d1
D10 1 0 1 0
D11 1 0 1 1
D12 1 1 0 0
D13 1 1 0 1 d3
D14 1 1 1 0
D15 1 1 1 1
d0
d3 d2 d1 d0 00 01 11 10
D00 0 0 0 0
D01 0 0 0 1 00 0 0 0 0
D02 0 0 1 0 ld2 RAM
D03 0 0 1 1 01 0 0 0 0
D04 0 1 0 0 ld1 23 = 8
d2
D05 0 1 0 1 palabbras 11 1 1 1 1
D06 0 1 1 0 ld0 d3
D07 0 1 1 1 SC 10 1 1 1 1
D08 1 0 0 0
D09 1 0 0 1 d1
D10 1 0 1 0
d3
D11 1 0 1 1
D12 1 1 0 0
D13 1 1 0 1
D14 1 1 1 0
D15 1 1 1 1
Conclusión: la función de selección es más simple cuanto más alineado se encuentre el bloque
de memoria en el espacio de direcciones. La máxima alineación la tendremos cuando se cumpla
que:
12
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
ld2 RAM
ld1 23 = 8 da t os
pa la bbr a s
ld0
SC1 SC2
d3 d3
d2 d2
Ejemplo:
Ubicación en un espacio de direcciones de 12 líneas d11, d10,...,d1, d0 (212 = 4.086 = 4K) de un bloque
de RAM de 2K y un puerto de E/S de 4 registros.
d10 RAM d1
pu er t o E /S da t os 000 RAM
da t os
2 12 = 4K d0 22 = 4
pa la bbr a s (2K)
pa la bbr a s
d0 SC
7F F
SC 800
pu er t o E /S
(2K)
d11
FFF
La RAM la hemos decodificado completamente, en cambio el puerto de E/S presenta una decodificación
parcial, ya que hemos utilizado 2K del espacio disponible para ubicar tan sólo 4 palabras. Esto significa
que los 4 registros presentan múltiples direcciones cada uno (exactamente 512):
13
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Decodificación en placa
A0 RAM
da t os
2 13 = 8K
A0
pa la bbr a s
A12
SC
A13
A14
A15 A15
A0
A0 RAM
da t os
2 13 = 8K
pa la bbr a s
A12
SC
A12
A13
DE C
A14
A15
14
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
15
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Da t os de en tr a da Da t os de sa lida
F Libr e de er r ores
sim ples
Dir ecciones
Mem or ia
R/W
COMP
F
CORR
Ejemplo
Supongamos que la longitud de palabra de la memoria es m = 8.
(m12, m11, m10, m9, m8, m7, m6, m5, m4, m3, m2, m1).
Con los bits (C8, C4, C2, C1) se codifican todas las posiciones del mensaje (12), es decir:
de manera que cuando se produzca un error simple (complementación de un bit) en el bit mj del
mensaje, (C8, C4, C2, C1) sea igual a j en decimal.
d8 d7 d6 d5 d4 d3 d2 d1 datos
16
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
C8 C4 C2 C1 paridades
m12 m11 m10 m9 m8 m7 m6 m5 m4 m3 m2 m1 mensaje
1 1 1 1 1 0 0 0 0 0 0 0 C8
1 0 0 0 0 1 1 1 1 0 0 0 C4
0 1 1 0 0 1 1 0 0 1 1 0 C2
0 1 0 1 0 1 0 1 0 1 0 1 C1
Función F:
C8 = d8⊕d7⊕d6⊕d5 = 1 ⊕ 0 ⊕ 0 ⊕ 1 = 0
C4 = d8⊕d4⊕d3⊕d2 = 1 ⊕ 1 ⊕ 1 ⊕ 0 = 1
C2 = d7⊕d6⊕d4⊕d3⊕d1 = 0 ⊕ 0 ⊕ 1 ⊕ 1⊕1 = 1
C1 = d7⊕d5⊕d4⊕d2⊕d1 = 0 ⊕ 1 ⊕ 1 ⊕ 0⊕1 = 1
En la lectura se generará de nuevo los bits de paridad con el bloque F’ a partir de los bits de datos
leídos de memoria. El bloque F’ responde a la misma función lógica que F. Supongamos que en la lectura
se produce un error simple en d5, es decir, escribimos un 1 y hemos leído un 0, el valor de F’ será:
Función F’:
Comporador COMP:
C’’8 = C8 ⊕ C’8 = 0 ⊕ 1 = 1
C’’4 = C4 ⊕ C’4 = 1 ⊕ 1 = 0
C’’2 = C2 ⊕ C’2 = 1 ⊕ 1 = 0
C’’1 = C1 ⊕ C’1 = 1 ⊕ 0 = 1
17
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
C’’8 C’’4 C’’2 C’’1 = 1 0 0 1 = 9 (decimal) Î el bit m9 del mensaje ha fallado, es decir el bit de
datos d5
Para corregir el error decodificamos su posición, es decir, los Ci’’ (decodificador DEC) con lo que
disponemos de una línea individual para cada posible posición de error.
Con cada una de estas líneas podemos controlar la inversión o no de la correspondiente línea de
datos di’ leída de memoria según que se haya producido o no error en dicha línea. Para la inversión
controlada de estas líneas utilizamos una etapa de puertas XOR.
d1
d2
d3 F
d4
d5
d6
d7
d8
Direcciones
1001 1101 Ausencia de error
0
1
error
2
R/W 1000 1101 0111 3
4
5
1
6
1 7
1 1 DEC 8
0
0 9
COMP 0 10
1
Corrector
11
0
12
13
F’ 1
1 14
0
1
1 2
15 3
4 d1
5 d2
6 d3
7 d4
d5
0
d6
1
d7
2
d8
3
4
5
6
7
18
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
F’ = F Corrector
D8 = dec12 ⊕ d’8
F D7 = dec11 ⊕ d’7
C8 = d8 ⊕d7 ⊕d6 ⊕d5 D6 = dec10 ⊕ d’6
C4 = d8 ⊕d4 ⊕d3 ⊕d2 D5 = dec9 ⊕ d’5
C2 = d7 ⊕d6 ⊕d4 ⊕d3 ⊕d1 D4 = dec7 ⊕ d’4
C1 = d7 ⊕d5 ⊕d4 ⊕d2 ⊕d1
D3 = dec6 ⊕ d’3
D2 = dec5 ⊕ d’2
D1 = dec3 ⊕ d’1
1. Memoria entrelazada.
Para aumentar el ancho de banda de una memoria principal se puede descomponer en
módulos con accesos independientes, de manera que se pueda acceder simultáneamente a una
palabra de cada uno de los módulos.
Me m o ria p rin c ip a l
R. Dir eccion es R. Dir eccion es R. Direccion es
Existen diferentes elementos de diseño en una memoria modular, siendo el orden del
entrelazado de las direcciones uno de los principales. Básicamente existen dos tipos de
entrelazado para el espacio de direcciones de una memoria: entrelazado de orden superior y
entrelazado de orden inferior.
19
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Mp = 2n palabras
Se divide Mp en 2m módulos de 2n-m palabras
m bits (n – m) bits
En tre lazado de orde n s u pe rior
Módulo Dirección dentro del módulo
D
E
C
20
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
E n t re la z a d o d e o r d e n i n fe ri o r
Dir ección den t r o d el m ódu lo Módu lo
R. Da t os R. Da t os R. Da t os
D
E
C
21
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
(n – m ) bit s m bit s
Org a n i z a c i ó n S
Dir ección den t r o del m ódu lo Módu lo
R. Da t os R. Da t os R. Da t os
MU X Con t r ol
S a lid a
Módulos
Salida
m m
(p1,M0) (p1,M1)...... (p1,M2 -1) (p1,M0) (p1,M1)...... (p1,M2 -1) tiempo
22
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Org a n i z a c i ó n C
D
E
C
23
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
100.000 CPU
10.000
55% Diferencia
1000
progresiva
100
10 Memoria
35% 7% (DRAM)
0.1
1980 1987 2000
64 KB (DRAM)
La memoria caché es una memoria pequeña y rápida que se interpone entre la CPU y la memoria principal
para que el conjunto opere a mayor velocidad. Para ello es necesario mantener en la caché aquellas zonas de la
memoria principal con mayor probabilidad de ser referenciadas. Esto es posible gracias a la propiedad de localidad
de referencia de los programas.
Localidad de referencia
Los programas manifiestan una propiedad que se explota en el diseño del sistema de gestión de memoria de
los computadores en general y de la memoria caché en particular, la localidad de referencias: los programas tienden
a reutilizar los datos e instrucciones que utilizaron recientemente. Una regla empírica que se suele cumplir en la
mayoría de los programas revela que gastan el 90% de su tiempo de ejecución sobre sólo el 10% de su código. Una
consecuencia de la localidad de referencia es que se puede predecir con razonable precisión las instrucciones y datos
que el programa utilizará en el futuro cercano a partir del conocimiento de los accesos a memoria realizados en el
pasado reciente. La localidad de referencia se manifiesta en una doble dimensión: temporal y espacial.
Localidad temporal: las palabras de memoria accedidas recientemente tienen una alta probabilidad de
volver a ser accedidas en el futuro cercano. La localidad temporal de los programas viene motivada principalmente
por la existencia de bucles.
1
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Localidad espacial: las palabras próximas en el espacio de memoria a las recientemente referenciadas
tienen una alta probabilidad de ser también referenciadas en el futuro cercano. Es decir, que las palabras próximas
en memoria tienden a ser referenciadas juntas en el tiempo. La localidad espacial viene motivada fundamentalmente
por la linealidad de los programas (secuenciamiento lineal de las instrucciones) y el acceso a las estructuras de datos
regulares.
CPU
palabras
Memoria cache
(Mc)
bloques (líneas)
Memmoria principal
Mp
Para implementar el mecanismo de actualización de la caché con los datos con mayor probabilidad de ser
refernciados se divide la memoria principal en bloques de un número de bytes (4,8,16 etc.) y la caché en marcos de
bloque o líneas de igual tamaño. El bloque será, pues, la unidad de intercambio de información entre la memoria
principal y la caché, mientras que entre la caché y la CPU sigue siendo la palabra. El directorio contiene la
información de qué bloques de Mp se encuentran ubicados en Mc
Dirección Mp
de memoria Directorio Mc
0
1
2 Bloque 0 Marco de
Bloque 0
n
Bloque 1
direccion
Marco de
Bloque m -1
2
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Mc <-- CPU(DF)
Recibe la
Dirección Física
(DF) de la CPU
si (acierto)
Cuando una dirección se presenta en el sistema caché pueden ocurrir dos cosas:
• Acierto de caché (hit): el contenido de la dirección se encuentre en un bloque ubicado en una línea de
la caché.
• Fallo de caché (miss): el contenido de la dirección no se encuentre en ningún bloque ubicado en alguna
línea de la caché.
Si en la ejecución de un programa se realizan Nr referencias a memoria, de las que Na son aciertos caché y Nf fallos
caché, se definen los siguientes valores:
Evidentemente se cumple: Ta = 1 - Tf
2. Elementos de diseño.
A la hora de diseñar un sistema de memoria caché hay que elegir entre una serie de alternativas para cada uno de los
siguientes elementos de diseño:
• Función de correspondencia: determina las posibles líneas de la caché (marcos de bloque) en las que se
puede ubicar un determinado bloque de la memoria principal que ha sido referenciado por el programa y
hay que llevarlo a memoria caché.
• Algoritmo de sustitución: determina el bloque que hay que desubicar de una línea de la caché cuando ésta
está llena y hay que ubicar un nuevo bloque.
3
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
• Política de escritura: determina la forma de mantener la coherencia entre memoria caché y memoria
principal cuando se realizan modificaciones (escrituras)
• Política de búsqueda de bloques: determina la causa que desencadena la llevada de un bloque a la caché
(normalmente un fallo en la referencia)
Mc Mc Mc
B0 B0
B1 B1 C0
B2 B2
B3 B3 C1
B4
B4
B5 B5 C2
B6
B6
B7 B7
C3
4
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
bloque
s-r r w
2w palabras/bloque
2s bloques de Mp
2r marcos de bloque en Mc (2r = m)
2s-r veces contiene Mp a Mc
Los s - r bits de la etiqueta diferenciarán a cada uno de los bloques de Mp que pueden ubicarse en el
mismo marco de bloque de Mc. El directorio caché en correspondencia directa contendrá un registro de s - r bits por
cada marco de bloque para contener la etiqueta del bloque ubicado en ese momento en dicho marco.
El mecanismo de obtención del contenido de una dirección física en cachés con correspondencia directa
podemos resumirlo en el siguiente esquema:
Mp
s+w Memoria Cache
dato
etiqueta dato
s-r
dato
MBi s
Comparador dato
w
dato
fallo acierto Bj
w
etiqueta dato
dato
MBm-1
dato
B2s-1
dato
5
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Ejemplo: para los tres tipos de correspondencia utilizaremos los siguientes datos:
Una Mc de correspondencia directa se puede implementar sobre una RAM con longitud de palabra suficiente
para ubicar un bloque y los bits de etiqueta (directorio), tal como se muestra en la siguiente figura:
etiqueta p0 p1 p2 p3 MB0
etiqueta MBm-2
etiqueta MBm-1
Comparador
MUX
acierto
fallo
En una operación de lectura se lee la palabra completa de la RAM, es decir, la línea y la etiqueta.
Si la etiqueta leída coincide con la procedente de la dirección física, significa que la línea contiene la
palabra de Mp referenciada por dicha dirección física: se produce un acierto de caché. En este caso con los w bits de
palabra se selecciona la palabra referenciada dentro de la línea.
Si no coinciden las etiquetas, significa que Mc no contiene el bloque de Mp al que pertenece la palabra
referenciada, por lo que se produce un fallo de caché.
Parte de un posible contenido de Mc en un instante determinado para el ejemplo anterior podría ser el
siguiente:
6
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
0000 13 57 92 46
0004 00 00 00 00 Mc
64KB
11 11 11 11
33 33 33 33 00 13 57 92 46 MB0
00
FF 24 56 78 99 MB1
16 22 33 44 55 MB2
FFF8 00 33 33 33 33 MB3
FFFC .
.
.
13 67 988 8
.
0000 24 24 25 26
.
0004 22 33 44 55
.
16
16MB 16 55 55 55 55 .MB214-1
64KB
FFF8
FFFC 55 55 55 55
0000 13 12 34 56
0004 24 56 78 99
FF
64KB
FFF8
FFFC
Se ha dibujado Mp divididida en zonas consecutivas de tamaño 64 KB (igual que el tamaño de Mc) para facilitar la
correspondencia de los bloques de Mp y los marcos de bloque de Mc.
etiqueta palabra
s w
2s bloques de Mp
2r marcos de bloque de Mc
En este caso la etiqueta tendrá s bits para poder diferenciar a cada uno de los bloques de Mp (todos) que
pueden ubicarse en el mismo marco de bloque de Mc. El directorio caché en correspondencia asociativa contendrá,
pues, un registro de s bits por cada marco de bloque para contener la etiqueta del bloque ubicado en ese momento en
dicho marco.
El mecanismo de obtención del contenido de una dirección física en cachés con correspondencia asociativa
podemos resumirlo en el siguiente esquema:
7
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Mp
s+w Memoria Cache
etiqueta palabra
MB0 B0
s w
MBi
Bj
MBm-1
w
Comparador
acierto
fallo
El directorio de una Mc de correspondencia asociativa se puede implementar con una memoria asociativa con
tantas palabras como líneas tenga Mc. Las líneas se soportan sobre un array de memoria con longitud de palabra
suficiente para ubicar un bloque, tal como se muestra en la siguiente figura:
Etiquetas Datos
MB0
MB1
Memoria
Asociativa
MBm-2
MBm-1
acierto/fallo
MUX
La memoria asociativa contiene las direcciones de todos los bloques de Mp ubicados en cada momento en
Mc. Opera realizando una comparación simultánea de su contenido con el campo de etiqueta de la dirección física.
8
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
bloque
s-d d w
En este caso la etiqueta tendrá s – d bits para poder diferenciar a cada uno de los bloques de Mp que
pueden ubicarse en el mismo conjunto de Mc. El directorio caché en correspondencia asociativa por conjuntos
contendrá, pues, un registro de s - d bits por cada conjunto de líneas de Mc.
El esquema lógico de acceso a una caché de correspondencia asociativa por conjuntos se muestra en la siguiente
figura:
Mp
s+w Memoria Cache
Bj
w
Comparador
Cv-1
fallo
acierto
9
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Una Mc de correspondencia asociativa por conjuntos de v vías se puede implementar como k módulos de
correspondencia directa en paralelo cada uno con v líneas. Los conjuntos lo formarían las líneas que ocupan idéntica
posición en cada módulo:
C0
C1
Comparador
MUX
C0
C1
Comparador
MUX
Si dibujamos Mp divididida en zonas consecutivas de tamaño 32 KB (con tantos bloques como conjuntos
tiene Mc) para facilitar la correspondencia de los bloques de Mp y los marcos de bloque de Mc, podremos
representar fácilmente parte de un posible contenido de Mc con correspondencia asociativa por conjuntos de dos
vías en un instante determinado para el ejemplo anterior.
10
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
7FF8
7FFC
13 67 98 88 001 13 67 98 88 000 13 57 92 46 C0
0000 C1
0004 24 24 25 26 1FF 24 56 78 99 001 24 24 25 26
22 33 44 55 C2
001
32KB
7FF8
7FFC 55 55 55 55
001 55 55 55 55 1FF 55 55 55 55
0000 13 12 34 56
0004 24 56 78 99
1FF 32KB
7FF8
7FFC 55 55 55 55
Las tres funciones de correspondencia se pueden ver en realidad como una sola, la asociativa por conjunto,
siendo las otras dos correspondencias casos extremos de ella:
conjunto/línea
aumenta la
asociatividad
asociativa
directa
11
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Si se referencia MBi
∀ MBk : contador(MBk) ≤ contador(MBi) ==> contador(MBk) := contado(MBk) + 1
contador(MBi) = 0
• Para una memoria asociativa de dos vías basta con añadir un bit de uso a cada marco de bloque.
Cuando un marco de bloque es referenciado su bit de uso se pone a 1 y el del marco del mismo
conjunto a 0. Cuando hay que sustituir se elige el marco de bloque con bit de uso igual a 0.
• Se sustituye aquel bloque que ha estado más tiempo en la caché (independientemente de sus
referencias)
• Se puede implementar con una cola
Buffer
de Mp
escritura
12
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
1) Por demanda
• Se lleva un bloque a Mc cuando se referencia desde la CPU alguna palabra del bloque y éste no se
encuentra en Mc
2) Anticipativa (prebúsqueda)
• Prebúsqueda siempre: la primera vez que se referencia el bloque Bi se busca también Bi+1
• Prebúsqueda por fallo: cuando se produce un fallo al acceder al bloque Bi se buscan los bloques Bi y
Bi+1
• Capacidad: producidos cuando Mc no puede contener todos los bloques del programa
• Conflicto: (en correspondencia directa o asociativa por conjuntos) producidos por la necesidad de
ubicar un bloque en un conjunto lleno cuando Mc no está completa.
Tacceso = Na * Tc + Nf * Tp (1)
donde:
Na es el número de referencias con acierto
Nf es el número de referencias con fallo
Tc es el tiempo de acceso a una palabra de Mc
Tp es el tiempo de acceso a un bloque de Mp
13
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
• Al aumentar el tamaño de bloque disminuye la tasa de fallos iniciales (forzosos) porque mejora la localidad
espacial.
• Sin embargo con el aumento del tamaño de bloque aumenta la penalización de fallos, ya que el tiempo de
lectura y transmisión serán mayores si los bloques son mayores.
b) Aumento de la asociatividad
• Experimentalmente se comprueba que una caché asociativa por conjuntos de 8 vías es tan eficiente (tasa de
fallos) como una caché completamente asociativa.
Tf Mc
1K
15%
10% 4K
• Una caché de correspondencia directa de tamaño N tiene aproximadamente la misma tasa de fallos que una
asociativa por conjuntos de 2 vías de tamaño N/2
• Al aumentar la asociatividad se incrementa el ciclo de reloj y por tanto Tacierto
c) Utilización de una caché de víctimas
14
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
• Se añade una pequeña caché completamente asociativa entre Mc y su camino hacia Mp para contener sólo los
bloques descartados (sustituidos) por un fallo (víctimas)
• Reducen los fallos de conflicto fundamentalmente en cachés pequeñas con correspondencia directa.
Cache de víctima
Mp
Mc
d) Cachés pseudoasociativas
Se trata de cachés de correspondencia directa que con una ligera modificación se pueden comportar como
asociativas. Para ello se permite que un bloque de Mp se pueda ubicar en dos (pseudoasociativa de 2 vías) marcos
de bloque de Mc, el que le corresponde (por la correspondencia directa) y el que resulta de conmutar el bit más
significativo de la dirección del bloque, tal como se indica en el siguiente esquema:
0 X X...........X
conjunto
pseudoasociativo
1 X X...........X
Comparador
MUX
acierto
fallo
15
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Tasa_fallospseudo = Tasa_fallos2vías
Penalización_fallospseudo = Penalización_fallosdirecta
Tasa_fallos2vías *Penalización_fallosdirecta
Ejemplo:
Tamaño (caché) grado asociatividad tasa de fallos penalización fallo Tiempo de acierto
2K 1 0,098 50 1
2K 2 0,076 - -
• La prebúsqueda de instrucciones y/o datos antes de ser demandados por la caché disminuye la tasa de
fallos.
• Las instrucciones o datos prebuscados son llevados directamente a la caché o a un buffer externo que es
accedido a mayor velocidad que Mp
Buffer
de
Mc Prebúsqueda
Mp
• El Alpha AXP 21064 pre-busca dos bloques cuando ocurre un fallo, el que contiene la palabra causante del
fallo y el siguiente. El primero lo coloca en MC y el segundo en el buffer de prebúsqueda
16
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
• Utiliza instrucciones explícitas de prebúsqueda del tipo prefetch(dato) que el compilador utiliza para optimizar
los programas después de realizar un análisis de sus sentencias.
• La prebúsqueda se realiza al tiempo que el procesador continúa la ejecución del programa, es decir, la
prebúsqueda se hace en paralelo con la ejecución de las instrucciones.
• Los bucles son las construcciones más apropiadas para que el compilador genere prebúsqueda
Ejemplo
for (i = 0; i < 3; i = i + 1)
for (j = 0; j < 100; j = j + 1)
a[i][j] = b[j][0] * b[j+1][0];
Cada elemento de los arrays a[i][j] y b[j][j] ocupan 8 bytes (doble precisión) y están dispuestos en
memoria en orden ascendente de sus índices, es decir:
a[0][0] b[0][0]
a[0][1] b[0][1]
a[0][2] b[0][2]
........ .........
a[0][99] b[0][99]
a[1][0] b[1][0]
a[1][1] b[1][1]
a[1][2] b[1][2]
........ .........
a[1][99] b[1][99]
a[2][0] b[2][0]
a[2][1] b[2][1]
a[2][2] b[2][2]
........ .........
a[2][99] b[2][99]
Cada 2 elementos consecutivos ocupan un bloque, por lo que a[ ][ ] se beneficiará de la localidad espacial:
los valores pares de j producirán fallos (forzosos: primera lectura) y los impares aciertos (puesto que se llevan a Mc
en los mismos bloques que los pares). Por tanto, teniendo en cuenta que tenemos 3 filas y 100 columnas, el número
de fallos será (3 * 100)/2 = 150.
El array b[ ][ ] no se beneficia de la localidad espacial ya que los accesos no se realizan en el orden en que
están almacenados sus elementos. En cambio se beneficiará dos veces de la localidad temporal ya que se accede a
los mismos elementos para cada iteración de i. Además, cada iteración de j usa los mismos valores de b[ ][ ] que la
iteración anterior. Ignorando los posibles fallos por conflicto, el número de fallos en el acceso a b serán 101, es
decir, 1 para b[0][0] y 100 para b[1][0] hasta b[100][0]. En la 1ª iteración se producirán dos fallos: b[0][0] y
b[1][0]; en la 2ª uno: b[2][0], puesto que b[1][0] ya está en Mc; en la última uno: b[100][0].
17
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Mc
iteraciones
for (i = 1; i < 3; i = i + 1)
for (j = 0; j < 100; j = j + 1)
prefetch (a[i][j+6]);
a[i][j] = b[j][0] * b[j+1][0];
Se ha descompuesto el bucle en dos, el primero (iteración para i = 0) prebusca a partir de b[6][0] y a[0][6]:
18
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Mc
prebusqueda fallos
iteraciones
a[0][7] b[0][7]
b[2][0] i= 0, j= 1
b[2][1]
a[0][2] b[3][0] i= 0, j= 2
a[0][3] b[3][1]
b[4][0] i= 0, j= 3
b[4][1]
a[0][4] b[5][0] i= 0, j= 4
a[0][5] b[5][1]
3 fallos 1 + 5 = 6 fallos
a[0][99] b[99][0]
i= 99 j= 99
En el segundo bucle sólo se prebusca a[1][6]... a[1][99], a[2][6]... a[2][99] puesto que todo el array b[i][j]
ya ha sido prebuscado en el primer bucle y se halla en Mc. E el número de fallos en estas dos iteraciones de i será
2*3 = 6. Luego en total solo se producen 15 fallos. El costo de evitar 236 fallos de cachés es ejecutar 400
instrucciones de prebúsqueda.
• Fusión de arrays
Se sustituyen varios arrays de igual tamaño por un único array de elementos estructurados. La
transformación aumenta la localidad espacial si el programa referencia localmente las componentes de
igual índice de los aarrays originales.
Ejemplo:
19
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
val array_fundido
key
La transformación mejora la localidad espacial de los elementos de los dos arrays originales.
• Fusión de bucles
La transformación mejora la localidad temporal, ya que las referencias a a[][] y c[][] en el primer bucle
del programa original se hacen separadas en el tiempo a las referencias a a[][] y c[][] del segundo bucle. En
cambio en el programa transformado estas referencias se hacen para los mismos valores de los índices en las 2
expresiones consecutivas.
• Intercambio de bucles
20
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
x[0][0]
iteración 1 iteración 1
x[0][1]
iteración 101 iteración 2
x[0][2]
x[0][4999]
x[1][4999]
x[99][2]
x[99][4999]
iteración 500000 iteración 500000
• Descomposición en bloques
• Reduce la tasa de fallos aumentando la localidad temporal
• En lugar de operar sobre filas o columnas completas de un array los algoritmos de descomposición en
bloques operan sobre submatrices o bloques
• El objetivo es maximizar los accesos a los datos cargados en la caché antes de ser reemplazados
Ejemplo: multiplicación de matrices
for (i = 1; i < N; i = i + 1)
for (j = 0; j < N; j = j + 1)
{ r = 0;
for (k = 0; k < N; k = k + 1){
r = r + Y[i][k] *Z[k][j];};
X[i][j] = r;
};
21
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
X00 X01 X02 X03 X04 X05 Y00 Y01 Y02 Y03 Y04 Y05 Z00 Z01 Z02 Z03 Z04 Z05
X10 X11 X12 X03 X14 X15 Y10 Y11 Y12 Y13 Y14 Y15 Z10 Z11 Z12 Z13 Z14 Z15
X20 X21 X22 X23 X24 X25 Y20 Y21 Y22 Y23 Y24 Y25 Z20 Z21 Z22 Z23 Z24 Z25
X30 X31 X32 X33 X34 X35 Y30 Y31 Y32 Y33 Y34 Y35 Z30 Z31 Z32 Z33 Z34 Z35
X40 X41 X42 X43 X44 X45 Y40 Y41 Y42 Y43 Y44 Y45 Z40 Z41 Z42 Z43 Z44 Z45
X50 X51 X52 X53 X 54 X55 Y50 Y51 Y52 Y53 Y 54 Y55 Z50 Z51 Z52 Z53 Z54 Z55
Programa transformado:
Este programa va calculando parcialmente los valores de x[][] para que los bloques de elementos de Y[][] y Z[][]
sean utilizados totalmente cuando se llevan a la caché, aumentando su localidad temporal:
22
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Mc Buffer de Escritura Mp
512
<R3> 3
512 / 1024
2
1024
Cuando se ejecuta (1) se lleva <R3> al buffer de escritura y a la línea de Mc a la que pertenece la posición
512 (supuesto acierto de escritura, es decir, el bloque al que pertenece 512 se encuentra en Mc).
Cuando se ejecuta (2) se produce un fallo de lectura y se sustituye en Mc el bloque al que pertenece 512
por el bloque al que pertenece 1024
Cuando se ejecuta (3) se vuelve a producir un fallo de lectura para llevar de nuevo el bloque al que
pertenece 512 a Mc, pero es posible que éste no esté actualizado por el efecto de (1) si aún el contenido del buffer
no se ha escrito en Mp
1) Retrasando el servicio del fallo de lectura producido por (3) hasta que el buffer esté vacío (todo su
contenido se haya reflejado en Mp). Esta solución penaliza bastante los fallos de lectura, pues los datos empíricos
demuestran que la espera sistemática a que el buffer se vacíe para servir un fallo e lectura puede penalizar estos
fallos por un factor de 1.5. Por ello es recomendable dar prioridad a la lectura (es mucho más frecuente que la
escritura) adoptando la segunda alternativa.
2) Incorporar al proceso asociado al fallo de lectura producido por (3) la comprobación de si el buffer
contiene la posición 512, y continuar si el resultado es falso.
También podemos ver esta alternativa de diseño como una forma de economizar información de directorio
asociando una sola etiqueta a un grupo de bloques, e indicando con un bit particular asociado a cada bloque (bit de
validez) su estado de actualización cuando el grupo está en Mc. En la siguiente figura se muestra un esquema de
esta alternativa de diseño:
23
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Comparado
CPU
Mc (L1)
Mc (L2)
Mp
24
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Tasa_fallos_local ≥ Tasa_fallos_global
Y en particular:
Tasa_fallos_localN1 = Tasa_fallos_globalN1
Tasa_fallos_localN2 > Tasa_fallos_globalN2
Ejemplo:
1000 referencias a un sistema de cahé de dos niveles
40 fallos se producen en N1
20 fallos se producen en N2
• También hace posible su incorporación al chip de la CPU, eliminando el conexionado externo y por tanto
el tiempo de acceso desde la CPU
Los aciertos de lectura son más rápidos que los de escritura, entre otros motivos porque en los primeros se
puede leer el dato de Mc al tiempo que se comprueba si su etiqueta coincide con la de la dirección física. Si no
coincide se ignora el dato leído. Esto no es posible en las escrituras, pero sí podemos simultanear la escritura de un
dato con la comparación de la etiqueta del siguiente. Es decir, segmentar (pipe-line) la escritura sobre Mc. De esta
forma se aceleran los aciertos de escritura.
25
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
1. Gestión de memoria.
2. Memoria virtual.
3. Memoria virtual paginada.
4. Memoria virtual segmentada.
5. Ejemplos
1. Gestión de memoria
El sistema de memoria virtual de los actuales computadores surgió para liberar al
programador de una serie de tareas relacionadas con el uso que los programas debían
realizar con la memoria. La memoria virtual automatiza la gestión entre los dos niveles
principales de la jerarquía de memoria: memoria principal y disco. Antes de entrar en los
mecanismos específicos de la memoria virtual revisaremos una serie de funciones que
deben incorporarse en la gestión de memoria.
Solapamiento (overlay)
El tamaño de la memoria principal disponible en los computadores ha aumentado
de forma sostenida desde sus orígenes. Sin embargo, el tamaño de los programas ha
crecido más rápidamente, por lo que la necesidad de ejecutar programas que no cabían en
la memoria principal ha sido una constante en la historia de los computadores. Una forma
de superar esta limitación es el uso de la técnica de solapamiento (overlay).
Memoria principal
Disco M1
M1 M2 M3 M4
M2
e/s
1
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Reubicación
En sistemas con multiprogramación se necesita que varios programas residan
simultáneamente en memoria. El tiempo de CPU se va distribuyendo entre ellos de
acuerdo a una política de prioridades determinada. La ubicación en memoria de los
programas no se conoce en tiempo de compilación, por lo que no se pueden generar
direcciones absolutas. Para conseguir una asignación dinámica de memoria en tiempo de
ejecución se utilizan registros de reubicación. La dirección efectiva se obtiene sumando a la
dirección generada por el compilador el contenido del registro de reubicación asignado al
programa.
Paginación
La paginación también surgió de la necesidad de mantener más de un programa
residente en memoria cuando la capacidad de ésta es inferior a la suma de los tamaños
de los programas. Se trata de un mecanismo automático de solapamiento múltiple que
practica el Sistema Operativo para hacer posible la multiprogramación. El espacio de
memoria principal se divide en bloques de tamaño fijo denominados páginas. Los
programas se dividen también en páginas y residen en el disco. El Sistema Operativo se
encarga de asignar páginas físicas a los programas en ejecución (multiprogramación). De
esta forma el tiempo de CPU puede distribuirse entre los programas residentes.
Protección
Un papel importante de la gestión de memoria es la protección. Si varios programas
comparten la memoria principal debe asegurarse que ninguno de ellos pueda modificar el
espacio de memoria de los demás. Como casi todos los lenguajes permiten el uso de
punteros dinámicos, los test en tiempo de compilación no son suficientes para garantizar
la protección. Esta debe mantenerla en tiempo de ejecución el sistema de gestión de
memoria (MMU)
Compartición
Esta función parece estar en contradicción con la anterior. Sin embargo, con
frecuencia los programas de un sistema multiprogramado deben poder compartir y
actualizar información, por ejemplo, un sistema de bases de datos. Además, no es
necesario tener varias copias de una rutina si se permite que todos los programas accedan
a una misma copia.
2. Memoria virtual
El sistema de memoria virtual implementa todas las funciones anteriores de forma
integrada.
2
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
CPU
Número de Página Virtual (NPV) Desplaz. Página (DP) Dirección Virtual (DV)
v
Memoria virtual
Sumador
Página 2
Tabla de Páginas
Página 3
control pv 0 pag. fí sica f-1 ACIERTO
Página 4 control pv 1 pag. fí sica 2
control pv 2 pag. fí sica 1
Dirección Física (DF)
Página 5
Página 1
Página 2
pv v-1
2w
v-3 páginas
Página2 Memoria de Disco
v-2
Página f-2
Página2
Página f-1
Página2 v-1
Tanto la memoria principal como la memoria del disco se dividen en páginas de igual
tamaño. El número de páginas de la memoria virtual en general es mayor que el número de
páginas disponibles de la memoria física. Por este motivo, en cada momento sólo las copias
de un conjunto de páginas virtuales del programa residen en la memoria física. Este
conjunto recibe el nombre de conjunto de trabajo o conjunto activo, y resulta relativamente
estable a lo largo del tiempo, debido a la localidad referencial que manifiestan los
programas. Esta es la clave del buen funcionamiento de la memoria virtual, al igual que
ocurría con la memoria cache.
Las DVs generadas por la CPU se traducen a DFs con la ayuda de una Tabla de
Páginas (TP). Esta tabla contiene tantas entradas como páginas existen en la MV, y la
posición en la tabla de una entrada correspondiente a una página virtual concreta coincide
con su NPV. Cada entrada contiene un primer campo de bits de control, de los que por el
3
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
momento haremos referencia tan sólo a uno, el bit de presencia (P). Si este bit está activo
(por ejemplo a 1) significa que la página virtual correspondiente a esa entrada está presente
en la MF, y en este caso el segundo campo de la entrada contiene el correspondiente NPF.
Si el bit P está inactivo (por ejemplo a 0) significa que la correspondiente página virtual no
está en la MF, sino en el disco. En este caso el segundo campo de la entrada apunta a la
dirección del disco donde se encuentra la página virtual. Como en un momento se pueden
estar ejecutando más de un programa (multiprogramación o multiusuario) existirán más de
una TP, una para cada programa (proceso) activo. Por ello, el acceso a la TP se realiza con la
ayuda de un registro base de la tabla de páginas (RBTP) asociado a cada programa.
Como se muestra en la siguiente figura, existen otros bits que controlan los derechos
de acceso a la página: lectura (R), escritura (W) y ejecución (X), este último sólo para
páginas de código. También suele existir un bit que indica si la página ha sido modificada
(datos) y necesita escribirse en disco cuando sea sustituida. En general, los demás bits de
control dependen de cada procesador.
Cada programa (proceso) puede ocupar una gran cantidad de memoria virtual. Por
ejemplo, en la arquitectura VAX, cada proceso puede tener hasta 231 = 2 GBytes de
memoria virtual. Utilizando páginas de 29 = 512 bytes, eso significa que se necesitan tablas
de páginas de 222 entradas por proceso. La cantidad de memoria dedicada sólo a tablas de
páginas podría ser inaceptablemente alta.
4
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Dirección Virtual
Nivel 1 Nivel 2 Nivel 3 Despla. Página
RBP
Tabla Paginas N1
+
Tabla Paginas N3
Entrada TP +
Entrada TP
Dirección Física
Número de página física Despla. Página
Se necesita, pues, una zona fija de la memoria física para las tablas,
independientemente del número de programas o páginas virtuales que se admitan.
5
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
técnica de dispersión da lugar a cadenas usualmente cortas, con uno o dos elementos. Esta
alternativa de TP se utiliza en el PowerPC.
Dirección Virtual
Nº Página Virtual Desplazamiento
Función de
Dispersión
NPF
Dirección Física
Nº Página Física Desplazamiento
Para evitar este inconveniente los esquemas de memoria virtual utilizan una cache
especial para los elementos de la TP, llamada usualmente buffer de traducción anticipada
(TLB, Translation Lookaside Buffer).
El TLB funciona lo mismo que una memoria cache, y contiene aquellas entradas de
la TP a las que se han accedido recientemente. Por el principio de localidad temporal, la
mayoría de las referencias a memoria corresponderán a posiciones incluidas en páginas
recientemente utilizadas. Por ese motivo, la mayoría de las referencias involucran a
entradas de la TP presentes en el TLB. Normalmente el TLB utiliza una correspondencia
totalmente asociativa, por lo que una entrada de la TP puede ubicarse en cualquier posición
del TLB
6
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Fallo de página
=
NPF DP
Violación de acceso
Dirección Física
Por tanto, la dirección virtual debe pasar primero por el TLB antes de que la
dirección física pueda acceder a la cache, lo que alarga el tiempo de acierto. Este
mecanismo se puede acelerar utilizando dos alternativas:
7
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
N PV DP
TLB
NPV NPF
Fallo de página
N PF DP
Memoria cache
etiqueta datos
etiqueta línea palabra
Comparador
MUX
acierto
fallo
Esto significa que el tamaño de la cache viene impuesto por el tamaño de la página y
el grado de asociatividad. Por ejemplo, si tenemos un tamaño de página de 1K, el DP tendrá
10 bits. Si el número de palabras por bloque es 8 (3 bits de palabra) quedarán 7 bits para el
campo de conjunto de la dirección física de la cache. Si la asociatividad fuese 1
(correspondencia directa) con esos 7 bits podríamos distinguir tan sólo entre 128 marcos de
bloque o líneas de la cache, lo que impondría un tamaño de cache de 128 x 8 = 1024 = 1K.
8
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Para aumentar este tamaño tendríamos que aumentar la asociatividad. Por ejemplo,
si el grado de asociatividad es 2, el tamaño de la cache sería de 2K. Cuando aumenta el
grado de asociatividad, también aumentan las comparaciones que debemos realizar con la
etiqueta obtenida del TLB, ya que se deben comparar con ella todas las etiquetas del
conjunto de la cache (tantas como vías)
La segunda alternativa de utilizar caches direccionadas virtualmente tiene la ventaja
de que en caso de acierto en la cache, no es necesario el proceso de traducción. Sin
embargo, esta alternativa tiene dos problemas fundamentales. El primero surge en las
conmutaciones de procesos. Cuando se cambia de proceso, la misma dirección virtual de
cada proceso referencia diferentes direcciones físicas, lo que exige que se limpie la cache y
esto supone una gran fuente de fallos forzosos. El segundo se origina porque es posible que
distintos procesos con diferentes direcciones virtuales se correspondan con la misma
dirección física (aliasing). Esto puede producir dos copias del mismo dato en una cache
virtual, lo que ocasiona problemas de inconsistencia si hay escrituras.
PID RWX N PV DP
(TLB)
= Fallo de página
=
N PF DP
• Aleatoria
9
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Elige una página aleatoriamente, sin mirar el número de referencias o el tiempo que la
página lleva en memoria principal. En general esta política tiene unos resultados
pobres, excepto en entornos donde donde existe poca localidad como en las bases de
datos.
• Optima (MIN)
Se trata de la mejor política posible: sustituir la página que vaya a tardar más tiempo en
ser referenciada en el futuro (Belady). Aunque esta política tiene el mínimo número
posible de fallos de página (de aquí el nombre de política MIN), no se puede llevar a la
práctica en tiempo real, y se utiliza como una referencia teórica para medir la eficiencia
de otras políticas en entornos experimentales.
10
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
11
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Tabla de segmentos
Reg. Tabla Segmentos
P NPF
P = bit de presencia
L = Longitud del segmento
NPF DP
Dirección Física
12
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Hay cuatro niveles de privilegio, desde el más protegido (nivel 0), al menos protegido
(nivel 3). El nivel de privilegio asociado a un segmento de datos constituye su clasificación;
mientras que el nivel de privilegio asociado a un segmento de programa constituye su
acreditación (clearance). Un programa en ejecución puede acceder a un segmento de datos
sólo si su nivel de acreditación es menor (tiene mayor privilegio) o igual (igual privilegio) que
el nivel de privilegio del segmento de datos.
La forma de utilizar los niveles de privilegio depende del diseño del sistema
operativo. Lo usual es que el nivel de privilegio 1 lo utilice la mayor parte del sistema
operativo, y el nivel 0 una pequeña parte del mismo, la dedicada a la gestión de memoria,
la protección y el control del acceso. Esto deja dos niveles para las aplicaciones. En muchos
sistemas, las aplicaciones utilizan el nivel 3, dejándose sin utilizar el nivel 2. Los
aplicaciones que implementan sus propios mecanismos de seguridad, como los sistemas de
gestión de bases de datos, suelen utilizar el nivel 2. Además de regular el acceso a los
segmentos de datos, el mecanismo de privilegio limita el uso de ciertas instrucciones. Por
ejemplo, las instrucciones que utilizan los registros de gestión de memoria, sólo pueden
ejecutarse desde el nivel 0; y las instrucciones de E/S sólo pueden ejecutarse en el nivel
13
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
determinado por el sistema operativo, que suele ser el nivel 1. El atributo de acceso al
segmento de datos especifica si se permiten accesos de lectura/ escritura o sólo de lectura.
Para los segmentos de programa, el atributo de acceso especifica si se trata de acceso de
lectura/ejecución o de sólo lectura.
32 0
Desplazamiento
Dirección
Virtual
15 2 1 0
Selector de segmento
• Base ( 32 bits): dirección de comienzo del segmento dentro del espacio lineal de
direcciones
• Límite ( 20 bits): tamaño del segmento
• Nivel de privilegio(DPL) (2 bits)
• Bit de segmento presente(P) ( 1 bit): indica si el segmento está disponible en
memoria principal
• Bit S (1 bit): determina si el segmento es del sistema
• Tipo (4 bits) determina el tipo de segmento e indica los atributos de acceso
• Bit de granularidad (G) (1 bit): indica si el campo límite se interpreta en unidades
Bytes o 4KBytes
• Bit D/B (1 bit): indica si los operandos y modos de direccionamiento son de 16 ó 32
bits (en segmentos de código)
14
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
con 4 Mbytes de capacidad y con su propia tabla de páginas. La flexibilidad del sistema de
gestión de memoria permite utilizar un directorio de páginas para todos los procesos, un
directorio de páginas para cada proceso o una combinación de ambos. El directorio de
páginas del proceso en curso está siempre en memoria principal. Las tablas de páginas
pueden estar en memoria virtual.
Segmento Desplazamiento
Dirección lineal
Tabla de
segmentos
Dirección
física
Directorio Tabla de
de páginas páginas
Memoria
principal
Segmentación Paginación
15
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
a) Dispositivos de presentación de datos. Son dispositivos con los que interactuan los usuarios, transportando
datos entre éstos y la máquina, por ejemplo, ratón, teclado, pantalla, impresora, etc.
b) Dispositivos de almacenamiento de datos. Son dispositivos que forman parte de la jerarquía de memoria
del computador. Interactúan de forma autónoma con la máquina, por ejemplo, discos magnéticos y cintas
magnéticas.
c) Dispositivos de comunicación con otros procesadores. Permiten la comunicación con procesadores
remotos a través de redes, por ejemplo, las redes de área local o global.
d) Dispositivos de adquisición de datos. Permiten la comunicación con sensores y actuadores que operan de
forma autónoma en el entorno del computador. Se utilizan en sistemas de control automático de procesos
por computador y suelen incorporar conversores de señales A/D y D/A.
25° C
CRT Cinta
Teclado Impresora Disco A/D-D/A
E/S
Memoria CPU
Los dispositivos de transporte y presentación de datos representan una carga muy baja de trabajo para
el procesador comparados con los dispositivos de almacenamiento. La siguiente tabla muestra las velocidades
de transferencia típicas para diferentes dispositivos:
1
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Dispositivos Velocidad
Sensores 1 Bps – 1 KBps
Teclado 10 Bps
Línea de comunicaciones 30 Bps – 200 KBps
Pantalla (CRT) 2 KBps
Impresora de línea 1 – 5 KBps
Cinta (cartridge) 0.5 – 2 MBps
Disco 4.5 MBps
Cinta 3-6 MBps
Los gráficos requieren una gran capacidad de procesamiento de datos, hasta el punto que se han
diseñado procesadores de propósito especial para manejar sofisticadas representaciones gráficas. El
procesamiento de las imágenes gráficas puede requerir de 5 a 10 microprocesadores de alta velocidad.
El problema del vídeo es simplemente la animación de los problemas gráficos, ya que debe crearse
una nueva imagen cada 1/30 de segundo (33 milisegundos).
Los dispositivos periféricos que pueden conectarse a un computador para realizar entrada y salida de
información presentan, pues, las siguientes características:
Tienen formas de funcionamiento muy diferentes entre sí, debido a las diferentes funciones que
realizan y a los principios físicos en los que se basan.
La velocidad de transferencia de datos es también diferente entre sí y diferente de la presentada por la
CPU y la memoria.
Suelen utilizar datos con formatos y longitudes de palabra diferentes
No obstante estas diferencias, existen una serie de funciones básicas comunes a todo dispositivo de E/S:
La identificación del dispositivo se realiza con un decodicador de direcciones. El envío y la recepción de datos
tiene lugar a través de registros de entrada y salida de datos. Los circuitos de sincronización se manipulan por
medio de registros de estado y control. El siguiente esquema representa gráficamente estas funciones:
2
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
líneas de control
líneas de datos
líneas de direcciones
envio/
recepción
Registros de
estado y control
identificación Circuitos de
sincronización
Dispositivo periférico
Las tres funciones básicas se pueden realizar a través del bus del sistema que conecta la memoria y la CPU, o
bien se puede utilizar un bus específico para las operaciones de E/S. Estas alternativas se traducen en dos
formas de organización de los espacios de direcciones:
Unidad Unidad
CPU Memoria de E/S 1 de E/S n
3
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Unidad Unidad
CPU Memoria de E/S 1 de E/S n
CPU
Memoria
bus de E/S
4
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
8259
82
59
DISCO
Datos
Líneas Registro de datos Lógica de
de Datos interfaz con Estado
el dispositivo
externo Control
Registro de estado/control
Líneas de
dirección Datos
Lógica de
Líneas Lógica interfaz con Estado
de control de E/S el dispositivo
externo Control
Un módulo sencillo de E/S capaz de realizar la interfaz de un computador con una impresora podría
tener la estructura mostrada en la siguiente figura. El decodificador hace que el módulo se identifique (SEL*)
para A7 = 1, A6 = 0, A5 = 1, A4 = 1, A3 = 1,A2 = 1, A1 = 0, A0 = --, es decir, que ocupe las direcciones de
memoria: 10111100 y 10111101, la primera corresponderá a los registros de estado y control (A0 = 0), y la
segunda al registro de datos (A0 = 1). Los registros de estado y control pueden tener una única dirección
asociada porque el primero sólo se lee (RD*) y el segundo sólo se escribe (WR*) desde el bus.
5
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
...
D ATOS
A1
A0
OE*
CP U
RD * ES TAD O
CLK
WR* CON TR OL
B . D ATOS
Lógica Buffer
de
control
Transductor
Controlador de dispositivo
Datos
(desde y hacia el exterior)
La conexión con el módulo de E/S se realiza a través de señales de control, estado y datos. Es la parte
del controlador que omologa su comportamiento singular al esquema general de gestión de la E/S. Las señales
de control determinan la función que debe realizar el dispositivo. La lógica de control asociada al dispositivo
controla su operación en respuesta a las indicaciones del módulo de E/S. El transductor convierte las señales
eléctricas asociadas a los datos a otra forma de energía. Además, suele existir un buffer asociado al transductor
para almacenar temporalmente el dato que se transfiere entre el módulo de E/S y el dispositivo. En el tema 8
estudiaremos una serie de dispositivos periféricos particulares y sus controladores asociados.
6
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Analizaremos en este apartado el dialogo de señales que de forma general tiene lugar entre el módulo de
E/S y el controlador de dispositivo en una transmisión de datos.
• Salida
En el caso de un dispositivo de salida (o de e/s en operación de salida) las líneas básicas que intervienen
son las del bus de datos y dos de control: dato válido y dato aceptado. La primera indica al dispositivo la
validez del dato presente en el bus de datos, y es activada por el módulo de E/S cuando ha estabilizado el bus
de datos con el valor del dato a transmitir. La segunda la activa el dispositivo periférico en respuesta a la
lectura y procesamiento del dato, y como respuesta a la disponibilidad para aceptar un nuevo dato. En la
siguiente figura hemos representado en forma gráfica la evolución temporal de las señales en una operación de
salida
Salida
bus de datos
Módulo dato válido Dispositivo
de E/S periférico
dato aceptado
bus de datos
dato válido
dato aceptado
La anterior secuencia de acciones que realizan el módulo de E/S y el dispositivo periférico en una operación
de salida podemos también verlas en el siguiente diagrama:
• Entrada
7
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
En el caso de un dispositivo de entrada (o de e/s en operación de entrada) las líneas básicas que intervienen
son las del bus de datos y dos de control: petición de dato y dato aceptado. La primera solicita al dispositivo
un dato de entrada, y es activada por el módulo de E/S. La segunda la activa el dispositivo periférico cuando
ha generado el dato y su valor es estable en el bus de datos. Con la activación de esta señal el módulo de E/S
conoce la validez del dato en el bus y puede proceder a su carga en el registro de datos. En la siguiente figura
hemos representado en forma gráfica la evolución temporal de las señales en una operación de entrada
Entrada
bus de datos
Módulo dato válido Dispositivo
de E/S periférico
petición dato
petición dato
bus de datos
dato valido
La anterior secuencia de acciones que realizan el módulo de E/S y el dispositivo periférico en una operación
de entrada podemos también verlas en el siguiente diagrama:
8
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
El comportamiento de cada uno de estos mecanismos se resume en los dos siguientes organigramas:
Interrupción
Leer el estado E/S → CPU Leer el estado
del módulo del módulo
E/S → CPU
no no
¿estado indica ¿estado indica Error
orden realizada? orden realizada?
si si
no no
¿final? ¿final?
si si
9
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Los dos últimos inconvenientes podrían paliarse en parte limitando el tiempo de espera, como se muestra
en el siguiente organigrama:
no
no
¿estado indica ¿límite de tiempo?
orden realizada?
si
Otras
no operaciones
¿final? de E/S
si
Ratón:
Ciclos de reloj por segundo para la lectura = 30 X 400 = 12.000 ciclos por segundo
Porcentaje de ciclos de procesador consumidos en la lectura = 12 x 103 / 500 x 103 = 0,002 %
El resultado muestra que se podría utilizar E/S programada con el ratón, sin un impacto significativo en el
rendimiento del procesador
Disco flexible
10
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
La frecuencia a la que debe realizarse la lectura será: 50KB/seg / 2 byte/acceso por encuesta =
25 K acceso por lectura/ seg.
Ciclos por segundo para la lectura = 25K x 400
Porcentaje de ciclos de procesador consumidos en la lectura = 25 x 1000 x 400 / 500 x 106 = 2 %
Este tiempo es importante, pero se puede tolerar en un sistema de gama baja.
Disco duro
Hay que realizar lectura del dispositivo a una frecuencia que coincida con el ritmo al que llegarán los bloques
de 4 palabras, que es 250 K veces por segundo (4 MB por segundo / 16 bytes por transferencia). Por tanto:
Ciclos consumidos para lectura = 250 K x 400
Porcentaje de ciclos de procesador consumidos en la lectura = 100 x 106 / 500 x 106 = 20 %
Resultado que indica que una quinta parte del tiempo del procesador se consumirá en la lectura del dispositivo,
con lo que resulta claramente inaceptable
Módulo Dispositivo
de periférico
E/S
En cambio, la E/S paralela se utiliza para conectar módulos de E/S que se encuentran relativamente
cerca del dispositivo periférico. Utiliza un conjunto de líneas por las que se transmiten simultáneamente (en
paralelo) los bits del mensaje
Módulo Dispositivo
de periférico
E/S
11
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
1 0 1 1 0 0 1 0
reloj reloj
emisor receptor
En la siguiente figura se muestra que el reloj local del receptor muestrea la línea de transmisión en
instantes de tiempo correctos, es decir, dentro del intervalo de tiempo correspondiente a un bit (intervalo bit)
R. desplazamiento (R)
10110010
reloj
receptor
En cambio, si el reloj local del receptor tiene una frecuencia ligeramente inferior (mayor período),
como se muestra en la siguiente figura, a partir del cuarto intervalo bit la señal será muestreada incorrectamente
en el receptor.
12
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
R. desplazamiento (R)
10100100
reloj
receptor
Codificación
por nivel
Codificación
Manchester
Reloj
decodificado
E/S paralela
13
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Tema 9: Interrupciones
1. E/S por interrupción: gestión de interrupciones
2. Tipos de sistemas de interrupciones: prioridades
3. Enmascaramiento de interrupciones.
4. Anidamiento de interrupciones
5. Ejemplos
Programa principal
I1
I2
. señal de interrupción
.
.Ii
Ii+1 línea de interrupción
.
.
.In
Rutina de tratamiento
i1
i2
.
.
im
Podemos, pues, ver una interrupción como un salto a subrutina (rutina de tratamiento) ocasionado por una
señal externa, y no por una instrucción del programa. De esta forma se pueden eliminar los tiempos muertos de
consulta de la E/S programada
La implementación de un sistema de interrupciones implica introducir una fase de consulta de las líneas de
interrupción al final de la ejecución de cada instrucción. En un procesador sin sistema de interrupciones, se podría
conseguir un efecto similar introduciendo una instrucción de consulta y la correspondiente de salto sobre el valor de
la consulta, detrás de cada instrucción natural del programa. De esta forma se garantizaría la respuesta al dispositivo
de E/S en el momento que pasa a estado disponible, al tiempo que la CPU ejecuta instrucciones útiles del programa.
El precio a pagar sería el recargo introducido por la ejecución de las parejas de instrucciones de consulta y salto
introducidas detrás de cada instrucción útil del programa. Sería algo así como una E/S programada en la que en lugar
de preguntar en el mismo punto del programa por el estado del periférico, se replica la consulta por todo el programa,
intercalándose con la ejecución de las instrucciones útiles. Pues bien, un sistema de interrupciones podemos verlo
como la integración en hardware del supuesto software anterior, es decir, la integración de la consulta y posible salto
dentro de la ejecución de cada instrucción del repertorio.
1
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
El mecanismo de interrupción de un procesador tiene que implementar todas las medidas que hagan que se
pueda bifurcar a la rutina de tratamiento y recuperar el estado del programa interrumpido cuando la rutina finaliza su
ejecución. En el siguiente esquema se detallan las fases que tienen lugar en la atención a una interrupción producida
por algún dispositivo periférico:
petición de interrupción
1 programa 3 9 programa
2 4
5
rutina de tratamiento
6 7 8
(1) El programa en ejecución (CPU) activa el sistema de interrupciones utilizando instrucciones que operan (ponen a
1 y a 0) sobre el bit de capacitación de las interrupciones I del registro de estado (RE):
I C N Z
bit de interrupción
(2) Se produce la petición de interrupción por parte de algún dispositivo periférico en un instante de tiempo
impredecible para la CPU.
CPU
señal de interrupción
PC línea de interrupción (INT)
1 RE
(4) La CPU salva automáticamente el estado en la pila, es decir, el contador de programa (PC) y el registro de estado
(RE):
2
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
CPU Memoria
PC SP
PC
1 RE
1 RE
(5) La CPU obtiene la dirección de la rutina de tratamiento a partir del vector de interrupción (VI), que usualmente se
ubica en memoria.
CPU Memoria
PC vector de interrupción
dirección r.t.
1 RE
(6) La CPU descapacita las interrupciones (I = 0) para que durante la ejecución de la primera instrucción de la rutina
de tratamiento no se vuelva a detectar la misma interrupción y provoque un bucle infinito.
CPU
PC
0 RE
(8) Finaliza la rutina de tratamiento con la ejecución de la instrucción de retorno de interrupción (RTI), que restaura
automáticamente el estado de la CPU desde la pila y vuelve al programa interrumpido:
3
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
CPU
Memoria
PC
PC
1 RE
1 RE SP
(9) La CPU continúa la ejecución del programa interrumpido, quedando las interrupciones capacitadas
automáticamente al recuperarse el valor I = 1 del RE.
Interrupciones hardware
Interrupciones autovectorizadas: el vector de interrupción es fijo, una posición de memoria asociada a la línea de
interrupción.
El método usual de obtener la dirección de la rutina de tratamiento de la interrupción en ambos casos es a través
de la tabla de vectores de interrupción, tabla que contiene las direcciones de las rutinas de tratamiento de cada
interrupción.
4
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Memoria
d.r.t. interrupción 1
d.r.t. interrupción 2
Autovectorizadas
d.r.t. interrupción 3
vector de interrupción
d.r.t. interrupción i
Vectorizadas
d.r.t. interrupción N-1
d.r.t. interrupción N
CPU
E/S 1 E/S 2 E/S n
La OR-cableada en la línea de interrupción INT se realiza normalmente con tecnología de transistores con
colector abierto. Por ello normalmente la señal activa de interrupción es en baja.
5
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
+5Vcc
INT
La rutina general de tratamiento asociada a la línea de interrupción comienza su ejecución identificando por
encuesta el periférico causante de la interrupción, para bifurcar después a la rutina de tratamiento específica de dicho
periférico, en donde se realiza la operación de E/S propiamente dicha:
Programa
Eliminar fuente
de interrupción
interrupción
Leer estado de E/S n
RTI
Eliminar fuente
RTI de interrupción
RTI
6
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
+ prioridad -
La lógica interna del paso de la señal de reconocimiento por encadenamiento (daisy chain) para cada módulo se
representa en la siguiente figura:
INT
CPU
vector INT
INT RE
RINT
2.3 Prioridades
7
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Cuando dos o más dispositivos de E/S generan una petición de interrupción, el sistema de prioridades
determina la interrupción que se atiende en primer lugar.
Interrupciones no vectorizadas: la prioridad la establece el software de encuesta con el orden de recorrido de todos los
dispositivos de E/S salida conectados a una línea. Es decir, se establece por software.
Interrupciones vectorizadas: la prioridad la determina el orden de proximidad a la CPU establecido por la línea de
retorno de interrupción Es decir, se establece por hardware.
Cuando existen más de una línea de interrupción, la prioridad viene establecida por hardware en el diseño del
procesador:
INT1
INT2
.
prioridad
.
.
INTn
CPU
Aunque suele ser frecuente, para minimizar el número de pines del chip, que las diferentes líneas entren
codificadas a la CPU, siendo necesario el uso de un codificador externo:
INT1
INT1 INT2
INT2 INT3
. COD
.
.
INTm
m = log2 n INTn-1
INTn
CPU RINT (reconocimiento)
m
código reconocido
En estos casos suele existir una única señal de reconocimiento RINT, generándose por las líneas menos significativas
del bus de direcciones el código de la interrupción reconocida, que será la más prioritaria entre las que realizaron la
petición.
8
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
3. Enmascaramiento de interrupciones
El sistema de interrupciones de un procesador dispone en general de la posibilidad de ser inhibido, es decir,
impedir que las interrupciones sean atendidas por la CPU. Esta posibilidad hay que utilizarla en determinadas
ocasiones en las que por ningún concepto se puede interrumpir el programa en ejecución. Además de la inhibición
total del sistema, existe la posibilidad de enmascarar individualmente algunas de las líneas de interrupción utilizando
un registro de máscara:
CPU
RE I
INT 0
0
Unidad DEC INT 1
de Prioridad 1
Control
INT 2
1
INT 3
0
Registro de Máscara
La descapacitación de algunas interrupciones también se puede realizar a nivel local del propio módulo de
E/S, actuando sobre su registro de control.
A nivel software también se pueden inhibir las interrupciones producidas sobre una misma línea por
diferentes periféricos, en la fase de identificación de la rutina de tratamiento correspondiente.
4. Anidamiento de interrupciones
Un tema importante en un sistema de interrupciones es el de la capacidad de anidar interrupciones, es decir,
la posibilidad de interrumpir la rutina de tratamiento de una interrupción por la generación de otra interrupción. Tal
posibilidad viene determinada por el sistema de prioridades: "un dispositivo sólo puede interrumpir a otro cuando su
nivel de prioridad es mayor que el que se está atendiendo".
Programa Rutina INT2 Rutina INT4 Rutina INT7
9
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Para describir con más detalle la forma en que opera la combinación de las prioridades y el anidamiento en un sistema
de interrupciones, consideremos una CPU con tres líneas de interrupción: INT0, INT1, INT2, siendo la primera la más
prioritari, y la última la menos prioritaria. Supongamos que llegan tres peticiones de interrupción en el orden temporal
del siguiente esquema:
prioridad
CPU
INT0
INT1
prioridad
INT2
tiempo
La CPU dispone de tres bits en su registro de estado para permitir la inhibición de forma independiente cada línea:
Las interrupciones con menor prioridad no podrán interrumpir la rutina de tratamiento de una de mayor prioridad, por
lo que la secuencia de peticiones y servicios será la que aparece en el siguiente esquema:
dir1 INT0
dir1+1
INT1
dir
dir+1
d2 Rutina INT2
10
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
llega INT1 llega INT2 llega INT0 fin INT0 fin INT1 atiende INT2 fin INT2
dir1+1
011
Veremos como se puede transformar la línea IRQ en 8 líneas de interrupción diferentes. Para ello se
aprovecha el que cuando se produce una interrupción por esta línea y es atendida por la CPU, ésta accede a su vector
de interrupción que se encuentra en las direcciones FFF8 y FFF9, lo que significa que en el bus de direcciones
aparecerán estas direcciones. Sólo en respuesta a una interrupción por IRQ se generan estas direcciones en el bus, por
lo que podemos identificarla por hardware y descomponerla en 8 pares diferentes, una por cada línea nueva de
interrupción.
El esquema completo de un dispositivo que realiza esta conversión lo hemos representado en la siguiente
figura. El dispositivo se selecciona cuando se activa la señal CS, por lo que esta señal deberá generarse cuando en el
bus aparezcan las direcciones FFF8 y FFF9. Cuando eso ocurra, el dispositivo transformará las 4 líneas menos
significativas del bus de direcciones (A4,A3,A2,A1) en otras 4 (Z4,Z3,Z2.Z1) de manera que en las Zi se genere uno de
los 8 pares de las nuevas direcciones, el correspondiente a la línea INTi activada de mayor prioridad.
11
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
INT7
INT6
INT5 Rgist r o P r ior ida d
De y
INT4 Vector
P et ición Má sca r a
INT3
INT2
INT1 IRQ
INT0
R/W Selección
CS y
Con t rol
E
A4 Z4
Lógica Z3
A3
com bin a cion a l
A2 Z2
A1 Z1
La disposición del controlador de interrupciones respecto a la CPU y la memoria se muestra en el siguiente esquema:
12
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
INT7
CP U
IRQ INT6
IRQ INT5
INT4
INT3
INT2
Co n tro la d o r INT1
de INT0
In te rru p c io n e s
A4 Z4
A3 Z3
A2 Z2
A1 CS Z1
Mem or ia
A5,...A16
A5,...A16
D0,...D7
IPL2
VP A
IPL1
IPL0
CP U 68000
FC2 = 1
FC1 = 1
FC0 = 1
A3 A2 A1
Una cuarta línea, VPA, determina si los siete niveles de las líneas IPLi codifican una excepción
autovectorizada (VPA = 0) o vectorizada (VPA = 1). En el primer caso el vector de excepción es fijo para cada nivel,
y en el segundo lo determina el periférico y lo transmite por las 8 líneas menos significativas del bus de datos cuando
le llega la señal de reconocimiento procedente de la CPU, que corresponde al valor 111 de las señales de estado FC2,
FC1, FC0. El número de la línea vectorizada reconocida lo genera la CPU a través de las líneas del bus de direcciones
A3, A2, A1. Por ello, es necesario complementar con circuitería lógica externa el sistema, tal como aparece en el
siguiente esquema:
13
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
n ivel 7
n ivel 6
n ivel 5
n ivel 4
n ivel 3 7 líneas
COD n ivel 2
autovectorizadas
IPL2 n ivel 1
VP A
n ivel 7
IPL1 n ivel 6
n ivel 5
IPL0 n ivel 4
n ivel 3 7 líneas
n ivel
n ivel
2
1
vectorizadas
CP U 68000
Señ a l de
r econ ocim ien t o
FC2 globa l pa r a
excepcion es
FC1
vect or iza da s
FC0
Señ a l de
A3 r econ ocim ien t o
A2 in dividu a l
pa r a
A1
ca da n ivel
IN TA1
IN TA2
DE COD IN TA3
IN TA4
IN TA5
IN TA6
IN TA7
Enmascaramiento
Los bits I2,I1,I0 del registro de estado codifican los niveles inhibidos por la CPU, de acuerdo a la siguiente
tabla:
I2 I1 I0 Niveles inhibidos
0 0 0 Ninguno
0 0 1 Nivel 1
0 1 0 Niveles 1 al 2
0 1 1 Niveles 1 al 3
1 0 0 Niveles 1 al 4
1 0 1 Niveles 1 al 5
1 1 0 Niveles 1 al 6
1 1 1 Niveles 1 al 6
El nivel 7 no es enmascarable
T S I2 I1 I0 X N Z V C
Vectores de excepción
14
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Los vectores de excepción son posiciones de memoria donde la CPU obtiene la dirección de la rutina de
tratamiento de la excepción. En el MC 68000 existen 255 vectores que se agrupan en la tabla de vectores de
excepción ubicada en la zona más baja de memoria (desde la dirección 0 a la 1020 en decimal). Cada vector ocupa 2
palabras (4 bytes) excepto el vector de RESET que ocupa 4 palabras, 2 para el CP y las otras 2 para el SP, y se
identifica con un número de 8 bits (en decimal del 0 al 255, excepto el 1, que corresponde a la segunda mitad del 0,
que es el de RESET). La dirección real se obtendrá multiplicando por 4 el número de vector. El número de vector lo
genera la CPU (excepciones autovectorizadas) o el periférico (excepciones vectorizadas).
15
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Periférico 1
Periférico 2
nivel 7
nivel 6
nivel 5
nivel 4
nivel 3 autovectorizadas
nivel 2
COD nivel 1
IPL2
VPA
IPL1 nivel 7
nivel 6
IPL0 nivel 5
nivel 4
nivel 3 vectorizadas
nivel 2
nivel 1
CPU 68000
FC2
FC1
NUMERO DE
FC0 Periférico 3
VECTOR
A3
A2
Periférico 4
A1
INTA1
INTA2
Periférico 5
INTA3
CIRCUITO INTA4
LOGICO INTA5
INTA6
BUS DE DIRECCIONES INTA7
BUS DE DATOS
16
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Supuesto 1: conexión de un periférico lento, una impresora láser. La CPU opera a 200 Mhz.
y su CPI vale 2. La impresora opera a 20 páginas/minuto, con 3.000 caracteres (bytes) por página.
Se trata de imprimir un bloque de 10 Kbytes ubicado en la memoria.
200 Mh z Mem or ia
CP I = 2 Módu lo
E /S
CP U 10 Kby te s
20 pa g./m in.
1 pa g = 3000 bytes
a) E/S programada
Una instrucción tarda en ejecutarse 2 * 5 ns = 10 ns, ya que el tiempo de ciclo Tc =
1/Frecuencia = 1/200*106 seg. = 1/200*106 * 10-9 ns = 5 ns.
La impresora imprime 20 * 3.000 = 60.000 caractéres/minuto = 1.000
caracteres/segundo = 1 Kbyte/s. Luego los 10 Kbytes los imprimirá en 10 segundos.
La CPU está ocupada durante 10 segundos
1
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
salvar contexto, 2 para comprobar el estado y bifurcar, 1 para la transferencia, 3 para restaurar
contexto, y 1 para retorno de interrupción, RTI). La impresora genera una interrupción cada vez
que está preparada para recibir un nuevo caracter.
Para transferir los 10 Kbytes se producirán 10.000 interrupciones, lo que significa
ejecutar 100.000 instrucciones.
Luego la CPU se ocupa durante 105 * 10 ns = 106 ns = 106 * 10-9 s. = 0,001 s. = 1
milisegundo.
La E/S por interrupción ha reducido en 10.000 veces el tiempo que la CPU está ocupada
en atender la impresora. Sin embargo, la velocidad de la operación de E/S no ha cambiado,
como era de esperar al estar dominada por la velocidad del periférico.
Supuesto 2: conexión de un periférico rápido, un disco magnético. La CPU opera igual que
en caso anterior, es decir, a 200 Mhz y su CPI vale 2. El disco opera a una velocidad de
transferencia de 10 Mbytes/s. Se trata en este caso de transmitir un bloque de 10 Mbytes de la
memoria al disco.
200 Mh z Mem or ia
CP I = 2 Módu lo
E /S
CP U 10 Mby t e s
10 Mbyt es/s
10 Mby t e s
c) E/S programada
A la velocidad de 10 Mbytes/s el disco tarda 1 segundo en recibir los 10 Mbytes, y como
por E/S programada la CPU envia un byte cada vez que el disco está preparado para recibirlo,
la CPU está ocupada en la tranferencia durante 1 segundo.
2
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Por tanto, cuando se tienen que transferir grandes cantidades de datos y a una elevada
velocidad, es necesario disponer de una técnica que realice de forma más directa las transferencias
entre la memoria y el dispositivo periférico, limitando al máximo la intervención de la CPU. Esta
técnica se conoce con el nombre de acceso directo a memoria (DMA: Direct Memory Access).
Básicamente se trata de un módulo con capacidad para leer/escribir directamente en la
memoria los datos procedentes/enviados de/a los dispositivos periféricos. Para ello solicita la
correspondiente petición a la CPU. Antes de que la CPU conceda acceso a memoria al DMA, pone en
estado de alta impedancia su conexión a los buses del sistema (datos, direcciones y R/W), lo que es
equivalente a desconectarse de la memoria durante el tiempo que es gestionada por el DMA.
Cuando finaliza la operación de E/S el DMA genera una interrupción y la CPU vuelve a tomar
control de la memoria. De esta forma la velocidad de transferencia sólo estarán limitadas por el
ancho de banda de la memoria.
petición
concesión
Acceso Directo a
Memoria Módulo
(DMA) E/S
Control
MAR B. DIR
MEMORIA
CPU
B. DATOS
MDR
3
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Transmitida esta información, la CPU pasa a realizar otra tarea, delegando totalmente la
operación de E/S al DMA. El DMA transfiere directamente, palabra a palabra, el bloque de datos
entre el periférico y la memoria, sin pasar por la CPU. Cuando la transferencia finaliza el DMA envía
una señal de interrupción a la CPU.
r/w
bus de datos
Memoria
bus de direcciones
r/w
petición
concesión Lógica de control DEC
interrupción
DMA
Dispositivo periférico
Para poder transferir a/desde la memoria, el DMA necesita controlar el bus durante un tiempo
suficiente para completar la transferencia. Sin embargo, este tiempo no tiene que ser continuo,
puede fraccionarse en pequeños intervalos que se alternan con la CPU. Existen diferentes
alternativas en la forma de controlar el bus. Cada alternativa supone un compromiso diferente
entre velocidad de transferencia y actividad de la CPU. El empleo de una alternativa en concreto
dependerá de las prestaciones que se deseen y de las características del procesador que se utilice.
Son las siguientes:
• Ráfagas: el DMA toma control del bus y no lo libera hasta haber transmitido un bloque de
datos completo. Con este método se consigue la mayor velocidad de transferencia pero puede
dejar sin actividad a la CPU durante períodos grandes de tiempo.
In st r u cción 1 In st r u cción 2
• Robo de ciclos: el DMA toma control del bus y lo retiene durante un solo ciclo. Transmite una
palabra y libera el bus. Es la forma más usual de transferencia y en ella se dice que el DMA
roba ciclos a la CPU.
4
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
In st r u cción 1 In st r u cción 2
• Transparente: el DMA accede al bus sólo en los ciclos en los que la CPU no lo utiliza. Y esto
ocurre en diferentes fases de ejecución de las instrucciones. De esta forma la ejecución del
programa no se ve afectado en su velocidad de ejecución.
•
In st r u cción
Bú squ eda Decodifica ción Bú squ eda E jecu ción Alm a cen a m ien t o
En los sistemas con memoria cache también se puede aprovechar el acceso de la CPU a la cache
para que el DMA pueda acceder simultáneamente a la memoria principal. En resumen, los pasos
que se siguen en la transferencia mediante DMA son:
1. La CPU ejecuta las instrucciones de E/S que cargan los registros de dirección y contador
de palabras del controlador de DMA. El registro de dirección debe contener la dirección
base de la zona de memoria principal que se va a utilizar en la transferencia de datos. El
registro contador de palabra almacena el número de palabras que se transfieren
desde/hacia la memoria.
2. Cuando el controlador de DMA está preparado para transmitir datos, activa la línea de
petición. La CPU espera a un punto de concesión del DMA, renuncia al control de los
buses de datos y direcciones y activa la línea de reconocimiento de DMA.
3. El DMA transfiere directamente los datos a/desde memoria principal por alguno de los
métodos que se acaban de ver. Después de transferir una palabra, el registro de
dirección y el registro contador de palabras del controlador se incrementa y decrementa
respectivamente.
4. Si el contenido del registro contador de palabra no es 0, pero el periférico no está
preparado para enviar o recibir los siguientes datos, el DMA devuelve el control a la CPU
liberando el bus del sistema y desactivando la línea de petición. La CPU responde
desactivando la línea de reconocimiento de DMA y continuando con su operación
normal.
5. Si el contenido del contador de palabras es 0, el controlador de DMA renuncia al control
del bus del sistema y envía una señal de interrupción a la CPU.
5
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
• Bus único (DMA independiente): todos los módulos comparten el bus del sistema. El DMA,
que actúa en sustitución de la CPU, intercambia datos entre la memoria y el periférico
utilizando un procedimiento análogo al de E/S controlada por programa, es decir, hace de
intermediario entre ambas unidades.
Esta configuración, aunque puede ser muy económica, es claramente poco eficaz, ya que cada
transferencia de una palabra consume 2 ciclos del bus.
• Integración de funciones DMA-E/S: reduce a 1 el número de ciclos de utilización del bus. Esto
significa que hay un camino entre el controlador de DMA y uno o más controladores de E/S que
no incluyen al bus del sistema.
E/S
E/S E/S
La lógica del DMA puede ser una parte de un controlador de E/S o puede ser un módulo
independiente que controla a uno o más controladores de E/S.
• Bus de E/S conectado al DMA: El concepto anterior se puede generalizar si se utiliza un bus
de E/S para conectar los controladores de E/S al DMA. Esta alternativa reduce a una el
número de interfaces de E/S en el DMA, y proporciona una configuración fácilmente ampliable.
6
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
bus de E/S
CPU MEMORIA
PE/S1 PE/S2
CONTROL CONTROL
Periférico E/S Periférico E/S
CONTROL CONTROL
Periférico E/S Periférico E/S
7
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Un PE/S representa, pues, una extensión del concepto DMA. Un PE/S tiene la capacidad de
ejecutar instrucciones de E/S, lo que le da un control completo sobre dicha operación. En los
computadores que incluyen PE/S, la CPU no ejecuta las instrucciones de E/S, éstas se almacenan
en memoria principal para ser ejecutadas por un PE/S. Así, la CPU inicia una transferencia de E/S
al dar una orden al PE/S para que ejecute un programa en memoria. El programa especifica entre
otras cosas las siguientes:
ME MOR IA
P r ogr am a
-
- P rogr a m a
E /S de ca n a l
-
-
P rocesa dor de
CP U P er ifér ico
E /S ó can a l
8
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Solicita el
estado del P
/S
Envía a memoria
la palabra de
estado
Si el estado es
válido emite la
orden de inicio
de la operación
de E/S Accede a Memoria
para leer
comandos del
programa de E/S
Interrumpe a la
CPU cuando ha
finalizado el
Solicita el programa de E/S
estado al P E/S
Transfiere a
memoria el estado
de realización del
Comprueba que programa de E/S
la operación de
E/ S ha sido
correcta
• Canales multiplexores
• Canales selectores
• Canales multiplexores por bloques
Canal multiplexor
Un canal multiplexor se utiliza para conectar dispositivos de velocidad baja y media. Son
capaces de transferir datos a velocidades mayores que las de los dispositivos individuales
9
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
conectados al canal. Esto les permite operar en forma multiplexada sobre varios dispositivos de
E/S.
Ca n a l
Mu lt iplexor
10
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
n º pa la br a s n º pa la br a s n º pa la br a s
Con t r ol
Bu ffer de da t os del ca n a l
Canal selector
Un canal selector controla múltiples dispositivos de alta velocidad. En cualquier instante de
tiempo está dedicado a la transferencia de datos con uno sólo de estos dispositivos. El PE/S
selecciona un dispositivo y efectúa la transferencia de datos completa.
Ca n a l
Select or
11
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
CD CC SKIP P CI
Operación Este campo corresponde al código de operación de las instrucciones máquina normales.
Especifica la operación que debe realizar la CCW. La unidad de control decodifica este campo y
envía las señales adecuadas de control al dispositivo. Existen varias operaciones, las más
importantes son las siguientes:
Control: se utiliza esta orden para enviar instrucciones específicas al dispositivo de E/S,
como rebobinar una cinta magnética, etc.
Bifurcación: cumple en el programa de canal la misma función que una instrucción de salto
en un programa normal. El canal ejecuta las CCW en secuencia, salvo cuando aparece una
CCW de este tipo, que utiliza el campo dirección del dato como la dirección de la siguiente
CCW a ejecutar.
12
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
CC (Encadenamiento de comando): cuando este bit está a 1, indica al canal que la siguiente
CCW especifica una nueva operación de E/S que debe realizarse con el mismo dispositivo.
El canal ejecuta primero la operación de E/S especificada en la CCW que tiene a 1 el flag
CC. Después ejecuta la siguiente sobre el mismo dispositivo. Desde el punto de vista del
dispositivo, las dos operaciones resultantes de la primera y segunda CCW aparecen como
dos comandos de E/S separados.
CD (Encadenamiento de datos): una CCW con el bit CD a 1, indica al canal que la siguiente
CCW contiene una nueva dirección del dato y un nuevo nº de palabras. Éstos deben
utilizarse para transferir un segundo bloque de datos hacia o desde el dispositivo de E/S,
mediante la orden especificada por la CCW actual. Cuando el canal termina la transferencia
de datos especificada en la CCW con el bit CD a 1, no corta la conexión con el dispositivo de
E/S, continúa la transferencia utilizando la dirección y el nº de palabras de la siguiente
CCW. Con el encadenamiento de datos, los datos transferidos por la primera y segunda
CCW aparecen como un bloque para el dispositivo de E/S. Esto facilita las transferencias
entre un dispositivo y posiciones no contiguas de la memoria principal.
Para poner de manifiesto la diferencia entre encadenamiento de comandos y de datos veamos lo
que ocurre con una transferencia de dos bloques de datos de la memoria principal a una cinta
magnética. Si se utiliza encadenamiento de comandos, los dos bloques se escribirán en la cinta
separados por un separador de registros que la unidad de cinta inserta de forma automática al
final de una operación de E/S especificada por una CCW en donde CD = 0. En cambio, el
encadenamiento de datos provoca que los dos bloques se unan en un solo registro en la cinta. Una
CCW con los flags CD y CC a 0 significa el final del programa de canal.
SKIP (Salto): este bit, cuando está a 1, hace que el programa de canal salte un número de
palabras igual al especificado en el campo nº de palabras. Cuando se utiliza con la orden de
lectura, este flag hace que los datos se lean del dispositivo sin que se transfieran a la
memoria principal.
PCI (Interrupción controlada por programa): el canal produce una interrupción cuando ejecuta
una CCW con el flag PCI a 1. Si esta CCW va precedida por otra CCW con encadenamiento
de comandos, la interrupción se genera después de que hayan concluido todas las
transferencias de datos.
Ejemplo 1
En la siguiente figura se muestra un ejemplo de programa que transfiere tres bloques de
datos de la memoria principal a una cinta magnética. CCW1 lee 70 bytes de memoria, a partir de la
posición 2000, y los escribe en cinta. La operación de Escritura y la unidad de cinta a utilizar se
especifican en el campo de operación. Puesto que el bit CD está 1, CCW2 debe interpretarse como
una continuación de CCW1. Se realiza la misma operación de E/S, esto es, una Escritura en el
mismo dispositivo, pero con los datos especificados en CCW2. Obsérvese que en CCW2 no se
tienen en cuenta los bits de orden. Se transfieren a la cinta 100 bytes de memoria, a partir de la
posición 2.200, como continuación del registro iniciado con CCW1. En CCW2 el bit CC está 1, lo
que significa que sigue otra CCW (CCW3), pero que no está relacionada con la CCW2. Por lo tanto,
al finalizar CCW2, se inserta un espacio de separación de registros en la cinta. De nuevo, CCW3
especifica una Escritura en la misma cinta. El resultado es una transferencia a la cinta de 500
bytes a partir de la posición 2.500 de memoria. Puesto que los flags CD y CC valen cero, se trata
del final del programa de canal.
13
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
2000 CCW1
70 bytes registro
CCW2 separador
2200 registro
100 bytes
CCW3
2500
50 bytes
Ejemplo 2
En la siguiente figura aparece otro programa de canal que muestra el empleo del flag de
salto (SKIP). La primera CCW (CCW1) transfiere 80 bytes de la unidad de cinta especificada en el
campo de operación a la memoria, a partir de la posición 4.500. Puesto que CD = 1, CCW2 realiza la
misma operación. Sin embargo, como en CCW2 el flag de salto está 1, significa que el canal no
transmitirá los siguientes 30 bytes que lea de la cinta. Puesto que CD sigue 1, continúa la misma
operación de lectura con CCW3, provocando la transferencia de los siguientes 50 bytes a la
memoria, a partir de la posición 4.700. Por lo tanto, el programa transfiere dos bloques de datos a
la memoria principal desde un registro de la cinta, con un salto de 30 bytes a la mitad del registro.
14
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
4500
CCW1
80 bytes
80 bytes registro
30 bytes
CCW2
4700
50 bytes 50 bytes
Una operación de E/S se inicia con la instrucción START I/O. La ubicación del programa de
canal en la memoria principal viene definida en la palabra de dirección de canal (CAW: Channel A
ddress word), que siempre está almacenada en la posición 72 de la memoria principal.
Mem or ia pr in cipa l
72 CAW
P r ogr a m a de ca n a l
15
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
16
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Cab eza d e
lect u r a y
escr it u r a
Su p er ficie
m agn ét ica
Mot or
pas o-a-pas o
Mot or
de gir o
1
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
original) hasta alcanzar el punto g, y si seguimos aumentando llegamos de nuevo a la saturación (punto b), con lo que se
completa el ciclo de histéresis. Los materiales ferromagnéticos tienen por tanto dos valores estables de magnetización, uno
norte, correspondiente al punto c de la gráfica y otro sur, correspondiente al punto f. Estos dos estados de magnetización
remanente que se mantienen en ausencia de campo externo son los que se utilizan para codificar la información binaria
cuando se utilizan los materiales ferromagnéticos como soporte de memoria.
c b
d a g H
e f
Los procesos de lectura y escritura sobre las superficies ferromagnéticas de un disco (habitualmente de
óxido de hierro) se realizan a través de una cabeza de grabación compuesta por un núcleo de hierro en
forma de herradura y dos bobinas conductoras, una para escritura y otra para lectura. La cabeza opera muy cerca de
la superficie, de forma que casi vuela sobre ella, sobre el colchón de aire formado por su propio movimiento.
Debido a esto, están cerrados herméticamente, porque cualquier partícula de polvo puede dañarlos.
escr it u r a lect u r a
+
m ovim ien t o
Su per
m a gn
Escritura: Se hace pasar por la bobina de escritura una corriente que crea un campo magnético en el
núcleo de hierro que se cierra a través de la pequeña región de la superficie magnética que en ese momento
está bajo la cabeza, dejando una magnetización remanente del mismo sentido que el campo de la bobina.
Lectura: Se mueve la superficie magnética previamente grabada por debajo de la cabeza. Cada variación
de flujo producida por las pequeñas áreas magnetizadas inducirá una pequeña tensión en la bobina de
lectura. Amplificando e interpretando adecuadamente estas tensiones podemos reconstruir en forma de
señal eléctrica digital los valores grabados en la superficie del disco.
Los discos magnéticos actuales disponen de AUTOPARK o aparcamiento automático de las cabezas,
que posiciona las cabezas en un lugar fuera del alcance de la superficie del disco al apagar el ordenador.
Esto evita posibles daños en la superficie del disco cuando la unidad es sometida a vibraciones o golpes en
un posible traslado.
2
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
0 1 1 0 0 1 0
RZ
RS
BRZ
NRZ
NRZ1
3
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
La celda tiene un primer intervalo de longitud RI en un estado de magnetización, y el segundo intervalo, de longitud
R2, en el estado contrario. El 1 se representa por un pulso tal que Rl/R2 < 1, y el 0 por un pulso tal que R1/R2 > 1.
0 1 1 0 0 1 0
PE
FM
PR
MFM
2
M FM
Los datos se transfieren en bloques y se almacenan en regiones del tamaño de un bloque, conocidas como
sectores. Normalmente hay entre 10 y 100 sectores por pista, y estos pueden ser de longitud fija o variable. Los sectores
adyacentes se separan con regiones vacías. El disco se graba con un formato que contiene algunos datos extra, usados sólo
por el controlador del disco y no accesibles al usuario. En la siguiente figura se puede ver la disposición de los datos:
4
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
sect or es
pist a s
Sepa r a ción
in t er bloqu es
Ba n da de
sepa r a ción
de pist a s
En la siguiente figura se muestra un ejemplo del formato de grabación de un disco. En este caso, cada pista
contiene 30 sectores de longitud fija, de 600 bytes cada uno. Cada sector contiene 512 bytes de datos, junto con la
información de control utilizada por el controlador del disco. El campo ID es un identificador único, o dirección, usado
para localizar un sector particular. El byte SINCRO es un patrón de bits especial que delimita el comienzo del campo. El
número de pista identifica cada pista. El número de cabeza identifica una cabeza, si el disco tiene varias superficies. El ID y
los campos de datos contienen, cada uno, un código de detección de errores de redundancia cíclica (CRC) que
estudiaremos en el apartado siguiente.
pist a
Ga p (17 byt es) ID Ga p (41 yt es) Da t os (41 byt es) Ga p (20 byt es)
Byt es 1 2 1 1 2
Byt es 1 512 2
Existen procedimientos para aumentar la capacidad del disco colocando más sectores sobre las
pistas exteriores que son más largas, manteniendo constante la velocidad de rotación. El sistema ZBR
(Zone Bit Recording) es un ejemplo que requiere el uso de controladores más complejos..
5
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Aritmética
La aritmética que se utiliza en las operaciones CRC es módulo 2, de acuerdo con las reglas de la teoría de campos
algebraicos. Es decir, no existen acarreos para la suma ni préstamos para la resta. Tanto la suma como la resta resultan pues
idénticas a una O-exclusiva:
Codificación
Es evidente que multiplicar M por 2n equivale a desplazar hacia la izquierda n bits, introduciendo ceros por la derecha. Por
tanto la operación de concatenación de M con F para dar T podemos expresarla de la siguiente forma:
T = 2n M + F
2n M R
------ = Q + --
P P
Siendo Q el cociente y R el resto. Por tanto haremos:
F= R
T = 2n M - R = 2n M + R
6
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Ejemplo
Emisor
Mensaje original a transmitir M = 1010001101 (10 bits)
Patrón P = 110101 (6 bits)
FCS R = resto de la división de 2nM entre P
2nM = 25M = 101000110 00000
1101010110 Å Q
---------------
P Æ110101 101000110100000 Å 2nM
110101
------
111011
110101
------
111010
110101
------
111110
110101
------
101100
110101
------
110010
110101
------
01110 Å R
El resto se suma a 2nM para formar T
T = 2nM + R = 101000110 01110
Que es el mensaje o trama que se transmite
Receptor
Si no hay errores el receptor recibe el mensaje transmitido por el emisor y calcula el resto de la división
por P:
1101010110 Å Q
---------------
P Æ110101 101000110101110 Å 2nM
110101
------
111011
110101
------
111010
110101
------
111110
110101
------
101111
110101
------
110101
110101
------
0 Å R
Como el resto es cero se sabe que no ha habido errores.
7
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
T(X) = XnM(X) + R(X) donde R(X) es el resto de la división de XnM(X) entre P(X),
es decir:
XnM(X) / P(X) = Q(X) + R(X) / P(X)
Errores
Al recibir el mensaje Tr(X) el receptor lo divide por P(X).
Error simple: si ha habido un error en un solo bit, E(X) = Xi donde i determina la posición del error. Si
P(X) contiene el factor X+1, E(X) nunca será divisible por P(X), por lo que detectarán los errores
simples.
Errores dobles: en este caso E(X) = Xi +Xj, donde i > j. Esto también se puede escribir como E(X) = Xj
(Xi-j + 1). Si suponemos que P(X) no es divisible entre X, una condición suficiente para detectar todos
los errores dobles es que P(X) no sea divisor exacto de (Xk + 1) para ningún k hasta el valor máximo de
i – j, es decir, hasta la longitud máxima del mensaje. Se conocen polinomios sencillos de bajo grado que
dan protección a mensajes largos. Por ejemplo, X15 + X14 + 1 no dividirá exactamente a (Xk + 1) para
ningún valor de k < 32.768.
Errores en ráfaga: un error en ráfaga comienza y finaliza en 1, y entre ambos 1’s hay 0’s y 1’s. Para un
error en ráfaga de longitud k, el polinomio tendrá la forma: Xi(Xk-1 + …+), donde i determina la
distancia a la que se encuentra la ráfaga desde el extremo derecho del mensaje recibido. Si P(X)
contiene un término X0, no tendrá a Xi como factor, por lo que, si el grado de (Xk-1 + …+) es menor que
el grado de P(X), el residuo nunca puede ser cero. Si la longitud de la ráfaga es r+1, el residuo de la
división entre P(X) será cero si y solo si la ráfaga es idéntica a P(X). Por la definición de ráfaga, el
primero y último bits deben ser 1, así que el que sean iguales o no depende de los r – 1 bits
intermedios. Si se consideran igualmente probables todas las combinaciones, la probabilidad de que se
acepte como válido el mensaje recibido de de 1/2r-1
8
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
CRC-22 = X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+X0
Implementación hardware
La generación y detección CRC se implementa con un circuito divisor compuesto por puertas O-
exclusiva y un registro de desplazamiento. El registro contiene tantos bits como el FCS, es decir, n, y n-
1 puertas O-exclusiva. Cada puerta O-exclusiva se ubica a la entrada de un biestable correspondiente
a un monomio de coeficiente 1, salvo Xn.
Para el divisor del ejemplo, 110101, cuyo polinomio asociado es
X5 + X4 + X2 + X0
El divisor tendrá la siguiente forma:
C4 ⊕ C3 C2 ⊕ C1 C0 ⊕ Bits de entrada
X5 X4 X3 X2 X1 X0
Sobre este circuito podemos seguir el proceso de generación CRC del ejemplo anterior, para el
mensaje
M = 1010001101:
C4 C3 C2 C1 C0 C4 ⊕ C3 C4 ⊕ C1 C4 ⊕ entrada entrada
Inicial 0 0 0 0 0 0 0 1 1
Paso 1 0 0 0 0 1 0 0 0 0
Paso 2 0 0 0 1 0 0 1 1 1
Paso 3 0 0 1 0 1 0 0 0 0
Paso 4 0 1 0 1 0 1 1 0 0 mensaje
Paso 5 1 0 1 0 0 1 1 1 0 a enviar
Paso 6 1 1 1 0 1 0 1 0 1
Paso 7 0 1 1 1 0 1 1 1 1
Paso 8 1 1 1 0 1 0 1 1 0
Paso 9 0 1 1 1 1 1 1 1 1
Paso 10 1 1 1 1 1 0 0 1 0
Paso 11 0 1 0 1 1 1 1 0 0 cinco ceros
añadidos
Paso 12 1 0 1 1 0 1 0 1 0
Paso 13 1 1 0 0 1 0 1 1 0
Paso 14 0 0 1 1 1 0 1 0 0
Paso 15 0 1 0 1 0 1 1 0 0
9
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
En un disco barato de PC m puede tener un valor de 0,3 ms y s de 20 ms; mientras que en un disco más caro m puede tener
un valor de 0,1 ms y s de 3 ms
Retardo rotacional (Tr): tiempo que tarda el sector en alcanzar la cabeza. Si r es la velocidad angular del disco
en revoluciones/segundo (rps), la expresión del valor medio de Tr será la siguiente:
Tr = 1/2r
En discos duros que giran a 3.600 rpm, una revolución tardará 16,7 ms, y el valor medio del retardo rotacional será 8,3 ms.
En cambio los disquetes que giran entre 100 y 600 rpm tienen un retardo rotacional medio que va de 100 a 200 ms.
Tiempo de acceso (Ta): es la suma del tiempo de búsqueda y el retardo rotacional
Ta = Ts + Tr = m * n + s + 1/2r
Tiempo de transferencia (Tt): tiempo que tardan en transferirse los datos a ó desde el disco una vez accedido el
inicio de los mismos. Dependerá de la velocidad de rotación del disco:
Tt = b/rN
donde:
b = número de bytes a transferir
N = número de bytes de una pista
r = velocidad de rotación en rps
To = m * n + s + 1/2r + b/rN
En un computador que funciona bajo control de un SO, para realizar una operación de E/S, a estos tiempos habrá
que añadir el tiempo de espera por un canal, si el disco no dispone del suyo propio, y el tiempo de espera en la cola hasta
que el dispositivo esté disponible.
Ts = 20 m s
Velc. Tr a n sfe. = 1 MB/s
Sector = 512 B
P ist a = 32 sect or es
Ar ch ivo de 128KB = 256 sector es
1 Acceso secuencial
8 pistas adyacentes (256 sectores / 32 sectores/pista = 8 pistas)
10
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
2 Acceso aleatorio
Acceso a un sector = Ts + Tr + Tt(1 sector) = 20 + 8,3 + 512/1000000 = 28,8 ms.
Acceso a 256 sectores = 256 * 28,8 = 7.372 ms
Existen una serie de técnicas que permiten aminorar los accesos a disco así como acelerar las
transferencias de datos entre el sistema y el dispositivo. Una de las más conocidas es la utilización de
memorias intermedias, buffers o cachés.
Buffer de Pista: Es una memoria incluida en el controlador del disco, que almacena el contenido de una
pista completa. Así cuando se hace una petición de lectura de una pista, esta se puede leer de una sola vez,
enviando la información a la CPU.
Cachés de Disco: Pueden estar dentro del propio disco duro, en tarjetas especiales o bien a través de
programas utilizando la memoria central. La gestión de esta memoria es completamente transparente y
consiste en almacenar en ella los datos más pedidos por la CPU y retirar de ella aquellos no solicitados en
un determinado tiempo.
• Mecanismo de cabeza: una sola cabeza para lectura y escritura, y otra para borrado inmediatamente antes de la
escritura. La cabeza es accionada por un motor paso-a-paso que le permite posicionarla radialmente en una
cualquiera de las pistas del floppy. También dispone de un mecanismo de elevación de la cabeza que se utiliza
para evitar el rozamiento con la superficie cuando se mueve radialmente.
• Motor de giro: hace girar el diskette a una velocidad de 300 ó 369 revoluciones por minuto.
• Detector de la pista cero: que el dispositivo utiliza como referencia para desplazar la cabeza a la pista adecuada.
• Detector de inicio de pista: fotodetector que genera una señal cada vez que se inicia una nueva revolución de
giro.
11
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Pu lso
Dir e cción pu lso
E le va ción ca be za Con tr ol
G ir o m otor
Re loj
Da tos le ctur a Le ctu r a
Y
Da tos e scr itu r a
E scr itu r a
Detector
E sta do de pista 0
Pr otección e scr i.
In dice fotocélula
Pista 0
Tod
os los elementos del dispositivo son accionados y supervisados desde la circuitería de Control,
Lectura/Escritura y Estado a través del controlador del dispositivo.
Formato de datos
sector
ID Campo de Datos
marca
inicio
pista marca 128 bytes de datos CRC
índice
12
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Regist r o de Or den es
Regist ro de P ist a
CP U
Regist r o de Da tos D IS CO
Lógica
de
Regist ro de Despla za m ien to
Selección
y
Con t r ol
Registro de pista contiene el número de pista sobre el que se encuentra en cada momento la cabeza.
Registro de estado codifica la información de estado del dispositivo: disponible,….
Registro de Ordenes almacena la orden recibida por la unidad de E/S. Entre otras dispone de las siguientes:
Búsqueda de pista
Búsqueda de sector
Lectura de sector
Escritura de sector
Analicemos las acciones que tienen lugar en el dispositivo durante la ejecución de la primera de estas órdenes.
Búsqueda de pista
El registro de pista se inicializa a 0 cuando se enciende el motor de giro y se activa el detector de pista 0. Una vez
que el módulo de E/S ha puesto la orden de Búsqueda de pista sobre el Registro de Ordenes, carga en el Registro de Datos
el número de la pista a buscar y comienza la operación. Se comparan los registros de Datos y Pista. Si sus contenidos
coinciden, la cabeza se encuentra en la pista buscada, y la operación finaliza con una interrupción después de desactivar la
señal de Elevación de cabeza y transcurrir un retardo de tiempo para el asentamiento de la cabeza. En caso contrario se
envía un pulso al motor paso-a-paso de la cabeza con la dirección adecuada (dependiendo del resultado menor o mayor de
la comparación) a fin de desplazarla a la pista contigua. Después se actualiza el Registro de Pista y se vuelve a comparar.
13
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
R.Da t os Å n º de pist a
> = <
1.2.1. CD-ROM
La información se almacena en forma de hoyos (pits) y salientes (bumps), grabados mecánicamente sobre un
substrato de aluminio brillante, y son leídos por medio de un láser que se refleja con diferente dirección en los hoyos que
en los salientes.
0,5 micras
1,6 micras
Etiqueta
Capa protectora
Base de Capa aluminio
policarbonato transparente
• La información se codifica usando un código de canal con el que cada byte (ASCII) queda representado por 14 bits y
se graba en una cinta magnética
• La cinta es leída por un grabador de moldes para controlar un modulador óptico de un láser de potencia.
• El láser se enfoca sobre la superficie fotosensible que recubre el disco molde (que es de cristal).
• Mediante un proceso análogo al utilizado en la fabricación de CIs se revela el disco.
• Las zonas de la superficie fotosensible que han sido expuestas a la luz se convierten en hoyos, resultando un relieve
exactamente igual al que tendrán los CD-ROM.
14
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
• Del molde original se obtienen varios discos denominados matrices, que son copias en negativo de los discos
definitivos.
• Con las matrices se obtiene la capa de aluminio de CD-ROM.
• Finalmente se aísla del exterior, emparedándola entre la capa protectora superior y la base inferior de plástico
Con los CD-ROM se consiguen una densidad de grabación de 16.000 pistas/pulgada (t/i) muy superior a la de los discos
magnéticos (los disquetes 96 t/i.
• Se utiliza un haz de luz generado por un diodo láser de arseniuro de galio, que una lente enfoca sobre la superficie de
la base de plástico, convirtiéndose en un punto de 1 micra.
• El enfoque no se realiza sobre la superficie externa de la base de plástico, sino sobre el aluminio, por lo que las
partículas de polvo o rayados del exterior del disco apenas afectan a su lectura.
• La lectura se efectúa con un fotodetector que mide la cantidad de luz reflejada (genera una corriente proporcional a la
radiación recibida).
• Cuando la luz incide sobre los bordes de los hoyos se desvía, de forma que apenas vuelve nada hacia el objetivo,
obteniéndose así un "1".
• Cuando el haz incide sobre la superficie plana de hoyos y salientes se refleja casi sin desviación, captándose en el
detector prácticamente la totalidad del haz, obteniéndose así un "0".
10000010010000000000001000000010000001
Base de
Codificación de la información
A nivel lógico la información se organiza en bloques (sectores) de 2.352 bytes, con el formato que aparece en la siguiente
figura:
A nivel físico
Los 1's se representan por el cambio de hoyo a saliente y los 0's por las superficies de los hoyos y salientes. Cada
0,3 micras de hoyo o saliente a lo largo de la pista corresponde a un 0. La longitud mínima físicamente posible para hoyos
y salientes es de 0,6 micras, lo que exige que 2 1's deben estar separados como mínimo por 2 0's. Por eso cada byte de
datos se codifica con 14 bits de canal, según la siguiente tabla:
15
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Codificación EFM
(Eight to Fourteen Modulation)
los 2.352 bytes de cada sector se estructuran en tramas. Cada trama contiene 24 bytes de sector.
588 bits
byte de sector 1 byte de sector i byte de sector 24 sincronización sep control 8 ECC
bits 24 3 17 136
1 byte de sector
datos sep
bits 14 3
Luego los
2.048 bytes = 16.388 bits de datos de usuario
ocupan
2.352 bytes = 18.816 bits de datos lógicos
y
57.624 bits físicos de canal.
Base de
Base de
16
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Son unidades de discos ópticos similares a los lectores de CD-ROM, pero que contienen un láser de potencia, de
forma que en la propia unidad se puede efectuar la grabación del disco.
Proceso de escritura:
• Los discos vírgenes son previamente magnetizados, es decir, escritos todo a 0's, magnetización norte, o todo a 1's,
magnetización sur.
• En la fase de escritura se realizan dos acciones:
1. Toda la superficie del disco se somete a un campo magnético uniforme, de sentido contrario al de magnetización
inicial, y de intensidad no suficiente para alterar el estado de magnetización inicial de cada celda.
2. Simultáneamente se hace incidir un láser de unos 40 mW de potencia sobre las celdas en las que hay que escribir
un valor distinto al inicial. De esta forma la celda se calienta cerca de su punto de Curie, con lo que cambia el
sentido de magnetización inicial de la celda.
magnetización inicial
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
láser de escritura
↑ ↑ ↑ ↑ ↑ ↓ ↑ ↑ ↑ ↑ ↑ ↑
• El proceso de lectura se funda en el efecto Kerr, que consiste en que el plano de polarización de un haz de luz gira en
un sentido u otro, según el estado de magnetización de la superficie en la que se refleja. La lectura se realiza con un
láser de unos 10 mW de potencia, que incide secuencialmente sobre las celdas del disco que se van a leer, captándose
la luz reflejada en un fotodetector después de haber pasado por un analizador óptico.
17
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
fotodetector
láser de lectura
↑ ↑ ↑ ↑ ↑ ↓ ↑ ↑ ↑ ↑ ↑ ↑
fotodetector
láser de lectura
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
Proceso de regrabación
• Para volver a escribir sobre un disco previamente escrito se procede en primer lugar al borrado de todas las celdas
que contengan un sentido de magnetización distinto al inicial. Para ello se aplica un campo magnético externo de
sentido igual al inicial y con la suficiente intensidad para invertir el sentido de magnetización de cualquier celda
que no coincida con el del campo externo.
La capacidad de este tipo de discos va de 0.5 a 1 GB y una velocidad de transferencia de unos 150 KB/s con tiempo de
acceso de 300 ms.
La pantalla mantiene la imagen refrescándola periódicamente a una frecuencia suficiente para la persistencia de la
retina. La técnica de barrido utilizada por la mayoría de los monitores es análoga a la utilizada por los aparatos de
televisión. Las señales que actúan sobre la bobina de deflexión son generadas por dos osciladores, uno actuando sobre la
componente horizontal y el otro sobre la vertical. Los osciladores son sincronizados por señales externas, HSYNC para la
sincronización horizontal, y VSYNC para la vertical, después se amplifican antes de entrar en la bobina. La señal de VIDEO
controla la intensidad del haz de electrones, y por tanto la iluminación de los puntos de la imagen sobre la pantalla.
18
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Cañón de electrones
HSYNC
OSCILADOR AMPLIFICADOR H
HORIZONTAL HORIZONTAL
VIDEO
AMPLIFICADOR
DE VIDEO CRT
VSYNC
V
OSCILADOR AMPLIFICADOR
VERTICAL VERTICAL
Los monitores de color tienen una organización similar pero utilizan un cañón de electrones para cada uno de los tres
colores básicos. Cada punto de la pantalla, píxel, está compuesto por tres pequeñas áreas que se iluminan de rojo, verde y
azul cuando incide el correspondiente haz de electrones. La relación entre las tres intensidades de electrones produce la
correspondiente intensidad de los tres colores básicos para formar el color real de la imagen.
rojo
verde
azul
En la siguiente figura hemos representado la forma en que se realiza el barrido de una pantalla monocromo. El haz
de electrones comienza en la esquina superior izquierda y se mueve horizontalmente de izquierda a derecha. Cuando
completa la primera línea horizontal vuelve al flanco izquierdo para realizar el barrido de la segunda línea, al tiempo que el
haz sufre una pequeña deflexión vertical, en sentido descendente. de esta forma se genera un conjunto de líneas
horizontales paralelas hasta alcanzar la esquina inferior derecha. En este punto se dice que se ha completado un barrido
vertical o un marco. Después el haz de electrones vuelve a la esquina superior izquierda para repetir el proceso y así
refrescar la pantalla. El refresco se hace necesario para que la imagen aparezca persistente en la retina del usuario.
19
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
1
2
3
4
5
6
7
Para producir el barrido descrito los osciladores horizontal y vertical deberán generar unas señales en forma de
diente de sierra, tal como las que se presentan en la figura siguiente:
tiempo
1 2 3 4 5 6 7
tiempo
VIDEO
tiempo
La señal de VIDEO controla la intensidad de iluminación del punto de barrido en cada instante, haciendo que se
dibuje la imagen sobre la pantalla, la letra A mayúscula en la figura. En este caso la intensidad la hemos considerado
binaria, presencia o ausencia de luz (blanco o negro). En realidad será un valor entero para graduar la escala de grises.
ms
15,42 16,67
Lo mismo le ocurre al barrido horizontal. Unos valores típicos para el barrido y el retorno son los que se muestran
en la siguiente figura:
20
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
µs
53,5 10
Con los valores anteriores, el número total de líneas de un marco será: 1.542 µs / 63,5 ≈ 242 líneas.
Sincronismo
Las señales de barrido horizontal y vertical tienen evidentemente que sincronizarse entre sí y con la señal de
VIDEO, que por simplicidad seguiremos considerando que es binaria. La sincronización del barrido horizontal y los pulsos
de video se muestra en la siguiente figura:
21
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
La codificación en mapa de bits de todos los caracteres visualizables se halla en una memoria
ROM, denominada Generador de Caracteres. En dir_ini se encuentra en realidad la codificación ASCII de
la Z, que se utilizará como puntero (dirección) al inicio de la zona de la ROM donde comienza la
codificación en mapa de bits de la Z.
HSYNC
VSYNC
LOGICA DE TEMPORIZACION Y CONTROL
Registro de desplazamiento
(ROM)
(RAM)
GENERADOR
MEMORIA DE
DE CARACTERES
REFRESCO
dir_ini
Z (en ASCII)
0 1 1 1 1 1 0 0 línea 0
0 0 0 0 0 1 0 0 línea 1
0 0 0 0 1 0 0 0 línea 2
dir_fin
0 0 0 1 0 0 0 0 línea 3
0 0 1 0 0 0 0 0 línea 4
0 1 0 0 0 0 0 0 línea 5
Código ASCII
utilizado como 0 1 1 1 1 1 0 0 línea 6
puntero
Para visualizar la Z tendremos que ir extrayendo de la ROM el valor binario de sus pixels, línea a
línea, llevando cada línea al Registro de Desplazamiento que controla la señal de VIDEO, es decir, la
presencia (1) o ausencia (0) de luz en la pantalla.
Hemos supuesto que la resolución de cada carácter, incluyendo los puntos de separación es de 8 x 7
= 56 pixels.
El proceso completo de refresco de la línea contenida entre las direcciones dir_ini y dir_fin de la
memoria de refresco lo hemos representado en el siguiente diagrama:
22
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
dir_refresco Å dir_ini
dir_ línea Å0
dir_línea Å dir_línea + 1
no dir_línea > 6
si
dir._refresco
dir_refresco Å dir_refresco + 1 no >
si
dir_fin
1.4.2. Controlador
La estructura del controlador completo de la pantalla de tubo de rayos catódicos la componen un conjunto de
contadores que actúan sobre la RAM de refresco, la ROM de generación de caracteres, el Registro de Desplazamiento que
controla la señal de VIDEO y la Lógica de Temporización.
Supondremos que la resolución de la pantalla es de 16 filas con 32 caracteres cada una, y cada carácter está
definido por una matriz de 7 x 10 puntos, tal como se muestra en la siguiente figura:
32 X 16 línea 10
fila 16
columna 1 columna 7
El controlador actúa en sicronización con un Reloj que genera un pulso por cada píxel a visualizar. El Reloj actúa
sobre el Registro de Desplazamiento para marcar los instantes en que tiene que renovarse el punto de la línea en fase de
visualización.. También actúa de forma directa sobre el Contador de Puntos de cada línea de un carácter. En realidad este
contador opera como divisor de la frecuencia del Reloj para cargar el Registro de Desplazamiento con las sucesivas líneas
de todos los caracteres que se visualizan en la misma fila de la pantalla.
La salida del Contador de Puntos actúa sobre el Contador de Caracteres, que a su vez actúa sobre el Contador de
Línea de Puntos, que finalmente actúa sobre el Contado de Fila de Caracteres. Este funcionamiento en cascada de los 4
23
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
contadores va dividiendo la frecuencia del Reloj en los valores adecuados al recorrido de cada contador, que se
corresponden con la resolución de la pantalla:
HSYNC fila 1
Lógica de temporización ESTA ES UNA LINEA...
VSYNC
HSYNC, VSYNC, VIDEO
32 X 16
Contador de 4 (RAM)
fila de fila 16
caracteres
(÷16) 5 VIDEO
7 (ROM)
Contador de
línea
de puntos 4
(÷10)
Contador de
caracteres 7
(÷32)
carga
Retardo Registro de desplazamiento
Contador de desplazamiento
puntos
(÷7)
Reloj
24
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
polarizador polarizador
analizador analizador
Luz polarizada
luz bloqueada
• Dos superficies de vidrio transparente cubiertas de un material conductor también transparente (oxido de
estaño) que actúa como electrodo
• Un regulador de precisión del gap entre las dos superficies de la celda.
• Dos polarizadores cruzados: el polarizador y el analizador
• Material de cristal liquido nematic
Las superficies de los electrodos transparentes en contacto con el cristal líquido se recubren de una fina capa de polímero
que ha sido frotado en una dirección. Las moléculas de cristal líquido tienden a orientarse con sus ejes longitudinales
paralelos a esta dirección. Las superficies de vidrio se disponen de manera que las moléculas adyacentes al electrodo
superior se orienten formando un ángulo recto con el inferior. Cada polarizador está orientado con su plano de polarización
paralelo a la dirección de frotación del electrodo adyacente (de esta forma el polarizador y el analizador están cruzados).
En ausencia de un campo eléctrico el eje director del cristal líquido sufre un giro suave de 90º dentro de la celda. La luz no
polarizada entra al primer filtro polarizador y sale polarizada en el mismo plano que la orientación local de las moléculas
de cristal líquido. La disposición girada (twisted) de las moléculas de cristal líquido dentro de la celda actúan como guía
de las ondas luminosas y rotan el plano de polarización en un cuarto de giro (90º) de manera que la luz que alcanza el
segundo polarizador (analizador) puede atravesarlo. En este estado la celda de cristal líquido es transparente. Cuando se
aplica un voltaje a los electrodos, las moléculas de cristal líquido tienden a alinearse con el campo eléctrico resultante E, y
de esta forma se pierden su propiedad de guía de las ondas luminosas, bloqueándose el paso de la luz polarizada. Cuando
se desconecta el campo eléctrico, las moléculas tienden a adoptar de nuevo el estado girado (twisteado) y la celda se
convierte de nuevo en transparente.
25
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
polarizador polarizador
analizador analizador
1.5 Impresoras
26
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Control
martillos
cinta entintada
bobina
A A A A A A A A
B B B B B B BB papel
C C C C C C C C
imanes
inicio de revolución
Amp
fila de caracteres
deflexión
vertical
electrodo
de carga
0 - 200 V papel
3 kV
Control
Filtro
Tinta
27
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Rayo Laser
Espejo
octogonal
rotatorio
Emisor de Modulador
Laser
Rodillo de
arrastre
Toner
Cilindro
giratorio
Ratón
fotodetector Contador
Y
Contador
X
fotodetector
28
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
2. Buses de comunicación
Un bus es un medio compartido de comunicación constituido por un conjunto de líneas (conductores) que conecta
las diferentes unidades de un computador. La principal función de un bus será, pues, servir de soporte para la realización
de transferencias de información entre dichas unidades. La unidad que inicia y controla la transferencia se conoce como
master del bus para dicha transferencia, y la unidad sobre la que se realiza la transferencia se conoce como slave. Los
papeles de master y slave son dinámicos, de manera que una misma unidad puede realizar ambas funciones en
transferencias diferentes. Por ejemplo, una unidad de DMA hace de slave en la inicialización que realiza el master, la CPU,
para una operación de E/S. Sin embargo, cuando comienza la operación, la unidad de DMA juega el papel de master frente
a la memoria, que en esta ocasión hace de slave.
Para garantizar el acceso ordenado al bus, existe un sistema de arbitraje, centralizado o distribuido, que establece
las prioridades cuando dos o más unidades pretenden acceder al mismo tiempo al bus, es decir, garantiza que en cada
momento sólo exista un master.
Para establecer el tiempo de duración de las transferencias y que sea conocido tanto por el master como por el
slave, un bus debe disponer de los medios necesarios para la sincronización master-slave.
Existen buses con líneas independientes para cada uno de los anteriores tipos de información. En cambio en
otros se utilizan las mismas líneas multiplexadas en el tiempo.
2. Líneas de control: transmiten las órdenes que determinan la operación de transferencia a realizar por las líneas
de datos y direcciones, y marcan el ordenamiento temporal de las señales que circulan por el bus. Las
primeras son las líneas de control propiamente dichas, de las que las más importantes son:
• Escritura en memoria
• Lectura de memoria
• Operación de salida
• Operación de entrada
Las segundas son las líneas de sincronismo, entre las que cabe citar las siguientes:
• Reconocimiento de transferencia
• Reloj
• Reset
3. Líneas de arbitraje: establecen la prioridad entre diferentes peticiones de acceso al bus. Por ejemplo:
29
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
direcciones, datos
control
arbitraje
Líneas unidireccionales
• Emisor simple
control tri-state
• Emisor múltiple
colector abierto
Líneas bidireccionales
30
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
control tri-state
Desde el punto de vista físico un bus es un conjunto de conductores eléctricos paralelos dispuestos sobre una
tarjeta de circuito impreso. Los dispositivos del sistema se conectan a través de conectores (slots) dispuestas a intervalos
regulares a lo largo del bus.
T a rje ta
C o n e c to r
B us
La disposición anterior corresponde generalmente a los buses del sistema. Los denominados buses de
entrada/salida conectan las unidades a través de cables.
2.2.1 Síncronos
En los buses síncronos existe un reloj que gobierna todas las actividades del bus, las cuales tienen lugar en un número
entero de ciclos de reloj. La transferencia propiamente dicha coincide con uno de los flancos del reloj (el de bajada en el
ejemplo de la figura).
31
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Reloj
tiempo de establecimiento
Dirección
tiempo de mantenimiento
Datos
R/W
En este caso hemos supuesto que el tiempo de acceso al slave es menor de un ciclo, es decir, en cada ciclo tiene lugar
una operación con memoria. Los buses síncronos son rápidos pero no tienen capacidad para conectar unidades con
velocidad de transferencia baja. o no conocida a priori.
2.2.2 Asíncronos
Los buses asíncronos utiliza un protocolo tipo handshaking para comunicarse el master con el slave.
En el siguiente diagrama se presenta el diálogo de señales que tiene lugar durante una transacción de lectura de
memoria por parte de la CPU utilizando un protocolo asíncrono (handshaking) sobre un bus que multiplexa las direcciones
y los datos sobre las mismas líneas (datos/dirección).
1) La CPU activa la señal de lectura al tiempo que coloca la dirección de la posición a leer en las líneas
datos/dirección.
2) La Memoria detecta la activación de lectura, lee la dirección que hay en datos/dirección y activa la señal de
reconocimiento para indicar que ha detectado la orden de lectura.
3) la CPU detecta la activación de reconocimiento y en respuesta desactiva la señal de lectura y libera las líneas
de datos/dirección.
4) La memoria detecta que se ha desactivado la señal de lectura y desactiva la señal de reconocimiento para dar
por terminado el reconocimiento de la orden de lectura.
5) Cuando la memoria ha accedido al dato y lo tiene preparado lo pone en datos/dirección y activa la señal de
dato disponible.
6) La CPU detecta que dato disponible está activa y procede a leer los datos del bus y activar la línea de
reconocimiento para indicar que ya dispone del dato.
7) La memoria detecta la señal de reconocimiento, desactiva dato disponible y libera las líneas de
datos/dirección.
8) Finalmente, la CPU al detectar que se desactiva dato disponible, desactiva, a su vez, la señal de
reconocimiento, indicando que la transmisión ha finalizado.
32
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
lectura
reconocimiento
dato disponible
Un bus asíncrono trabaja igual que un par de máquinas de estados finitos que se comunican de tal forma que uno
de los autómatas no avanza hasta que sabe que el otro autómata ha alcanzado un determinado estado, es decir, los dos
autómatas están coordinados.
Los buses asíncronos se escalan mejor con los cambios de tecnología y pueden admitir una mayor variedad de
velocidades de respuesta en los dispositivos.
CPU Memoria
reconocimiento = 1 lectura = 1
reconocimiento = 0 lectura = 0
2.2.3 Semisíncronos
En los protocolos semisíncronos existe, como en los síncronos, un reloj que gobierna las transferencias en el bus. Sin
embargo, en este caso existe, además, una señal de espera (wait) que es activada por el slave cuando la transferencia va a
durar más de un ciclo de reloj. De esta forma, los dispositivos rápidos operarán como en bus síncrono, mientras que los
lentos alargarán la operación el número de ciclos que les sea necesario.
33
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Reloj
Dirección
Datos
Espera
Lectura
Escritura Escritura Lectura asíncrona
síncrona asíncrona síncrona
Master SYNC
Slave SYNC
Datos
dirección dato
Master Æ Slave Slave Æ Master
3. Protocolos de arbitraje
La demanda para utilizar el bus en un computador puede provenir de diferentes unidades, no sólo de la CPU. Por
ejemplo, si el computador tiene E/S por DMA, éste demandará el uso del bus cuando tenga el control de la operación
con la memoria. Los procesadores de E/S necesitan acceder al bus no sólo para realizar las transferencias de datos por
DMA, sino también para leer su programa de canal. Por supuesto, si el sistema es multiprocesador (más de una CPU
con memoria compartida) los candidatos al uso del bus aumentan.
Para garantizar que en todo momento sólo una unidad acceda al bus, se utilizan los protocolos de arbitraje. Los
protocolos de arbitraje organizan el uso compartido del bus, estableciendo prioridades cuando más de una unidad
solicita su utilización y garantizando, sobretodo, que el acceso al bus es realizado por un solo master.
Existen dos grupos de protocolos de arbitraje, los centralizados y los distribuidos. En los primeros existe una
unidad de arbitraje, el árbitro del bus, encargado de gestionar de forma centralizada el uso del bus. El árbitro puede ser
una unidad físicamente independiente o estar integrado en otra unidad, por ejemplo, la CPU. Por el contrario, en los
protocolos distribuidos no existe ninguna unidad especial para la gestión del bus. Esta se realiza de forma distribuida
entre las unidades de acceso.
Examinaremos en los siguientes apartados diferentes protocolos de arbitraje, tanto centralizados como
distribuidos.
34
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
El master que quiere acceder al bus activa la señal de petición (out) y los demás masters la propagan hasta el
árbitro. El árbitro activa la señal de concesión que es propagada por los masters que no solicitaron el acceso al bus. El
master que recibe la señal de concesión y tiene una petición pendiente toma el control del bus. Si un master recibe una
señal de petición mientras está accediendo al bus, bloquea su propagación al árbitro hasta que finalice la utilización del
bus.
concesión
in out in out in out
M1 M2 Mn
petición
out in out in out in
ARBITRO
BUS
Cuando un master toma el control del bus activa la línea de ocupación. El árbitro sólo activa la
línea de concesión cuando recibe una petición y la línea de ocupación está desactivada. Como en el caso
anterior, si un master recibe la concesión y no ha solicitado el bus, transmite la señal al siguiente master.
Un master toma el control del bus si tiene una petición local pendiente, la línea de ocupación está
desactivada y recibe el flanco de subida de la señal de concesión.
concesión
M1 M2 Mn
petición
ARBITRO
ocupación
BUS
35
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
realiza la selección del siguiente master. Para ello se añade una cuarta línea al esquema anterior, la línea de
reconocimiento.
concesión
M1 M2 Mn
petición
ARBITRO
ocupación
reconocimiento
BUS
La línea de reconocimiento la activa un master que solicitó el bus (activó petición) y recibió la concesión pero la
línea de ocupación estaba activa (bus ocupado). Cuando el árbitro recibe la activación de reconocimiento inhibe su
actuación, es decir, deja de atender la señal de petición y generar la de concesión. El master queda en espera para ocupar el
bus tan pronto lo abandone su actual usuario, que lo hará desactivando la señal de ocupación. Cuando esto ocurre, el
master ocupa el bus y desactiva la señal de reconocimiento, con lo que el arbitro recupera su actuación, procediendo a un
nuevo arbitraje entre los master solicitantes, simultáneamente con la operación de transacción en el bus. En la siguiente
figura hemos representado el diálogo de señales correspondiente a una ocupación del bus por el master M1, seguido por el
arbitraje a favor de M2 mientras M1 realiza su transacción, y terminando con la ocupación del bus por M2 cuando M1
finaliza:
M1 M2
petición
M1 M2
concesión
M1 M2
ocupación
M2
reconocimiento
M1 M2 Mn
log2n
concesión
ARBITRO
petición
ocupación
BUS
36
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
M1 M2 Mn
concesión-1
petición-1
ARBITRO
concesión-2
petición-2
concesión-n
petición-n
BUS
M1 M2 M3 Mn
R1 G1 R2 G2 R3 G3 Rn Gn
P1 G1 P2 G2 P3 Rn Pn
Arbitro 1 Arbitro 2 Arbitro 3 Arbitro n
Bucle de prioridad
ocupación
37
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Red Vídeo
Sin embargo, cuando el número de dispositivos conectados a un bus aumenta disminuye su rendimiento. Esto es
debido a dos motivos fundamentales. El primero el aumento del retardo de propagación de las señales debido al aumento
de longitud de los conductores que dan soporte al bus. Esto afecta especialmente a la propagación encadenada de la señal
de concesión del bus. El segundo el incremento de demanda de acceso que se produce al aumentar el número de
dispositivos conectados. Este exceso de dispositivos puede crear un cuello de botella que haga que el rendimiento del
sistema se degrade por la espera inútil que se origina cuando tienen que realizar transferencias.
Por otra parte, las diferencias en la velocidad de operación de los dispositivos conectados también repercute
negativamente en el rendimiento de un bus. En efecto, los dispositivos lentos pueden ocasionar retrasos importantes a los
rápidos. Por ejemplo, supongamos que un procesador que opera a 200 MHz (Tc = 5 ns, 100 MIPS) y con un CPI = 2. se
conecta a un único bus compartido por la cache, la memoria y los dispositivos de E/S, entre ellos un disco con 10 ms de
tiempo de acceso y 15 MB/seg de velocidad de transferencia. Durante la transferencia de disco a memoria de un archivo de
512 KB se emplearán 10 ms + 512 KB/ 15.000 KB/s = 44,1 ms. En este tiempo la CPU podría haber ejecutado 0,0441 *
100 * 106 = 4,41 millones de instrucciones.
Para evitar la caída de rendimiento, el sistema de buses se jerarquiza, apareciendo dos buses más: el bus local, y el
bus de E/S.
Adaptador
de bus
El bus local es de longitud pequeña, de alta velocidad, y adaptado a la arquitectura particular del sistema para
maximizar el ancho de banda entre el procesador y la caché, por eso suele ser un bus propietario. Este bus aísla el tráfico
procesador-caché del resto de transferencias del sistema.
El bus de E/S o de expansión reduce el tráfico en el bus del sistema, de manera que el procesador puede acceder a
memoria en un fallo de caché mientras realiza una operación de entrada/salida.
38
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Los buses de expansión son buses estándar o abiertos (ISA, EISA, PCI, etc.) es decir, independientes del
computador y con unas características bien definidas en el correspondiente documento de normalización. La existencia de
estos buses permite diseñar una amplia gama de controladores de periféricos compatibles.
Para conectar los buses del sistema y de expansión se requiere un Adaptador de Bus, dispositivo que permite
adaptar las distintas propiedades de ambos buses: velocidad, carácter síncrono o asíncrono, multiplexación, etc.
El proceso de jerarquización se puede complicar más con otras topologías que den cabida a dispositivos de distinta
velocidad. De esta forma se equilibra mejor el tráfico de información en sistemas que operan con muchos dispositivos
conectados. En la figura siguiente se muestra una topología jerárquica en la que se contempla un bus de alta velocidad del
que cuelgan dos buses, uno de expansión para dispositivos rápidos y otro de E/S para dispositivos lentos.
Adaptador
de bus
Bus de E/S
Bus de expansión
5. Buses normalizados
Las especificaciones de un bus estándar están perfectamente definidas en un documento de
estandarización respaldado por alguna sociedad de prestigio en el área (IEEE, etc.). En las especificaciones
se distinguen varios niveles:
• Nivel mecánico, en el que se recoge la forma y tamaño de los conectores, el número de contactos
por conector y el número de dispositivos que soporta el bus.
39
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
• Nivel eléctrico, en el que se especifican los valores de tensión de las diferentes señales,
polarización, etc.
• Nivel lógico, especifica la función de cada señal del bus: direcciones, datos, control, etc.
El bus PCI es un bus de ancho de banda elevado e independiente del procesador. El estándar actual permite el uso de
hasta 64 líneas de datos a 66 MHz, para una velocidad de transferencia de 528 MBytes/s, o 4,224 Gbps. El PCI está
diseñado para permitir una cierta variedad de configuraciones basadas en microprocesadores, incluyendo sistemas con uno
o varios procesadores. Utiliza temporízación síncrona y un esquema de arbitraje centralizado.
5.1.1 Estructura
El bus PCI puede configurarse como un bus de 32 o 64 bits. La siguiente tabla define las líneas más importantes
obligatorias en el PCI:
RST# (reset) Hace que todos los registros y señales específicas del PCI pasen al estado inicial.
FRAME# Activada por el master para indicar el comienzo y la duración de una transferencia. Las activa al
comienzo y la desactiva al final de la fase de datos.
IRDY# Señal de master preparado (Initiator Ready). La proporciona el master actual del bus (el iniciador de
la transacción). Durante una lectura, indica que el master está preparado para aceptar datos; durante
una escritura indica que el dato válido está en AD.
TRDY# Señal de slave preparado (Target Ready). La activa el slave al principio de la transferencia, y la
desactiva cuando no puede completar la transferencia en un solo ciclo de reloj
DEVSEL# Señal de slave (dispositivo) seleccionado (Device Select). Activada por el slave cuando ha reconocido
su dirección.
Señales de arbitraje
REO# Indica al árbitro que el dispositivo correspondiente solicita utilizar el bus. Es una línea punto-a-punto
específica para cada dispositivo.
GNT# Indica al dispositivo que el árbitro le ha cedido el acceso al bus. Es una línea punto-a-punto específica
para cada dispositivo.
5.1.2 Ordenes
40
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
La actividad del bus consiste en transferencias entre dos elementos, denominándose maestro al que inicia la
transacción. Cuando un maestro del bus adquiere el control del mismo, determina el tipo de transferencia que se producirá
a continuación. Los tipos, entre otros son los siguientes:
• Reconocimiento de interrupción
• Lectura de E/S
• Escritura en E/S
• Lectura de memoria
• Escritura en memoria
1 2 3 4 5 6 7 8
CLK
a
FRAME h
d
AD direccion dato-1 dato-2 dato-3
b e
C/BE lectura byte activo byte activo byte activo
c
g
IRDY
i
f
TRDY
DEVSEL
Los dispositivos interpretan las señales del bus en los flancos de subida, al comienzo del ciclo. A continuación, se
describen los eventos significativos señalados en el diagrama:
a) Una vez que el master ha obtenido el control del bus, inicia la transacción:
• activando FRAME, que permanece activa hasta la última fase de datos
• situando la dirección de inicio en el bus de direcciones
• situando la orden de lectura en las líneas C/BE.
c) El master deja libre las líneas AD del bus y cambia la información de las líneas C/BE para indicar qué líneas AD
se utilizan para transportar datos (de 1 a 4 bytes). También activa IRDY para indicar que está preparado para
recibir el primer dato (*).
41
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
d) El slave activa DEVSEL para indicar que ha reconocido su dirección. Después sitúa el dato solicitado en las líneas
AD y activa TRDY para indicar que hay un dato válido en el bus.
e) El master lee el dato al comienzo del ciclo de reloj 4 y cambia las líneas C/BE según se necesite para la próxima
lectura.
f) En este ejemplo el slave necesita algún tiempo para preparar el segundo bloque de datos para la transmisión. Por
tanto desactiva TRDY para señalar al master que no proporcionará un nuevo dato en el próximo ciclo. En
consecuencia el master no lee las líneas de datos al comienzo del quinto ciclo de reloj y no cambia la señal C/BE
durante ese ciclo. El bloque de datos es leído al comienzo del ciclo de reloj 6.
g) Durante el ciclo 6 el slave sitúa el tercer dato en el bus. No obstante, en este ejemplo, el master todavía no está
preparado para leer el dato. Para indicarlo, desactiva IRDY. Esto hará que el slave mantenga el tercer dato en el
bus durante un ciclo de reloj extra.
h) El master sabe que el tercer dato es el último, y por eso desactiva FRAME para indicárselo al slave. Además
activa IRDY para indicar que está listo para completar esa transferencia.
i) El master desactiva IRDY, haciendo que el bus vuelva a estar libre, y el slave desactiva TRDY y DEVSEL.
(*) Nota: En todas las líneas que pueden ser activadas por más de un dispositivo se necesita un ciclo de cambio (indicado
por las dos flechas circulares) para que pueda ser utilizado por el dispositivo de lectura.
5.1.4 Arbitraje
El bus PCI utiliza un esquema de arbitraje centralizado síncrono, en el que cada maestro tiene una señal propia de
petición (REQ) y cesión (GNT) del bus. Estas líneas se conectan a un árbitro central. La especificación PCI no indica un
algoritmo particular de arbitraje. El árbitro puede utilizar un procedimiento de primero en llegar primero en servirse, un
procedimiento de cesión cíclica (round-robin), o cualquier clase de esquema de prioridad. El maestro del PCI establece,
para cada transferencia que desee hacer, si tras la fase de dirección sigue una o más fases de datos consecutivas.
La siguiente figura es un ejemplo en el que se arbitra a cuál de los dispositivos A y B se cede el bus. Se produce la
siguiente secuencia:
42
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
1 2 3 4 5 6 7
CLK
a
REQ#-A
b
REQ#-B
c
GNT#-A
e
GNT#-B
d f g
FRAME
IRDY#
TRDY#
acceso A acceso B
a) En algún momento anterior al comienzo del ciclo de reloj 1, A ha activado su señal REQ. El árbitro muestrea esa
señal al comienzo del ciclo de reloj 1.
b) Durante el ciclo de reloj 1, B solicita el uso del bus activando su señal REQ.
d) El maestro del bus A muestrea GNT-A al comienzo del cielo de reloj 2 y conoce que se le ha cedido el acceso al
bus. Además, encuentra IRDY y TRDY desactivados, indicando que el bus está libre. En consecuencia, activa
FRAME y coloca la información de dirección en el bus de direcciones, y la orden correspondiente en las líneas
C/BE. Además mantiene activa REQ-A, puesto que tiene que realizar otra transferencia después de la actual.
e) El árbitro del bus muestrea todas las líneas GNT al comienzo del ciclo 3, y toma la decisión de ceder el bus a B
para la siguiente transacción. Entonces activa GNT-B y desactiva GNT-A. B no podrá utilizar el bus hasta que éste
no vuelva a estar libre.
f) A desactiva FRAME para indicar que la última transferencia de datos está en marcha. Pone los datos en el bus de
datos y se lo indica al dispositivo destino con IRDY. El dispositivo lee el dato al comienzo del siguiente ciclo de
reloj.
g) Al comienzo del ciclo 5, B encuentra IRDY y FRAME desactivados y, por consiguiente, puede tomar el control del
bus activando FRAME. Además, desactiva su línea REQ, puesto que sólo deseaba realizar una transferencia.
Hay que resaltar que el arbitraje se produce al mismo tiempo que el maestro actual del bus está realizando su
transferencia de datos. Por consiguiente, no se pierden ciclos de bus en realizar el arbitraje. Esto se conoce como arbitraje
oculto o solapado (hidden arbitration).
43
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
El bus USB (Universal Serial Bus) es un bus normalizado para la conexión de periféricos, desarrollado por
empresas de informática y telecomunicaciones (7 compañías: Compaq, DEC, IBM, Intel, Microsoft, NEC y Northern
Telecom). Permite conectar de forma sencilla dispositivos periféricos al computador, sin necesidad de reiniciarlo ni de
configurar el sistema. Se pueden conectar hasta 127 dispositivos, con una longitud máxima de cable de 5 metros para cada
uno, con lo que una conexión en cadena permitiría que el último dispositivo estuviese a 635 metros del ordenador.
Trabaja en dos modos, a baja velocidad, 1,5 Mbps, para dispositivos lentos como teclados y ratones, y a alta
velocidad, 12 Mbps, para dispositivos rápidos, como CD-ROM , módems, etc. Utiliza un cable de cuatro hilos, dos para
datos y dos para alimentación. El bus USB está organizado en una estructura de árbol descendente, con unos elementos
especiales, llamados hubs que encaminan las señales desde un dispositivo al host o viceversa. En la raíz está el host, que es
el interfaz entre el bus USB y el bus del ordenador. De él cuelgan los dispositivos USB y los hubs, que también son
dispositivos USB. A un hub se puede conectar uno o más dispositivos, que a su vez pueden ser otros hubs.
Cuando se conecta un dispositivo, se detecta la diferencia de tensión en la red USB y procede a determinar las
características del dispositivo (vendedor, funcionalidad, ancho de banda requerido, etc.). El host le asigna una dirección
única ID para diferenciarlo del resto de los dispositivos de la red USB. Después el SO carga los drivers del dispositivo,
solicitándolos al usuario si es necesario. Cuando se desconecta el dispositivo, el host lo detecta y descarga los drivers. El
host USB tiene, entre otras, las siguientes funciones:
Detectar la conexión de nuevos dispositivos al sistema .
Detectar la desconexión de dispositivos previamente conectados,
Enumerar y configurar los dispositivos conectados al sistema.
Administrar y controlar el flujo de datos entre el host y los dispositivos USB.
Administrar y controlar las transferencias síncronas y asíncronas de información.
Recoger y resumir estadísticas de actividad y estado de los elementos del sistema.
Proporcionar energía eléctrica a algunos dispositivos del computador (teclado, ratón, etc.).
Un puerto serie es capaz de transmitir hasta 112,5 KB/s y un puerto paralelo entre 600KB/s y 15MB/s, sin embargo la
velocidad de transferencia de un puerto USB está entre 1,5MB/s y 12MB/s. El FIREWIRE (IEEE 1394), maneja
transferencias entre 100MB/s y 400MB/s, que permite conectar hasta 63 dispositivos y un cable de 4.5 metros por
dispositivo, permitiendo al igual que el USB la conexión en operación.
Uno de los problemas del puerto USB es que suministra solamente 500 miliamperios de corriente para los dispositivos
conectados, que aunque es suficiente para la mayoría de los dispositivos que se conectan a este puerto, resulta pequeña
cuando conectamos varios dispositivos sin fuente de alimentación propia.
Otra de las funciones importantes de los hubs es la de aislar a los puertos de baja velocidad de las transferencias de alta
velocidad, proceso sin el cual todos los dispositivos de baja velocidad conectados al bus entrarían en colapso.
La protección de los dispositivos lentos de los rápidos ha sido siempre un problema importante en el diseño redes
mixtas, como es USB. El hub está compuesto por dos unidades principales: el Controlador y el Repetidor.
El Repetidor tiene la función de analizar, corregir y retransmitir la información que llega al hub hacia los puertos del
mismo. Contiene una memoria de varios registros para sus funciones.
44
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
El Controlador es una pequeña CPU de supervisión de las múltiples funciones realiza un hub.
Todos los dispositivos conectados acceden al canal o medio para transmitir sus datos siguiendo un protocolo
administración del host análogo al de token ring, que consecutivamente va dando la posibilidad de transmisión a cada
periférico.
5.2.1 Arquitectura
En la siguiente figura aparece un diagrama de bloques de un microcontrolador USB:
DPO D MO
Tra n s c e iv e r
S IE
(Ser ia l Bu s
In t er fa ce E n gin e)
F IU
(F u n ct ion
In t er fa ce U n it ) Bu s
Bu s Tr a n sm it
Da t os Receive
CP U
F IF Os
Transceiver El cable USB dispone de solo cuatro hilos: Vbus, D+, D- y GND. La información y los datos van por los
hilos D+ y D-, con dos velocidades: 12Mbps o 1.5Mbps. El Transceiver, incorporado dentro del chip controlador,
constituye la interfaz de un dispositivo externo con el resto del sistema.
SIE (Serial Interface Engine) Tiene la función de serializar y paralelizar las transmisiones, además maneja los
protocolos de comunicación, las secuencias de paquetes, el control CRC y la codificación NRZI.
FIU (Function Interface Unit) Administra los datos que son transmitidos y recibidos por el cable USB. Se basa y
apoya en el contenido y estado de las memorias FIFOs. Controla los estados de las transacciones, los buffer FIFO, y
solicita atención para diversas acciones a través de interrupciones.
FIFOs Los controladores típicos disponen de un total de 8 buffer tipo FIFO, cuatro destinadas a la transmisión y
cuatro a la recepción de datos. Tanto para la transmisión como para la recepción, los buffer soportan cuatro tareas o
funciones, numeradas de 0 a 3.
5.2.2 Protocolo
Toda transferencia de datos o transacción que emplee el bus, involucra al menos tres paquetes de datos. Cada
transacción se da cuando el host decide qué dispositivo hará uso del bus. Para ello envía un paquete al dispositivo
específico. Cada dispositivo tiene un número de identificación, asignado por el Controlador de host cuando arranca el
computador o cuando un se conecta un dispositivo nuevo al sistema. De esta forma, cada periférico puede determinar si es
el receptor de un paquete de datos. Técnicamente un paquete de datos se denomina Token Packet.
45
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
Este protocolo tiene un sistema muy eficiente de recuperación de errores, empleando uno de los modelos más
seguros como es el CRC (Código de Redundancia Cíclica). Y puede estar implementado al nivel de software y/o hardware
de manera configurable.
Asíncrona
Síncrona
Bulk
La transmisión Bulk, es una comunicación no periódica, utilizada por transferencias que requieren todo el ancho
de banda disponible o en su defecto son retrasadas hasta que el ancho de banda completo esté disponible. Aparecen en el
movimientos de imágenes o vídeo, donde se requiere una gran capacidad de transferencia en poco tiempo.
Control
Es un tipo de comunicación exclusivamente entre el host y el dispositivo que permite configurar este último. Sus
paquetes de datos son de 8, 16, 32 o 64 bytes, dependiendo de la velocidad del dispositivo que se pretende controlar.
Interrupción
Este tipo de comunicación está disponible para aquellos dispositivos que demandan mover muy poca información
y con poca frecuencia. Su paquete de datos tiene las mismas dimensiones que el de las transmisiones de control.
Versiones
La especificación original SCSI, la SCSI-1, se desarrolló en los años 80. SCSI-1 utiliza 8 líneas de datos y opera a una
frecuencia de reloj de 5 MHz, o a una velocidad de datos de 5 MBytes/s. SCSI-1 permite conectar al computador hasta
siete dispositivos. En 1991 se introdujo SCSI-2. Los cambios más notables fueron la expansión opcional a 16 o 32 líneas
de datos y el aumento de la frecuencia de reloj a 10 MHz. Como resultado se tiene una velocidad de datos máxima de 20 o
40 Mbytes/s.
Fases
Todos los intercambios en el bus SCSI se producen entre un dispositivo iniciador y un dispositivo seleccionado.
Normalmente, el computador es el iniciador y un controlador periférico el dispositivo seleccionado, pero algunos
dispositivos pueden asumir los dos papeles. En cualquier caso, toda la actividad del bus se produce en una secuencia de
fases:
• Arbitraje: determina el dispositivo que toma control del bus, de manera que pueda iniciar o reanudar una operación
de E/S.
• Selección: de un dispositivo para realizar una operación, por ejemplo, una orden de lectura o escritura.
• Reselección: permite que el dispositivo seleccionado se vuelva a conectar al iniciador para reanudar una operación
iniciada previamente, pero suspendida por el dispositivo.
46
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
• Datos: el dispositivo solicita la transferencia de un dato hacia el iniciador (entrada de datos, Data In) o viceversa
(salida de datos, Data Out).
• Mensaje: el dispositivo solicita la transferencia de uno o más mensajes desde el iniciador (entrada de mensaje,
Message In) o viceversa (salida de mensaje, Message Out).
La siguiente figura ilustra el orden en que se producen las fases del bus SCSI:
Condición de
encendido o
inicio
Después de conectarse el sistema, o después de un reinicio, el bus pasa a la fase de bus libre. A ésta le sigue la
fase de arbitraje, que da lugar a que un dispositivo tome el control. Si el arbitraje falla, el bus vuelve a la fase de bus libre.
Cuando el arbitraje termina con éxito, el bus pasa a una fase de selección o reselección, en la que se designa un iniciador y
un dispositivo seleccionado para realizar la transferencia. Después de determinados los dos dispositivos, se producirá una o
más fases de transferencia de información entre ambos (fases de orden, datos, estado y mensaje). La fase final de
transferencia de información es normalmente la fase de entrada de mensaje, en la que un mensaje de desconexión o de
orden completa se transfiere al iniciador, seguida de una fase de bus libre. Una característica importante del bus SCSI es la
capacidad de reselección. Si una orden enviada necesita algún tiempo para completarse, el dispositivo seleccionado puede
liberar el bus y volverse a conectar al iniciador más tarde. Por ejemplo, el computador puede enviar una orden a un
dispositivo de disco para que dé formato al disco, y el dispositivo realiza la operación sin necesidad de acceder al bus.
Líneas de señal
Operación (temporización)
Para aclarar el papel de cada señal en las distintas fases (estados) del bus, analizaremos una
operación de lectura que transfiere datos desde un dispositivo periférico al iniciador (computador). Esta
sigue las siguientes fases:
47
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
El arbitraje se realiza con la señal BSY y las 8 señales de datos, la 7 asignada al computador, y las
otras 7 asignadas a otros tantos dispositivos (7 es el número máximo de dispositivos que se pueden
conectar al SCSI-1). El dispositivo que quiere acceder al bus activa BSY y su señal de datos asociada.
Entre las señales de datos existe una prioridad, siendo la 7 la más prioritaria y la 0 la menos prioritaria.
Cada dispositivo conoce si puede acceder al bus leyendo las líneas de datos. Si no hay otra activa con
mayor prioridad accederá al bus. En nuestro caso es la CPU quien accede (máxima prioridad) para realizar
la lectura.
BSY
SEL
C/D
I/O
REQ
ACK
DB(7-0)
byte orden byte orden gyte datos byte datos byte estado orden completa
Mensajes
• Orden completa
• Desconexión
48
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05
49