Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción A La Estructura de Computadores
Introducción A La Estructura de Computadores
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 mquina, bsicamente, 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, diferencindose unas de otras
fundamentalmente en los parmetros de rendimiento y el coste. Finalmente, la estructura de un
computador se puede implementar con diferentes tecnologas, siendo nuevamente el coste y el
rendimiento los elementos diferenciales. Arquitectura, estructura y tecnologa constituyen, pues,
tres niveles de estudio del hardware de un computador.
En esta asignatura abordaremos el estudio de la organizacin o estructura interna de un
computador. Para ello la materia la dividiremos en cuatro mdulos. En el primero realizaremos
una introduccin general a la estructura de computadores. En el segundo estudiaremos la
arquitectura del repertorio de instrucciones (ISA), arquitectura que define la interfaz hardwaresoftware de la mquina. En el tercero veremos toda la jerarqua de memoria de una mquina y
su gestin. Finalmente, en el cuarto estudiaremos las unidades de entrada/salida, los perifricos
y los buses de comunicacin. El estudio de la unidad aritmtico-lgica y la unidad de control se
aborda en la asignatura Ampliacin de Estructura de Computadores.
Para situar con mayor precisin el objeto de estudio de esta asignatura analizaremos en el
apartado siguiente los diferentes niveles de descripcin que se suelen contemplar en el estudio de un
computador digital.
2. Niveles de descripcin de un computador
La estrategia que habitualmente se utiliza para abordar el estudio de los sistemas
complejos consiste en especificarlos a diferentes niveles de abstraccin. Cada nivel se
caracteriza por:
A) Unos elementos de entrada, es decir, disponibles para el diseo en este nivel, y que
proceden del nivel inmediato inferior.
B) Unos elementos de salida, es decir, objetivos del diseo en este nivel, y destinados al
nivel inmediato superior.
C)
Con esta estrategia, la complejidad del sistema queda dividida, acotada y organizada en las
complejidades parciales de cada nivel, dentro de cuyos lmites se puede aplicar una metodologa
propia de estudio.
Al computador digital como sistema artificial complejo se le ha aplicado esta estrategia.
En nuestro caso consideraremos los siguientes niveles de abstraccin dentro del estudio de un
computador digital:
APLICACIONES
ALGORITMOS
ARQUITECTURA
Estructura de
Computadores
TRANFERENCI DE REGISTROS
LOGICO
ELECTRONICO
FISICO
Cada nivel se corresponde con la visin que tiene del sistema un tipo determinado de
usuario, y en cada uno podemos considerar dos procesos de estudio diferentes, el anlisis y la
sntesis. El anlisis parte de la implementacin del sistema a un cierto nivel en trminos de
elementos bsicos del nivel inferior, y llega a determinar la funcin del mismo, es decir, su
especificacin. El sentido de la sntesis es el opuesto, parte de la especificacin de un sistema y
obtiene su implementacin en funcin de los elementos bsicos del nivel inferior. En la siguiente
figura hemos representado grficamente esta relacin:
Anlisis
ESPECIFICACION
IMPLEMENTACION
Sntesis
Ejemplo:
a
a +b
Su m a dor
Sn t esis
a r r a st r e
a
a b a +b a r r a st r e
0
0
1
1
0
1
0
1
0
1
1
0
0
0
0
1
E specifica cin
An lisis
a +b
a r r a st r e
Im plem en t a cin
DD
OUT
IN
VSS
F s ic o (s ilic io )
Nivel Electrnico
En este nivel los elementos de salida, es decir, los biestables y las puertas lgicas, se
obtiene a partir de dispositivos electrnicos (resistencias, transistores, etc.) conectados segn
una determinada topologa. Como metodologa de estudio (anlisis y sntesis) en este nivel se
utilizan tcnicas cuantitativas de anlisis en el plano elctrico-temporal, fundamentalmente
ecuaciones algebraicas y diferenciales.
VD
D
IN
OUT
VS S
Nivel Lgico
Los elementos de entrada a este nivel son los biestables y las puertas lgicas, y los de
salida son mdulos combinacionales y secuenciales tales como multiplexores, codificadores,
sumadores, registros, contadores, etc. Este nivel de estudio dispone de sus propias tcnicas de
anlisis y sntesis. El comportamiento de un circuito combinacional se representa con una
funcin lgica que admite una expresin algebraica manipulable simblicamente dentro de un
formalismo matemtico: el lgebra de conmutacin (un lgebra de Boole). Para los circuitos
secuenciales se utiliza la teora de las mquinas de estados finitos.
NQ
NQ
Circ u ito l g ic o
Transferencia de Registros (RT)
Los elementos de entrada al nivel RT son registros, mdulos combinacionales y
elementos de interconexin (buses y/o multiplexores). Los primeros mantienen el estado del
sistema, los segundos definen las transformaciones elementales del estado, y los terceros
permiten el intercambio de informacin entre los dos primeros. Los elementos de salida son el
conjunto de transferencias elementales posibles en la ruta de datos construida con los tres tipos
de elementos de entrada. Al contrario de lo que ocurra en los dos niveles anteriores, el nivel RT
no dispone de una herramienta propia de anlisis y sntesis, aunque s es posible utilizar los
modernos lenguajes de descripcin hardware (por ejemplo VHDL) como instrumentos de
expresin precisa y estndar a este nivel.
bus
RMIC
RMICAUX
SECUENCIADOR
RI
MAR
ROM
DE
CONTROL
bus
Transferencia de registros
Arquitectura (lenguaje mquina)
Este es el nivel que separa el hardware del software. Los elementos bsicos de entrada
son las transferencias y transformaciones posibles de informacin en la ruta de datos de un
computador. Con ellos se construyen las instrucciones mquina y su mtodo de
secuenciamiento, es decir, lo que se denomina un lenguaje mquina. Lo ms significativo de
este nivel es que con l comienzan los niveles propiamente simblicos, es decir, niveles cuyos
componentes bsicos no son objetos fsicos, sino smbolos relacionados por un lenguaje, el
instrumento por excelencia del conocimiento simblico.
El nivel de lenguaje mquina suele ser el primer nivel al que tiene acceso el usuario de
un computador, salvo si la mquina 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 mquina, sino una representacin simblica del mismo conocida
como lenguaje ensamblador, que ofrece algunas prestaciones ms que el puro lenguaje
mquina, como el uso de macros y la definicin simblica 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 representacin 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 mquina de un computador.
M em oria
R egistros
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 semntica que lo
separa de los lenguajes de alto nivel, y facilitar as el diseo del compilador. La
microprogramacin es la tcnica de diseo de la unidad de control con la flexibilidad suficiente
para facilitar la implementacin de las mquinas 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 mquina.
En segundo lugar tenemos el planteamiento RISC (Reduced Instruction Set Computer),
que simplifica la complejidad y el nmero de instrucciones mquina, dejndolo reducido a un
conjunto pequeo y rpido 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 semntico pero elevada velocidad
de ejecucin.
Dos aspectos importantes del nivel mquina son tambin la gestin de memoria y la
entrada/salida. Sin embargo, en los computadores actuales estos recursos los utiliza el
programa del usuario a travs del sistema operativo.
Software bsico (sistema operativo)
El Sistema Operativo (SO) no constituye un nivel del mismo tipo que los dems, por
ejemplo, el lenguaje mquina o el lenguaje de alto nivel. En realidad se trata de un gestor de
determinados recursos del nivel mquina que por la frecuencia y complejidad de uso resulta ms
eficiente utilizarlos agrupados en una especie de mquina virtual que es el SO.
En los primeros computadores las funciones del SO eran escasas, limitadas
bsicamente a la carga del programa y a la entrada salida. Sin embargo, las competencias de
este sistema han ido aumentando con la complejidad y sofisticacin de las mquinas modernas,
que funcionan en entornos multiusuario y multitarea y que requieren una gestin de todos los
recursos de la mquina: la CPU, la jerarqua de memoria, el tratamiento de las excepciones, los
mecanismos de proteccin, etc.
El protagonismo que el SO tiene en un computador actual hace que cuando se disea la
arquitectura de un procesador se tengan muy en cuenta las funciones de este sistema.
Lenguajes de alto nivel
En este nivel se utilizan lenguajes de programacin con una sintaxis y una semntica
ms complejas que las del lenguaje ensamblador. Estos lenguajes pretenden facilitar el trabajo
del programador aportando recursos expresivos ms prximos a los problemas que se van a
resolver. En este sentido cabe diferenciar dos grandes grupos. Un primer grupo, denominado de
estilo imperativo como Pascal, Fortran, etc., que presentan una semntica operacional que
refleja directamente el funcionamiento de la mquina Von Neumann, es decir, que obligan al
programador a expresar la secuencia de rdenes cuya ejecucin resuelve el problema en
cuestin. El segundo grupo lo formaran los lenguajes de estilo declarativo, como Prolog,
Miranda o Lisp (puro), que disponen de un modelo computacional diferente (aunque equivalente)
al de la mquina Von Neumann. En este caso el programador tan solo tiene que declarar las
relaciones lgicas o funcionales de los elementos que intervienen en la especificacin del
problema a resolver.
Este nivel requiere un proceso de traduccin al nivel mquina 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 mquina con una semntica equivalente (igual significado).
Nivel L.A.N.
IF A ope B THEN
<sentencias1>
ELSE
<sentencias2>
L1
L2
Nivel L.M.
CMP A, B
Bope L1
<sentencias2>
BRA L2
<sentencias1>
......
Algoritmos
En el nivel algortmico se expresa la resolucin de un problema mediante un conjunto de
reglas aplicadas de forma sistemtica y ordenada, es decir, mediante un algoritmo. Los
procedimientos que define un algoritmo son
independientes de cualquier lenguaje de
programacin y de cualquier mquina particular.
Aplicaciones
Las aplicaciones se corresponden con dominios de actividad que pueden automatizarse
con el uso de un computador digital. Del anlisis del dominio se extraen unas especificaciones
funcionales que son expresadas mediante algoritmos. Codificados estos algoritmos en un
lenguaje de programacin y previa compilacin, se ejecutan en la mquina.
X3
X2
X3
X2
MUX
X1
X1
X0
X0
X3
S1
S0
S1
S0
S1
S0
S1
S0
X2
X1
X0
tiene en cuenta no slo la arquitectura (repertorio de instrucciones) sino la forma en que se ejecutan
estas instrucciones (estructura) en la ruta de datos de la mquina. Este hecho puede dar lugar a que
el orden de las instrucciones mquina generadas no sea el orden lgico que utilizara un
programador de lenguaje mquina que ignorase los detalles estructurales de la arquitectura. Esta
situacin viene producida fundamentalmente por la segmentacin y paralelizacin de las
instrucciones dentro de la mquina y se estudiar con detalle en las asignaturas de Ampliacin de
Estructura de Computadores y Arquitectura e Ingeniera de Computadores.
3. Estructura bsica de un computador convencional
La estructura bsica de un computador actual sigue siendo la original de von Neumann,
una mquina secuencial que ejecuta datos escalares y que hemos representado en la siguiente
figura:
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 posicin 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
aritmtico-lgica (UAL), y unos buses de comunicacin; y una unidad de control, que es la
encargada de generar las seales que gobiernan todos los dispositivos.
La entrada y salida constituyen la unidad para la transferencia de informacin con el
mundo exterior. Funcionalmente la mquina tiene las siguientes caractersticas:
1) Organizacin 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) Ejecucin secuencial de las instrucciones salvo las de ruptura de secuencia
A esta organizacin bsica de von Neumann se han ido incorporando algunas aportaciones
significativas entre las que destacaremos las siguientes:
a) Sistema de interrupciones, que permite la interrupcin de un programa en ejecucin
producida por una seal externa a la mquina. El sistema de interrupciones permite una mejor
sincronizacin de la Entrad/Salida con el exterior y la posibilidad de compartir la CPU por ms de
un programa
Programa principal
I1
I2
.
.
.Ii
Ii+1
.
seal de interrupcin
lnea de interrupcin
.In
Rutina de tratamiento
i1
i2
.
.
im
Memoria principal
(Mp)
pginas
Memoria secundaria
(Ms)
Tc
P r ogr a m a
1 ciclo
I1
3 ciclos
I2
2 ciclos
I3
in st r u ccion es
.
t iem po
10
T = N * CPI * Tc
T
N
CPI
Tc
=
=
=
=
Es decir, mientras la arquitectura influye a travs del nmero medio de ciclos por instruccin y del
nmero total de instrucciones, la organizacin lo hace a travs de ste ltimo y el tiempo de ciclo,
mientras que la tecnologa lo hace casi exclusivamente a travs del tiempo de ciclo (o su inversa, la
frecuencia de reloj del procesador). El tiempo de ciclo viene determinado por los tres niveles tecnolgicos:
fsico, electrnico, lgico y trasferencia de registros.
La tecnologa ha experimentado una transformacin continua durante las ltimas dcadas. Desde
la aparicin del primer computador comercial, la industria informtica ha pasado por cuatro generaciones
de computadores, diferenciadas bsicamente por la tecnologa de los componentes bsicos. Los rels y las
vlvulas de vaco de 1940 a 1950, los diodos y transistores discretos de 1950 a 1960, los circuitos
integrados de pequea y media escala de integracin (SSI/MSI) de 1960 a 1970, y los circuitos integrados
de alta y muy alta escala de integracin (LSI y VLSI) desde 1970 en adelante. La disminucin del tiempo
de conmutacin de los componentes electrnicos ha repercutido directamente en el aumento de velocidad
de los computadores. Tambin el aumento de la capacidad de integracin y de encapsulado han repercutido
en la misma direccin. Los cambios tecnolgicos alteran constantemente las relaciones de
compromiso tecnologa/organizacin/arquitectura, obligando a la reconsideracin de viejas
ideas ante un nuevo avance tecnolgico.
Aumento de rendimiento a travs de la organizacin y arquitectura
A lo largo de las ltimas cuatro dcadas la organizacin y arquitectura de computadores
ha experimentado un desarrollo gradual, no traumtico, que ha ido decantando aquellas
caractersticas responsables de las mejoras de rendimiento.
Paralelismo y Segmentacin
11
de la ejecucin del programa con las operaciones de E/S, es decir, una forma primaria de
procesamiento segmentado.
Procesadores Segmentados
Decodifica cin
Un ida d
Bu
Un ida d
De
E jecu cin
E scr it u r a
Un ida d
Ej
Un ida d
Es
Regist r os
In st r u ccin 1
Bu 1
In st r u ccin 2
De1
E j1
E s1
Bu 2
De2
E j2
E s2
Bu 3
De3
E j3
E s3
Bu 4
De4
E j4
In st r u ccin 3
In st r u ccin 4
E s4
ciclos
Procesadores Superescalares
Un procesador superescalar de grado m emite m instrucciones por ciclo, debiendo ser
tambin m el paralelismo a nivel de instruccin para explotarlo completamente. En estos
procesadores los recursos para la decodificacin y ejecucin 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 mquinas superescalares proporcionan compatibilidad a nivel del cdigo objeto con
las mquinas escalares, detectando el paralelismo de las instrucciones en tiempo de ejecucin.
Normalmente, se dividen las instrucciones mquina en categoras, y como mucho una
instruccin de cada categora pueden emitirse simultneamente.
12
Un ida d
de
B squ eda
Un ida d
de
E m isin
de
In st r u ccion es
va 1
va 2
va 3
Procesadores VLIW
En un procesador VLIW (Very Long Instruction Word) una nica instruccin especifica
ms de una operacin concurrente, reducindose el nmero de instrucciones por programa en
comparacin con el caso escalar. Las organizaciones VLIW extendieron y formalizaron el
concepto de microcodificacin horizontal que se venia utilizando aos atrs para el diseo de
procesadores de propsito especial dedicados a tareas intensivas en clculo, tales como el
procesamiento de seales digitales. Utilizando tcnicas avanzadas de compilacin se puede
extraer el paralelismo de grano fino de un amplio rango de aplicaciones cientficas y de propsito
general. En estos procesadores los conflictos por dependencias de datos y estructurales se
resuelven antes de la ejecucin, y son explcitamente controlados por las instrucciones. El
hardware adicional se dedica a caminos de datos paralelos y ms unidades funcionales, en
lugar de a lgica de control y sincronizacin.
In st r u ccin la r ga
DE C
DE C
DE C
Regist r os
Procesadores Vectoriales
Los procesadores vectoriales disponen de operaciones que trabajan sobre vectores de
nmeros. Por ejemplo, una operacin vectorial puede sumar dos vectores de 64 elementos en
punto flotante dando como resultado otro vector de 64 elementos. La instruccin vectorial es
equivalente a un bucle completo en el que se calcula un elemento del resultado en cada
iteracin, se actualiza el ndice y se bifurca al comienzo.
Una simple instruccin vectorial especifica, pues, una gran cantidad de trabajo, por lo
que se reduce la anchura de banda necesaria para su lectura en comparacin con la de las
instrucciones escalares equivalentes. Adems, el acceso a los datos tiene un patrn conocido.
Desde el punto de vista arquitectnico son procesadores segmentados con instrucciones
mquina vectoriales. Al no existir dependencias entre operaciones de una instruccin vectorial,
se explota eficientemente la segmentacin en las unidades aritmticas. Pero para conseguir el
13
rendimiento mximo 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.
Mem or ia
Regist r os
Regist r os
Regist r os
P r ocesa dor
P2
P r ocesa dor
Pn
Multicomputadores
Son multiprocesadores de memoria distribuida donde cada procesador tiene un espacio
privado de direcciones. Se comunican y sincronizan mediante paso de mensajes a travs de una
red de interconexin. Las topologas de red ms utilizadas son la malla y el hipercubo.
14
Mem or ia
M1
Mem or ia
Mn
P r ocesa dor
P1
P r ocesa dor
Pn
15
ISPS
16
S n te s i
i1
su m a
ca r r y
i2
Mo d e la d o
Re n d im ie n t
D o c u m e n ta c i
Cir cu it o
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;
ARCH ITE CTU RE est r u ct u r a OF cir cu it o
BE GIN
P ROCE SS
..................
E ND
END
Ve rific a c i
F o rm a
D ia g n o s is d e
i1
su m a
i2
cor r ect o
S im u la c i
ca r r y
si
CLK
X
Z
La sntesis automtica tiene como objetivo la generacin de dispositivos digitales a partir de una
especificacin inicial expresada en un lenguaje de descripcin hardware. VHDL, al ser un lenguaje con
una semntica poco formal, en el que se pueden mezclar diferentes estilos de descripcin, no es el ms
apropiado para utilizar como entrada en las herramientas de sntesis. Sin embargo, dado su status de
estndar IEEE y su amplia aceptacin en la industria electrnica, resulta muy conveniente no romper el
ciclo de diseo saliendo de VHDL en la fase de sntesis. 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 sntesis 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 sntesis de bajo nivel.
17
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
descripcin VHDL cuya implementacin hardware tiene un fallo fsico 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 descripcin hardware puede ser ms alto y consecuentemente el modelo de
fallos ser diferente.
La verificacin formal de un diseo consiste en probar que para todos los estados iniciales
aceptables y para todas las entradas posibles, la implementacin del diseo cumple su especificacin. Las
otras dos alternativas para verificar un diseo, la sntesis automtica y la simulacin funcional, pueden
resultar incompletas. En efecto, los diseos producidos por sntesis automtica son correctos por
construccin si los componentes primitivos estn completamente verificados y si las transformaciones
realizadas en el proceso de sntesis son as mismo correctas. Sin embargo, probar la correccin formal de
un mtodo de sntesis implica probar la correccin formal del mtodo en s y del software que lo
implementa, tarea que puede resultar impracticable. Por otra parte, la verificacin funcional por simulacin
exhaustiva tambin es impracticable a partir de una complejidad media en el diseo. La verificacin formal
requiere un modelo matemtico para representar las propiedades bajo estudio y un clculo para realizar
computacin simblica sobre el modelo. La lgica es la rama de las matemticas ms ampliamente
utilizada en la verificacin formal, incluyendo la lgica de predicados de primer orden, la lgica de orden
superior y la lgica temporal. Al no existir una semntica formal para VHDL los sistemas de verificacin
formal, al igual que los sistemas de sntesis, se limitan a subconjuntos del lenguaje.
Los modelos de rendimiento constituyen el nivel ms alto de abstraccin de los sistemas
electrnicos. Estos modelos se utilizan principalmente para estudiar la capacidad global de procesamiento
de informacin de un sistema en las primeras etapas del proceso de diseo. El objetivo es identificar las
principales unidades funcionales y definir su forma de actuacin en la transformacin de los datos de
entrada en datos de salida. A este nivel de conceptualizacin el diseador ve una unidad funcional como
algo que realiza una cierta tarea en un cierto tiempo, sin detalles especficos sobre la forma de realizar la
tarea. En realidad, puede que estos detalles no se conozcan an en esta fase del diseo. Debido a esta
ocultacin de detalles sobre los valores de los datos y sus transformaciones especficas 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 abstraccin, facilita
la confeccin de modelos de rendimiento basados en redes de Petri extendidas y colas estocsticas.
Finalmente, la documentacin es una de las tareas ms importantes en todo proceso de diseo, 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 abstraccin y ampliamente
aceptados por los diseadores, como ocurre en la actualidad con VHDL.
Como muestra la siguiente figura, VHDL dispone de recursos expresivos para cubrir totalmente
la descripcin y el modelado de dispositivos digitales en los niveles circuito lgico, transferencia de
registros y chip. Los niveles de sistema y circuito elctrico slo se cubren parcialmente. Pero lo ms
interesante del lenguaje en este aspecto es que permite mezclar en una misma descripcin diferentes
niveles. Esto, unido al modelo de concurrencia que permite la construccin de modelos estructurales en los
que los componentes bsicos pueden a su vez ser descritos con modelos estructurales, hace posible el
establecimiento de una descomposicin estructural de la jerarqua de diseo.
18
S OF TWAR E
AR QU ITECTU RA
VHD L
LGICO
ELECTRICO
F S ICO
19
Las instrucciones mquina son las acciones elementales que puede ejecutar un computador.
Una accin compleja deber codificarse como una secuencia de instrucciones mquina 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 mquina queda definida por el repertorio
de instrucciones (ISA: Instruction Set Architecture). En general, una instruccin codifica una operacin
bsica que el computador realiza sobre unos datos ubicados en la memoria o en los registros de la
mquina 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 implementacin eficiente de las
estructuras complejas de datos de un lenguaje de alto nivel.
c) Conjunto bsico 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 restriccin. La ortogonalidad completa no se da en ningn
repertorio de mquina real.
tipo de direccionamiento
.
indirecto -directo
--
inmediato --
XOR
SUB
MUL
operaciones
tipo de datos
instrucciones y los campos que codifican el valor de los factores citados. En general una
instruccin se compone de los siguientes campos:
Cdigo de operacin (CO)
Operandos fuente (OP1, OP2,...)
Operando destino o Resultado (OPd)
OP1
OP2
..........
OPd
IS
El CO determina la operacin que se realiza sobre OP1,OP2,... El resultado se deja en OPd. Lo normal es
que el nmero de operandos fuente de un repertorio no pase de 2. La direccin de la instruccin siguiente IS
queda implcita en todas las instrucciones (se trata de la instruccin siguiente del programa) salvo en las
instrucciones de ruptura condicional o incondicional de secuencia.
CO
ejemplo:
OP1 (fuente 1)
OP2 (fuente 2)
OP3 (destino)
AB+C
ADD B,C,A
Mxima flexibilidad
Ocupa mucha memoria si los operandos no estn en registros
b) 2 operndos explcitos
CO
OP1 (fuente 1)
ejemplo:
ADD B, C
OP2 (fuente
BB+C
OP1 (fuente
ejemplo:
ADD B
Acumulador <Acumulador> + B
ejemplo:
ADD
ADD
SUB
MUL
MOV
E = (A B)*(C + D)
2 operandos
1 operando
LOAD A
C, D
SUB B
A, B
STORE A
A, C
LOAD C
C, E
ADD D
MUL A
STORE E
0 operandos
(PUSH) LOAD A
(PUSH) LOAD B
SUB
(PUSH) LOAD D
(PUSH) LOAD C
ADD
MUL
(PULL) STORE E
Acumulador
Conjunto de registros
PUSH A
LOAD
LOAD R1, A
PUSH B
ADD
ADD
ADD
STORE C
POP
R1, B
STORE C, R1
Una mquina con un formato de instruccin que dedica n bits al CO permitir 2 instrucciones diferentes,
cada una de las cuales puede tener diferente nmero de operandos (0, 1, 2, 3, etc.). Los bits del campo
OPERANDOS se pueden utilizar para extender el CO de aquellas instrucciones con menor nmero de operandos.
Ejemplo: Partimos de una mquina con instrucciones de longitud fija de 24 bits y consideraremos los
siguientes supuestos:
1) La mquina dispone de 16 registros generales
4
4
16
CO
OP
1111 1111
OP
OP
.
.
.
.
.
15 instrucciones de
2 operandos
(CO de 4 bits)
15 instrucciones de
1 operando
OP
0000 0000 0000 0000
0000 0000 0000 0001
.
.
.
1111 1111 1111 1111
(CO de 8 bits)
216 = 65.536
instrucciones de
0 operandos
(CO de 24 bits)
2
CO
16
OP
Frecuencia de ejecucin
0.53
ADD
0.25
SUB
0.12
MUL
0.03
DIV
0.03
STA
0.02
LDA
0.02
JMP
Con CO de longitud fija se necesitaran 3 bits. Para obtener el cdigo de Huffman procedemos de
la siguiente manera:
1) Se escriben en una columna las instrucciones y a su derecha su frecuencia de ejecucin. Cada
elemento de la columna ser un nodos terminal del rbol de decodificacin.
2) Se unen las dos frecuencias menores de la columna anterior con sendos arcos, obtenindose
un nuevo nodo cuyo valor ser la suma de los nodos de procedencia.
3) Se repite el paso 2) hasta llegar a la raz del rbol que tendr valor 1
4) Comenzando en la raz, asignamos 0 (1) al arco superior y 1 (0) al inferior hasta llegar a los
nodos terminales
5) Se obtiene el cdigo de cada instruccin recorriendo el rbol de la raz a la instruccin y
concatenando los valores de los arcos del camino
Para nuestro ejemplo tendremos lo siguiente:
ADD
0.53
SU B
0.25
MU L
0.12
DIV
0.03
1
0.47
0
0
0.22
0.06
STA
0.03
LDA
0.02
J MP
0.02
0
0.10
1
0.04
Tipo de instrucciones
Frecuencia de ejecucin
Cdigo de Huffman
ADD
SUB
MUL
DIV
STA
LDA
JMP
0.53
0.25
0.12
0.03
0.03
0.02
0.02
0
10
110
11100
11101
11110
11111
MC68020
16
8
VAX-11
8
8
IBM/370
16
8
B1700
1
1
B6700
48
48
iAPX432
1
8
little-endian
184
78
185
56
186
34
187
12
Alineacin
Un objeto de datos de n bytes ubicado en la direccin de memoria D se dice que est alineado si
D mod n = 0
Objeto de datos direccionado (tamao)
byte
media palabra (2 bytes)
palabra (4 bytes)
doble palabra (8 bytes)
Alineaciones correctas
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
0, 2, 4, 6, 8, 10
0, 4, 8, 12
0, 8, 16
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:
Espacio de direcciones de registros
Espacio de direcciones de memoria
Espacio de direcciones de entrada/salida
Los espacios de direcciones de memoria y entrada/salida de algunos procesadores estn unificados
(un solo espacio), ocupando los puertos de E/S direcciones de ese espacio nico. En estos procesadores
(ejemplo, 68000) no existen instrucciones especficas de E/S, para esta funcin se utilizan las de referencia a
memoria (carga y almacenamiento) con las direcciones asignadas a los puertos.
3. Modos de direccionamiento.
Los modos de direccionamiento determinan la forma como el operando (OPER) presente en las
instrucciones especifican la direccin efectiva (DE) del dato operando (DO) sobre el que se realiza la
operacin indicada por CO.
Inmediato.
CO
OPER
DO = OPER
El dato operando se ubica en la propia instruccin ==> no requiere accesos a memoria.
Se suele utilizar para datos constantes del programa
El tamao est limitado por el nmero de bits de OPER
Implcito
CO
El dato operando se supone ubicado en algn lugar especfico de la mquina, por ejemplo, una pila
Directo (memoria o registros)
OPER = Direccin de memoria o de un registro
DE = OPER
DO = <OPER>
Memoria
o
Registros
CO
OPER
DO
La especificacin de un registro requiere menor nmero de bits que la de una posicin de memoria
El acceso a los registros es ms rpido que a Memoria
El direccionamiento directo a memoria se conoce como absoluto
A veces se limita el nmero de bits de OPER limitando el acceso a slo una parte de la memoria que
suele ser la correspondiente a las direcciones ms bajas (pgina cero)
Indirecto (memoria)
OPER = Direccin de memoria
DE = <OPER>
DO = <<OPER>>
Memoria
CO
OPER
DE
DO
2n-p direcciones
direccin
p bits
n-p bits
CO
direccin
p bits
2n-p direcciones
n-p bits
2n direcciones
direccin
n-bits
Indirecto (registro)
OPER = Direccin de un registro
DE = <OPER>
DO = <<OPER>>
Registros
CO
Memoria
OPER
DE
DO
en la instruccin (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 nmero de bits en
el campo OPER.
Direccionamiento base ms desplazamiento
DE = <Registro base> + OPER; OPER = desplazamiento
Se utiliza para la reubicacin de datos y programas en memoria
Memoria
CO
OPER
DO
Registro Base
Ejemplo: A = B + C
Programa
LOAD RB,1; RD1
LOAD RB, 2; RD2
ADD RD1; RD2
STORE RD1; RB,0
<RB> + 1 = B
<RB> + 2 = C
<RB> + 0 = A
Memoria
RB
Registros de datos
RD1
RD2
Este programa podremos reubicarlo en memoria y siempre llevar a la direccin 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 reubicacin 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 instruccin.
Memoria
CO
OPER
DO
Contador de Programa
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
instruccin
Indirecto (registro)
registro
Indirecto (memoria)
direccin
Indexado
registro
registro
memoria
direccin
operando
direccin
desplazamiento
operando
direccin
base
registro
direccin
operando
desplazamiento
Relativo
registro
direccin
operando
direccin
Modos compuestos
Veremos los modos compuestos analizando el repertorio de algunos procesadores.
Modos de direccionamiento del MC 68.X
CO
OPER
Inmediato
DO = OPER
- enteros: 8, 16 y 32 bits
- reales: 32 bits (simple precisin), 64 bits (doble precisin) y 96 bits (precisin extendida)
Directo
- Memoria o absoluto
DE = OPER, DO = <DE>, con OPER de 16 y 32 bits
10
- Registro
Ri = OPER, DO = <Ri>, con Ri cualquier registro
Indirecto registro
- puro
DE = <Ri>, con Ri cualquier registro
Memoria
CO
OPER
Ri
DO
DE
OPER
Ri
+ Inc
DO
DE
OPER
Ri
- Dec
DO
DE
Despla
DO
DE
Ri
11
Memoria
Escala
CO
Despla
DO
DE
Rj
Ri
Indirecto memoria
- Postindexado (= base + desplazamiento indirecto indexado + desplazamiento)
DE = <<Ri> + despla1> + <Rj>xEscala + Despla2
CO
Despla1
Despla2
Memoria
DIR
DE
Ri
DO
Rj
+
Escala
12
CO
Despla1
Despla2
+
Memoria
Ri
DIR
+
DE
Rj
DO
Escala
Relativo
- Bsico
DE = <CP> + Despla
Memoria
CO
Despla
DO
DE
CP
Memoria
CO
Despla
DO
DE
Rj
CP
13
Despla1
Despla2
Memoria
DIR
DE
CP
DO
Rj
+
Escala
Despla1
Despla2
+
Memoria
CP
Rj
DIR
+
DE
DO
Escala
14
CO
0, 8 32 bits
Escala
(1,2,4,8)
Memoria
+
Registro de segmento
SR
DE
LA
+
segmento
(6 registros SR)
Paginacin
Inmediato
DO = A (1,2,4 bytes)
Registro
LA = R, DO = <R> (LA = direccin lineal)
Desplazamiento
LA = <SR> + A
Base
LA = <SR> + <B>
Base + desplazamiento
LA = <SR> + <B> + A
Indexado
LA = <SR> + <I>xEscala + A
Base + desplazamiento indexado
LA = <SR> + <B> + <I> + A
Base + desplazamiento indexado escalado
LA = <SR> + <B> + <I>xEscala + A
Relativo
LA = <PC> + A
15
fb (...)
{
.
.
.
... = ... fb(...) ...
.
.
.
... = ... fc(...) ...
.
.
.
}
fc (...)
{
.
.
.
... = ... fc(...) ...
.
.
.
... = ... fb(...) ..
.
.
.
}
}
La estructura de este programa sera la siguiente:
fd (...)
{
.
.
.
}
fe (...)
{
.
.
.
... = ... fc(...) ...
.
.
.
}
main
fa
fb
fc
fd
fe
16
RA main
RA fe
PRAG
Puntero al Registro de Activacin Global
RA fc
(1 llamada)
RA fc
(2 llamada)
Registros de Activacin
visibles desde la ltima
llamada a fc
RA fb
(1 llamada)
RA fb
(2 llamada)
RA fc
(3 llamada)
PRAL
Crecimiento de la PILA
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 jerrquica y la visibilidad de variables desde la llamada a un bloque se extiende a todos los
bloques (ltimas llamadas) en el camino hasta la raz (main)
main
Ba
Bc
Bb
Bd
Be
Bf
Bh
Bi
Bg
program main(..)
procedure a
begin
procedure c
begin
...
end
procedure d
begin
...
end
end
procedure b
begin
procedure e
begin
... function h (..)
end
procedure f
begin
... function i (..)
end
procedure g
begin
...
end
end
end
17
RA main
RA Ba
PRAG
RA Bb
(1 llamada)
RA Bb
(2 llamada)
Registros de Activacin
visibles desde la ltima
llamada al bloque Bh
RA Bf
RA Be
Display del RA Bh
RA Bh
(1 llamada)
RA Bh
(2 llamada)
PRAL
RA main
Despla
PRA G
Variable g lobal
RA
(procedimiento
en ejecucin)
Despla
PRA L
Variable local
Variables locales:
Variables globales:
18
Ba
Bb
Bl
Bc
Bd
RA main
RA Ba
PRAG
(1 llamada)
RA Ba
Despla 2
(2 llamada)
RA Bb
RA Bc
Despla 1
RA Bd
display
PRAL
19
Var. referenciada
RA proc. Ejec.
Despla
Puntero local
PRAL
DE = <<PRAL> + Despla>
direccionamiento base + desplazamiento indirecto
RA proc. refer.
Despla 2
Referencia a var.
Inicio RA referenc.
Despla 1
display
RA proc. Ejec.
PRAL
20
RA proc. Ejec.
1 elemento
Factor_escala (=1,2,4,8)
Despla
Indexacin
array
RX
n-simo elemento
PRAL
Factor_escala (=1,2,4,8)
Despla 2
Indexacin
array
RX
n-simo elemento
Despla 1
Inicio RA referenc.
display
RA proc. Ejec.
PRAL
21
1 elemento
Indexacin
array
RX
n-simo elemento
RA proc. Ejec.
Despla
Puntero local
PRAL
Despla 1
Despla 2
record
n-simo campo
PRAL
22
RA proc. ejec.
1 campo de RR(x)
1 campo de R (y)
record RR
Despla 1
Despla 2
Despla 3
2 campo de R (z)
PRAL
RR: record
x: real
R: record
y: boolean
z: integer
.
.
.
end R
.
.
.
end RR
acceso al campo z de R
Despla 2
campo accedido
record
RA proc. ejec.
Despla 1
puntero local
PRAL
23
000
11
0
11
0
M E M OR IA
ACUMULADOR
(AC)
R egistro d e estad o
1 0
NZ
FFF
Todas las instrucciones tienen longitud fija de 12 bits y estn compuestas por un cdigo de
operacin (CO) situado en los 4 bits ms significativos (del 8 al 11) y una direccin/operando
situada en los 8 bits menos significativos (del 0 al 7). Los 8 bits de la direccin/operando tienen el
significado de direccin en las instrucciones de salto y referencia a memoria, y significado de dato
en las instrucciones de operando inmediato.
11
8 7
CO
La mquina dispone de once instrucciones, tres de carga y almacenamiento (LDA, STA, LDAI),
tres aritmetico-lgicas (SUM, SUMI, NOR), cuatro de salto condicional (JZ, JNZ, JN, JNN) y una
instruccin de parada (HALT). En la siguiente tabla se muestran el cdigo simblico, el tipo de
direccionamiento, el cdigo binario (CO) y la semntica de cada una de las instrucciones. El
smbolo <-- significa transferencia de la informacin a su derecha hacia el elemento a su izquierda;
MEMORIA(DIRECCION) expresa el contenido de la posicin de MEMORIA apuntada por
DIRECCION; los parntesis angulares expresan contenido y el smbolo & concatenacin.
Nombre Simblico
LDA
STA
SUM
LDAI
SUMI
NOR
JZ
JNZ
JN
JNN
HALT
DIR/OPE
DIR
DIR
DIR
OPE
OPE
DIR
DIR
DIR
DIR
DIR
-
COP
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
0000
Semntica
AC <-- MEMORIA(DIR)
MEMORIA(DIR) <-- <AC>
AC <-- <AC> + MEMORIA(DIR)
AC <-- 0000&OPERANDO
AC <-- <AC> + 0000&OPERANDO
AC <-- <AC> NOR MEMORIA(DIR)
PC <-- DIR SI <Z> = 1
PC <-- DIRE SI <Z> = 0
PC <-- DIR SI <N> = 1
PC <-- DIR SI <N> = 0
parada de la mquina
24
Programa
Inicializa 10 posiciones de memoria (de la 20 a la 29) con un contenido igual a su direccin.
Direccin Simblico
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 <-- lmite
8
NOR 30
0110 00001101
AC <-- complemento1(lmite)
9
SUMI 1
0101 00000001
AC <-- complemento2(lmite)
10
SUM ndice
0011 00001110
AC <-- ndice - lmite
11
JNZ 0
1000 00000000
Vuelve a direccin 0 si resultado 0
12
HALT
0000 00000000
Parada
13
30
000000011110
lmite
14
20
000000010100
ndice
Para referenciar posiciones de memoria consecutivas (indexacin) hemos utilizado un artificio poco
recomendable en programacin: modificar instrucciones en tiempo de ejecucin, concretamente, sumando un
1 a la instruccin STA ndice (inicialmente en binario 001000010011) de la posicin 4. De esa forma, cada
vez que se recorra el cuerpo del ciclo que constituye el programa, la instruccin STA ndice referenciar la
posicin de memoria siguiente a la que referenci en el recorrido anterior. El ciclo finalizar cuando el ndice
iguale el lmite. Para detectarlo se realiza la resta ndice -limite (complementando a dos lmite, es decir,
complementando a 1 y sumando 1, y sumando el resultado a ndice) y se bifurca sobre Z.
Esto lo podemos solucionar introduciendo el direccionamiento indirecto (ind) para la instruccin de
almacenamiento STA (ind) y modificando las instrucciones 0,1,2 y 4 del programa de la forma siguiente:
0
1
2
LDA 14
SUMI 1
STA 14
STA (ind) 14
25
N ( x n1 , x n 2 ,..., x1 , x 0 )
n1
V(N) = 2 . xi
i
i= 0
Codifica en binario puro con 4 bits cada uno de los dgitos decimales
Ejemplo
2 5 5 --->
BCD = 0010 0101 0101 en cambio en binario sera:
2 5 5 --->
binario = 1111 1111
Existen 2 formatos de representacin:
BCD desempaquetado
1111 0010
zona
1111 0101
dgito
0010
zona
dgito
1111 0101
zona
dgito
BCD empaquetado
0101
0101
Nmeros enteros
Signo y magnitud
N ( x n1 , x n 2 ,..., x1 , x 0 )
n2
V ( N ) = 2 i xi
si Xn-1 = 0
i =0
n2
V ( N ) = 2 i xi
si Xn-1 = 1
i =0
como
1 - 2Xn-1 = 1 si Xn-1 = 0
1 - 2Xn-1 = -1 si Xn-1 = 1
n2
V ( N ) = (1 2 xn1 ) 2i xi
i =0
V ( N ) = xn1 2 n1 + 2i xi
i =0
Se puede obtener el valor decimal de un nmero en c2 sumando los pesos de las posiciones con
1:
-128
64
32
16
1
-128
1
+8
2
0
1
0
= -120
0 bien pesando slo las posiciones con cero (cuando el nmero es negativo) y sumando 1:
64 + 32 + 16
+ 1 + 1 = 120
Complemento a uno
V ( N ) = xn1 (2 n1 + 1) + 2i xi
i =0
Nmeros reales
Utilizando una notacin exponencial, un nmero real R queda determinado por dos valores, un exponente
(e) y una mantisa (m) tal que el valor de R venga dado por la expresin:
e
V(R) = B m
Donde B es una base conocida. Por ejemplo, utilizando base 10 tenemos:
976.000.000.000.000
0,0000000000000976
=
=
9,76 10 14
9,76 10 -14
mantisa m = 9,76;
mantisa m = 9,76;
exponente
exponente
e = 14
e = -14.
La representacin en coma flotante utiliza esta definicin y establece un formato para la mantisa y para el
exponente.
Exponente
Utiliza una representacin sesgada o codificacin en exceso con un sesgo = 2k-1-1; siendo k el nmero
de bits reservados para el campo del exponente. Es decir, en lugar de representar directamente
e, utilizamos su codificacin 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
cdigo 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 codificacin en exceso 127:
E (binario)
0000 0000
0000 0001
0000 0010
.
.
.
0111 1110
0111 1111
1000 0000
.
.
.
1111 1111
E (decimal)
0
1
2
.
.
.
126
127
128
.
.
.
255
e = E-127
-127
-126
-125
.
.
.
-1
+0
+1
.
.
.
+128
Una propiedad importante de la codificacin sesgada es que se mantiene el orden natural de los vectores
binarios en relacin con su magnitud: el ms grande es el 1111 1111 y el ms pequeo 0000 0000, cosa
que no ocurre en la representacin en signo y magnitud, c1 o c2. Esta propiedad es importante a la hora de
comparar nmeros en coma flotante.
Mantisa
La mantisa m se representa en coma fija normalizada (signo y magnitud), es decir, haciendo que el primer
dgito decimal valga 1, y ajustando convenientemente el exponente:
mantisa m
Base
Se suele utilizar la base 2. (la arquitectura IBM S/390 utiliza base 16)
Teniendo en cuenta lo anterior, un nmero real R vendra representado por:
30
23 22
signo
Exponente
M
Mantisa
Por ejemplo:
0111 1111 = 127
+ 1 0100
1001 0011
0,11010001 x 2 10100
-0,11010001 x 2 10100
0,11010001 x 2-10100
-0,11010001 x 2-10100
=
=
=
=
0
1
0
1
10010011
10010011
01101011
01101011
10100010000000000000000
10100010000000000000000
10100010000000000000000
10100010000000000000000
=
=
=
=
856063,95
- 856063,95
0,000000778585
- 0,000000778585
Los rangos de nmeros que pueden representarse en coma flotante con 32 bits y el formato descrito
aparecen en la siguiente grfica:
desbordamiento
a cero negativo
desbordamiento
negativo
desbordamiento
a cero positivo
nmeros negativos
representables
nmeros positivos
representables
desbordamiento
positivo
recta real
-24
- (1 - 2 ) x 2
128
- 0,5 x 2
-127
0,5 x 2
-127
-24
(1 - 2 ) x 2
128
La anterior representacin no contempla un valor para el cero. Sin embargo, en la practica se destina
una configuracin de bits especial, como veremos en el estndar del IEEE.
Aparecen dos tipos de desbordamientos, el desbordamiento propiamente dicho que ocurre cuando una
215
operacin aritmtica da lugar a un nmero cuyo exponente es mayor que 128 (ejemplo 2
), y el
desbordamiento a cero que ocurre cuando una magnitud fraccionaria es demasiado pequea (ejemplo
2-215)
Los nmeros representados no estn espaciados regularmente a lo largo de la recta real. Estn ms
prximos cerca del origen y ms separados a medida que nos alejamos de l.
Tenemos que elegir el compromiso entre rango de representacin y precisin 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 nmeros representados en dicho rango, ya que
la cantidad total de valores representables lo determina el nmero total de bits (32).
Hay que notar que con la representacin en coma flotante no se representan ms valores individuales. Con
32
32 bits slo podemos representar 2
valores diferentes. La coma flotante distribuye estos valores entre
dos intervalos, uno positivo y otro negativo.
Estndar IEEE 754
Desarrollado para facilitar la portabilidad entre diferentes procesadores de programas numricos
La base implcita es 2 y utiliza dos formatos, uno simple de 32 bits y otro doble de 64 bits, adems define
dos formas ampliadas de estos formatos (dependientes de la implementacin).
formato simple
31
30
23 22
signo
Exponente
f
Mantisa
formato doble
63
62
52 51
s
signo
Exponente
Mantisa
En el formato simple, los valores de exponente de 1 a 254 representan nmeros en coma flotante
normalizados distintos de cero, con exponente sesgado en un rango de -127 a +127 y
mantisa con un 1 implcito 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 estndar no todos los patrones de bits se interpretan como valores numricos, algunas se utilizan
para representar valores especiales:
1)
Un exponente cero con una fraccin 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 fraccin distinta de cero se conoce como NaN (Not a Number) y
se emplea para indicar varias condiciones de excepcin.
4) Un exponente cero con una parte fraccionaria distinta de cero representa un nmero 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 interpretacin de los nmeros en coma flotante y simple precisin:
signo
0
1
0
1
0
1
0 1
0 1
0
1
positivo normalizado 0
negativo normalizado 0
cero positivo
cero negativo
ms infinito
menos infinito
NaN silencioso
NaN indicador
positivo denormalizado
negativo denormalizado
fraccin
f
f
0
0
0
0
0
0
f0
f0
valor
2 E - 127(1,f)
-2 E - 127(1,f)
0
-0
-
NaN
NaN
2 E - 126(0,f)
-2 E - 126(0,f)
Infinito
n
n
n
n
n
+
+
x
(+
(+
(((+
)
)
)
)
)
=
=
=
=
=
+
+
+
n
(+
(((+
(+)
)+ (+
)+ ()- (+
)- (-
= +0
) =
) =
) =
) =
+
+
Suma o resta
Multiplicacin
Divisin
Resto
Raz cuadrada
(+
((+
(-
)+
)+
))-
((+
(+
(-
)
)
)
)
0 x
0/0
/
x RE 0
RE y
x con x < 0
Nmeros denormalizados
Se incluyen para reducir las situaciones de desbordamiento hacia cero de exponentes. Cuando el exponente
del resultado es demasiado pequeo se denormaliza desplazando a la derecha la parte fraccionaria e
incrementando el exponente hasta que el exponente est dentro de un rango representable.
Caracteres
ASCII (American Standard Code for Information Interchange)
Utiliza un patrn de 7 bits con el que se pueden representar hasta 128 caracteres diferentes, suficientes para
codificar los caracteres del alfabeto incluyendo signos especiales y algunas acciones de control. El patrn
011XXXX representa los dgitos decimales del 0 al 9 con los correspondientes valores binarios para
XXXX.. As, 011 0000 representa al 0; 011 0001 representa al 1; etc.
EBCDIC(Extended Binary-Coded-Decimal Interchange Code)
Se trata de un cdigo de 8 bits utilizado por IBM. En este caso los dgitos decimales del 0 al 9 vienen
codificados por los patrones del 1111 0000 al 1111 1001.
Como se puede observar en ambos casos la representacin es compatible con la BCD empaquetada de 4
bits. Adems, el valor binario (sin signo) de ambos cdigos mantiene el orden de los smbolos
correspondientes a los dgitos decimales y caracteres, lo que facilita la ordenacin de informacin
simblica en los programas.
Compresin de datos
La representacin de datos comprimidos ha ido adquiriendo cada vez ms importancia debido a la
utilizacin de mayores cantidades de informacin, sobre todo en las aplicaciones multimedia.
Comprimiendo datos se optimiza tanto la memoria utilizada para su almacenamiento como el tiempo de
transmisin por las redes. Uno de los mtodos de compresin ms 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 informacin 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 patrn de bits. Para ello:
100.000 bit s
100 bit s
1.000 fr a gm en t os
1.000 fragmentos => 20 bits para su codificacin
+1 bit adicional
21 bits/fragmento x 1.000 fragmentos = 21.000 bits
luego 100.000 bits se comprimen a 21.000 bits => al 20% de su tamao
Est claro que cuanto ms largos sean los fragmentos, ms eficaz ser el mtodo. Esto ocurre si la
cadena tiene muchas repeticiones. El caso extremo es una cadena con todo ceros. En este caso la
fragmentacin es muy simple:
0-00-000-0000-00000-000000-0000000-...
Ejemplo1: cadena de 28 ceros, se comprime en una de igual tamao
0000000000000000000000000000
1 2 3
4
5
6
7
0-00-000-0000-00000-000000-0000000
(0,0)-(1,0)-(2,0)-(3,0)-(4,0)-(5,0)-(6,0)
000,0-001,0-010,0-011,0-100,0-101,0-110,0
0000001001000110100010101100
Ejemplo2: cadena de 36 ceros, se comprime en una de 32 bits
000000000000000000000000000000000000
1 2 3
4
5
6
7
8
0-00-000-0000-00000-000000-0000000-00000000
(0,0)-(1,0)-(2,0)-(3,0)-(4,0)-(5,0)-(6,0)-(7,0)
000,0-001,0-010,0-011,0-100,0-101,0-110,0-111,0
00000010010001101000101011001110
Ejemplo3: cadena de 55 ceros, se comprime en una de 50
0000000000000000000000000000000000000000000000000000000
1 2 3
4
5
6
7
8
9
10
0-00-000-0000-00000-000000-0000000-00000000-000000000-0000000000
(0,0)-(1,0)-(2,0)-(3,0)-(4,0)-(5,0)-(6,0)-(7,0)-(8,0)-(9,0)
0000,0-0001,0-0010,0-0011,0-0100,0-0101,0-0110,0-0111,0-1000,0-1001,0
00000000100010000110010000101001100011101000010010
Una cadena con n ceros se dividira en un nmero de fragmentos m -1 tal que:
n = 1+2+3+...+(m-1) = m(m+1)/2
(progresin aritmtica)
10
describir el fichero entero. El fichero habra quedado reducido a 6,65 KB, es decir, al 0,63 % de su tamao
original.
El caso opuesto es una cadena de bits cuya fragmentacin contenga todas las subcadenas posibles.
Por ejemplo, hay 128 subcadenas de 8 bits. Si la fragmentacin resultara en una concatenacin de todas
ellas, se necesitaran 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 mtodo resultara perfectamente intil en este caso.
El mtodo LZ es ms eficaz cuanto ms regular sea la cadena, es decir, cuantas ms repeticiones
contenga. Esta caracterstica est de acuerdo con el teorema de Shannon, que afirma que cuanto ms
regular y menos aleatoria sea una cadena (menor sea su entropa), mayor ser su grado de compresin.
Shannon demostr que para una cadena de n bit aleatorios y completamente independientes unos de otros
la entropa vale:
H = -n[p log2 p + (1 - p) log2 (1 - p)]
donde p es la probabilidad de que cada bit sea un 1.
Como el programa WinZip de Windows utilizan alguna variante de este mtodo, se puede
comprobar empricamente la frmula 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. Despus se
podr observar que los tamaos comprimidos estn en la misma relacin que los previstos en la frmula de
Shannon.
Ejemplo4: cadena de 55 ceros seguida de un 1, se comprime en una de 55 bits
00000000000000000000000000000000000000000000000000000001
1 2 3
4
5
6
7
8
9
10
11
0-00-000-0000-00000-000000-0000000-00000000-000000000-0000000000-1
(0,0)-(1,0)-(2,0)-(3,0)-(4,0)-(5,0)-(6,0)-(7,0)-(8,0)-(9,0)-(0,1)
0000,0-0001,0-0010,0-0011,0-0100,0-0101,0-0110,0-0111,0-1000,0-1001,0-0000,1
0000000010001000011001000010100110001110100001001000001
Ejemplo5: cadena de 42 bits con mxima variacin, se comprime en una de 64
0100011011000001010011100101110111
1 2 3 4 5 6 7
8
9
10 11 12 13 14
0-1-00-01-10-11-000-001-010-011-100-101-110-111
(0,0)-(0,1)-(1,0)- (1,1-(2,0)-(2,1)-(3,0)-(3,1)-(4,0)-(4,1)-(5,0)-(5,1)-(6,0)-(6,1)
000,0-000,1-001,0-001,1-010,0-010,1-011,0-011,1-100,0-100,1-101,0-101,1-110,0-110,1
00000001001000110100010101100111100010011010101111001101
11
General: byte, palabra, doble palabra y cudruple palabra con contenido binario arbitrario.
Entero: valor binario con signo en c2 de una palabra, una doble palabra, o una cudruple palabra.
Ordinal: entero sin signo de un byte, una palabra o una doble palabra.
BCD desempaquetado: un dgito BCD en cada byte
BCD empaquetado: dos dgitos 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 precisin (32 bits)
IEEE 754 de doble precisin (64 bits)
IEEE 754 de precisin ampliada(78 bits)
Se trata del tipo ms bsico de instruccin mquina. Transfieren el contenido de informacin entre
elementos de almacenamiento: registros (REG), memoria (MEM) y PILA. Dependiendo de la fuente y
destino de la transferencia estas instrucciones suelen recibir nombres diferentes que resumimos en la
siguiente tabla:
REG --> REG: transferencia
REG -->MEM: almacenamiento (store)
REG --> PILA: insercin (push)
- Una instruccin 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 instruccin con sus
correspondientes tipos de direccionamiento
Tipo y tamao del dato transferido: byte, media palabra, una palabra, doble palabra, etc. Ejemplo MC
68.X
MOVE
tipo OPs
DESTINO
b
W
LW
FUENTE
12
Ejemplo: MC 68.X
MOVEM
Dir
Tamao Reg.
Dir Memoria
16 o 32 bits
Memoria
Registros
Ejemplo VAX-11
MOVEC
Long. Fuente
Direccin Fuente
Relleno
Long. Destino
Direccin Destino
Memoria
Memoria
Relleno
Desplazamientos aritmticos
Desplazamientos lgicos
13
0
desplazamiento lgico derecha
Rotaciones
rotacin derecha
rotacin izquierda
Son instrucciones para la manipulacin de bits individuales dentro de una unidad direccionable (byte,
palabra, etc.) a travs de operaciones booleanas. Las instrucciones lgicas operan bit a bit sobre los
vectores de bits de sus operandos, las ms frecuentes en los repertorios son las siguientes:
NOT (complementacin)
AND (conjuncin lgica)
OR (disyuncin lgica)
XOR (disyuncin exclusiva)
Equivalencia
Con la AND podemos realizar funciones de mscara 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 mscara 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:
<R1> = 1010 0101
<R2> = 0000 1111
<R3> = 0111 1110
<R1> AND <R2> = 0000 0101
<R1> XOR <R3> = 1101 1011
Las instrucciones de manipulacin de bits permiten poner a 0 a 1 determinados bits del
operando, en especial algunos bits del registro de estado.
2.4 Instrucciones aritmticas
Casi todos los repertorios disponen de las operaciones aritmticas bsicas de suma resta multiplicacin
y divisin sobre enteros con signo (coma fija). Con frecuencia disponen tambin de operaciones sobre
reales (coma flotante) y decimales (BCD).
Suma
Resta
Multiplicacin
Divisin
Cambio de signo
Valor absoluto
Incremento
Decremento
Comparacin
14
Traduccin: traducen valores de una zona de memoria utilizando una tabla de correspondencia.
Por ejemplo cambio de BCD a binario o cambio de formato EBCDIC a formato ASCII como realiza la
instruccin Translate (TR) del S/370.
2.6 Instrucciones de entrada/salida
Estas instrucciones coinciden con las de referencia a memoria de carga y almacenamiento (LOAD
y STORE) para aquellos procesadores que disponen de un nico espacio de direcciones compartido para
Memoria y E/S.
Los procesadores con espacio de E/S independiente disponen de instrucciones especficas tales
como:
Estas instrucciones calculan la direccin efectiva de un operando para manipularla como un dato
cargndola en un registro o una pila.
Como ejemplos tenemos las instrucciones LEA y PEA del 68000:
LEA.L opf, An: direccin fuente --> An
lleva direccin efectiva del operando fuente opf al registro de direcciones An
PEA.L opf: direccin fuente --> Pila
lleva direccin efectiva del operando fuente opf a la Pila de la mquina a travs del registro SP con
predecremento: direccin --> -(SP)
MOV
PUSH
PUSHA
MOVSX
MOVS
LODS
15
SHL
SHR
SAL
SAR
ROL
ROR
Desplazamiento y rotacin
Desplazamiento lgico a la izquierda
Desplazamiento lgico a la derecha
Desplazamiento aritmtico a la izquierda
Desplazamiento aritmtico a la derecha
Rotacin izquierda
Rotacin derecha
SETcc
XLAT
Transformacin de datos
Traduce con la ayuda de una tabla
IN
OUT
Entrada/Salida
Entrada de dato desde un dispositivo de E/S
Salida de dato hacia un dispositivo de E/S
LEA
Manipulacin de direcciones
Carga el desplazamiento del operando fuente (no su valor) en el destino
AND
BTS
BSF
16
Para poder realizar el procesamiento paralelo de estas informaciones bsicas, 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
4 palabras empaquetadas
1 palabra
1 palabra
1 palabra
1 palabra
1 doble palabra
1 cudruple palabra
Registros MMX
Existen 8 registros de propsito general MMX que se designan como mmi (i = 0,...7). Estos
registros no tienen una realidad independiente dentro de la organizacin 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 1s, 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 confusin, asegurando que los valores de datos MMX no
se tomen como valores en punto flotante. Las instrucciones MMX acceden slo 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 aplicacin el
programador deber asegurar que el cdigo MMX y el cdigo en punto flotante estn encapsulados
en rutinas separadas.
1 byte
1 byte
1 byte
1 byte
1 byte
1 byte
1 byte
1 byte
17
Ejemplo: instruccin de suma paralela con truncamiento de dos registros MMX con 8 bytes
empaquetados
PADDB mmi, mmj
<mmi> + <mmj> mmj
0101
0101
0101
0101
0101
0101
0101
0101
mmi
0101
0101
0101
0101
0101
0101
0101
0101
mmj
1010
1010
1010
1010
1010
1010
1010
1010
mmi
Instrucciones Aritmticas
Este grupo lo forman 9 instrucciones, 3 de suma, 3 de resta y 3 de multiplicacin. En ellas se
distingue entre la aritmtica con saturacin y con truncamiento. En la aritmtica binaria con
truncamiento el resultado de una operacin con desbordamiento queda truncado por la prdida del bit
de desbordamiento. Por el contrario, en la aritmtica con saturacin, cuando la suma produce un
desbordamiento, o la resta un desbordamiento negativo, el resultado se fija respectivamente al mayor
o menor valor representable.
Ejemplo:
+
rebose --> 1
Instrucciones Aritmticas
PADD [B, P, D] mmi, mmj
PADDS [B, W] mmi, mmj
PADDUS [B, W] mmi, mmj
PSUB [B,W, D ] mmi, mmj
PSUBS [B,W] mmi, mmj
PSUDUS [B, W] mmi, mmj
PMULHW
PMULLW mmi, mmj
PMADDWD mmi, mmj
Semntica
Suma paralela con truncamiento de 8 B, 4 W 2 D
Suma con saturacin
Suma sin signo con saturacin
Resta con truncamiento
Resta con saturacin
Resta sin signo con saturacin
Multiplicacin paralela con signo de 4 palabras de 16 bits, con eleccin
de los 16 bits ms significativos del resultado de 32 bits
Multiplicacin paralela con signo de 4 palabras de 16 bits, con eleccin
de los 16 bits menos significativos del resultado de 32 bits
Multiplicacin paralela con signo de 4 palabras de 16 bits, y suma de
pares adyacentes del resultado de 32 bits
18
Instrucciones de Comparacin
La tecnologa MMX dispone de instrucciones paralelas de comparacin que generan una mscara de bits
como resultado. Estas instrucciones posibilitan la realizacin de clculos dependientes de los resultados
anteriores eliminando la necesidad de instrucciones de bifurcacin condicional. La mscara resultado de
una comparacin tiene todo 1s en los elementos correspondientes a una comparacin con resultado true, y
todo 0s cuando el resultado de la comparacin es false:
a3
a2
a1
a0
b3
b2
b1
b0
SI
a3 = b3
a2 b2
a1 = b1
a0 b0
ENTONCES
11...11
00...00
11...11
00...00
Semntica
Comparacin paralela de igualdad, el resultado es una mscara de 1s
si True y de 0s si False
Comparacin paralela de > (magnitud), el resultado es una mscara de
1s si True y de 0s si False
mmi, mmj
Instrucciones de Conversin
La tecnologa 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 pequeo 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
b3 b2
b1 b0
mmj
a3 a2
b1
b0 a0
a1 a0
mmi
a1
mmj
a3 a2
a1
a1 a0
mmi
a0
19
Semntica
Empaqueta palabras en bytes con saturacin sin signo
Empaqueta palabras en bytes con saturacin con signo, o palabras
dobles en palabras
Desempaqueta en paralelo los B, W o D ms significativos del registro
MMX. Mezcla entrelazada
Desempaqueta en paralelo los B, W o D menos significativos del registro
MMX. Mezcla entrelazada
Instrucciones Lgicas
El repertorio MMX dispone de 4 operaciones lgicas que realizan otras tantas operaciones bit a bit de este
tipo sobre los 64 bits de los operandos. Combinadas con las mscaras resultantes de las instrucciones de
comparacin permiten la realizacin de clculos alternativos en funcin de resultados anteriores. Las
instrucciones de este grupo son las siguientes:
Instrucciones Lgicas
PAND mmi, mmj
PANDN mmi, mmj
POR mmi, mmj
PXOR mmi, mmj
Semntica
AND lgico bit a bit (64 bits)
AND NOT lgico bit a bit (64 bits)
OR lgico bit a bit (64 bits)
XOR lgico bit a bit (64 bits)
Instrucciones de Desplazamiento
Este grupo lo constituyen operaciones de desplazamiento y rotacin lgicos y aritmticos realizados en
paralelo sobre cada uno de los elementos de datos de uno de sus operandos. El otro indica el nmero de
bits de desplazamiento o rotacin. Las instrucciones de este grupo son las siguientes:
Instrucciones de Desplazamiento
PSLL [W, D, Q]
mmi
PSRL [W, D, Q]
PSRA [W, D,]
mmi
mmi
Semntica
Desplazamiento lgico izquierda paralelo de W, D Q tantas veces
como se indique en el registro MMX o valor inmediato
Desplazamiento lgico derecha paralelo de W, D Q tantas veces como
se indique en el registro MMX o valor inmediato
Desplazamiento aritmtico derecha paralelo de W D tantas veces
como se indique en el registro MMX o valor inmediato
Instrucciones de Transferencia
La nica instruccin de este grupo permite la transferencia de informacin entre registros
MMX, la carga de registros MMX desde memoria, y el almacenamiento de los contenidos de los
registros MMX en memoria:
Instruccin de Transferencia
MOV [D, Q] mmi, memoria
Semntica
Transfiere una D Q a/desde el registro MMX
to 3
color then
= c[i] else
= a[i]
20
Fase 1
mm0
color
mm1
Color
00...00
mm0
a3
a2
a1
a0
color
color
11...11
00...00
color
11...11
Fase 2
a3
a2
a1
mm2
a0
c3
c2
c1
AND = (NOT-AND)mm0
00...00
11...11
a2
00...00
0
c0
mm4
AND
11...11
mm0
a0
mm0
11...11
00...00
c3
11...11
00...00
mm0
c1
mm4
OR
c3
a2
c1
a0
mm0
mm0, A
mm2, mm0
mm4, C
mm1, Color
mm0, mm1
mm4, mm0
mm0, mm2
mm0, mm4
;carga el array A
;hace copia del array A
;carga el array C
; carga Color
;compara A con Color
;selecciona elementos de C
;selecciona elementos de A
;genera la salida
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 0 c0 b0 a 0
d 3 d 2 d1 d 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 instruccin 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
mm4
d3 d2
mm3
c3 c2
d1 d0
c1 c0
mm2
b3 b2
mm3
mm1
a3 a2
b1
b0 a0
a1 a0
mm1
d1
mm3
d1 c1
b1 b0
c1
d0 c0
d0 c0
mm1
b1 a1
mm1
c0 b0 a0
d0
b0 a0
d1
a1
mm3
c1 d0 c0
d1
mm5
b1 a1
b0 a0
mm5
c1 b1 a1
mm1, fila1
mm2, fila2
mm3, fila3
mm4, fila4
mm1, mm2
mm3, mm4
mm5, mm1
mm1, mm3
mm5, mm3
El resultado es una transformacin 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 tamao de las multiplicaciones MMX de 16 bits.
Si una imagen tiene una resolucin 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 imgenes en blanco y negro, si fuesen en color necesitaramos
esa cantidad multiplicada por 3 (tres componentes bsicas del color), es decir 23.500.800. Para
secuenciar las operaciones pongamos la expresin anterior de la intensidad del pixel resultante de la
siguiente forma:
Pixel_resultante =
22
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 aadir las previas de movimiento de
datos y desempaquetamiento. En la siguiente figura aparece el esquema del proceso:
a3
Imagen_A
a2 a1 a0
mm0
mm1
b3
Imagen_B
b2 b1 b0
Desempaquetar
mm0
a3
a2
a1
a0
b3
b2
b1
b0
mm1
Resta
mm0
r3
r2
r1
r0
fade
fade
fade
fade
mm3
=
r3*fade
=
r2*fade
=
r1*fade
=
r0*fade
mm0
b3
b2
b1
b0
=
=
nuevo3 nuevo2
mm1
=
nuevo1
=
nuevo0
mm0
r3
r1
mm0
empaqueta
r2
r0
23
Este grupo de instrucciones juega un triple papel en las posibilidades expresivas y computacionales del
repertorio:
Reutilizacin de parte del cdigo del programa. Los procesos iterativos son el caso ms elemental
de reutilizacin de cdigo, que se construyen con instrucciones de bifurcacin condicional. El
segundo caso es el de las subrutinas, con ellas se construyen los bloques (funciones y
procedimientos) de los lenguajes de alto nivel.
Descomposicin 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 depuracin y
mantenibilidad.
Los tres componentes bsicos de las instrucciones de salto condicional son: el cdigo de operacin, la
condicin de salto y la direccin destino.
CO
Condicin
Direccin
Semntica:
IF Condicin = True THEN
CP <-- Direccin
ELSE
CP <-- <CP> + 1
Gestin de la Condicin
Generacin
Condicin
C
C
Z
Z
V
V
N
N
compuestas
nemotcnico
Condicin
HI (high)
C Z
LS (low or same)
C+ Z
HS (high or same)
C
LO (low)
C
GE (greater or equal)
N xor V
LT (less than)
N xor V
GT (greater than)
(N xor V)andZ
LE (less or equal)
(N xor V)orZ
24
Uso
N, D0
D0, D0
D0, N
El programador tiene dos opciones para repetir el cdigo en los puntos donde aparezca la operacin:
las macros y las subrutinas.
a) Una MACRO o subrutina abierta es una llamada que se realiza en aquellos puntos donde aparece
la operacin y que el ensamblador sustituye por el cdigo correspondiente en un proceso
denominado de expansin de macros.
N1
MOVE .W
MULS
MOVE .W
N2
N1, D0
D0, D0
D0, N1
MOVE .W
MULS
MOVE .W
N2, D0
D0, D0
D0, N2
25
b) Una SUBRUTINA o subrutina cerrada por el contrario no repite el cdigo en cada llamada, bifurca
a un nico cdigo que una vez ejecutado devuelve control a la instruccin siguiente a la que realiz la
bifurcacin:
N12
MOVE .W
MU LS
MOVE .W
N, D0
D0, D0
D0, N
N22
Analizaremos las diferentes alternativas de resolucin de estos problemas resaltando las ventajas e
inconvenientes de cada una.
3.2.1 Control de la direccin de vuelta
Para hacer que la direccin de vuelta de una subrutina sea siempre la siguiente a la de la
instruccin que realiza la llamada se pueden utilizar las siguientes alternativas:
1) Utilizacin de un registro
Se trata de una alternativa fcil de implementar y rpida en su ejecucin, sin embargo, impide el
anidamiento y la recursin.
Prog. Principal
Subrutina
Sub
dir
Salto
Sub
Retorno
dir
Registro
Pi i l
dir
PC
Aunque en el 68000 no es necesario utilizar esta alternativa, su codificacin podra ser la siguiente:
26
cuadrado
MOVE.W
MULS
MOVE.W
JMP
N, D0
D0, D0
D0, N
(A0)
.......
N1, N
siguiente1,
cuadrado
A0
siguiente1
MOVE.W
LEA.L
JMP
......
N2, N
siguiente2,
cuadrado
A0
siguiente2
MOVE.W
LEA.L
JMP
.
.
dir
Salto Sub1
Subrutina 1
Subrutina 2
dir
dir1
Sub1
Sub2
Salto Sub2
dir1
Retorno
Retorno
Esta alternativa permite un nmero ilimitado de llamadas anidadas, pero no permite la recursin.
En el 68000 codificaramos esta alternativa llevando el contenido de la posicin de memoria a un registro
de direcciones y realizando para implementar la vuelta un salto indirecto sobre l:
vuelta
cuadrado
--------------------------MOVE.W
N, D0
MULS
D0, D0
MOVE.W
D0, N
LEA.L
vuelta, A0
JMP
(A0)
.......
siguiente1, A1
A1, vuelta
cuadrado
siguiente1
LEA.L
MOVE.L
JMP
.......
siguiente2, A1
A1, vuelta
cuadrado
siguiente2
LEA.L
MOVE.L
JMP
......
27
D1
Subrutina 1
Subrutina 2
Sub1
dir
Sub2
Subrutina 3
Sub3
JSR Sub1
JSR Sub2
JSR Sub3
dir1
dir2
RTS
RTS
RTS
Pila despus
de la llamada
a sub1
Pila despus
de la llamada
a sub2
Pila despus
de la llamada
a sub3
Pila despus
de la vuelta
de sub3
Pila despus
de la vuelta
de sub2
Pila despus
de la vuelta
de sub1
dir2
dir
dir1
dir1
dir1
dir
dir
dir
dir
MOVE.W
MULS
MOVE.W
RTS
N, D0
D0, D0
D0, N
......
cuadrado
siguiente1
JSR
.....
JSR
.....
cuadrado
siguiente2
......
28
1) Utilizacin de un registro
La utilizacin de registros para el paso de parmetros y devolucin de resultados entre el
programa principal y la subrutina es el mtodo ms rpido (pues no hay que acceder a memoria) pero
resulta bastante limitado si el procesador no dispone de un buen nmero de registros. (Veremos ms
adelante que en algunos procesadores RISC existen mecanismos especiales para realizar el paso de
parmetros a travs de registros con solapamiento).
2) Utilizacin de memoria
La utilizacin de memoria para el paso de parmetros aporta mayor capacidad pero lentifica
el proceso por la necesidad de acceder a memoria. Tanto esta alternativa como la anterior impiden la
recursin de las subrutinas
3) Utilizacin de la pila
Cuando se realiza la llamada no slo se introduce en la pila la direccin de retorno, sino que
previamente se introducen tambin los parmetros que deben transferirse. La subrutina accede a los
parmetros actuales en la pila.
Prog. Principal
Subrutina
Sub
Paso de
parmetros
(PUSH)
JSR Sub
dir
RTS
Liberacin
de parmetros
Pila despus
del paso de
parmetros
Pila despus
de la llamada
a sub
Pila despus
de la vuelta
de sub
Pila despus
de la
liberacin
del rea de
parmetros
dir
3.2.3
parametro n
parametro n
parametro n
parmetro 1
parmetro 1
parmetro 1
Para que no se modifique el contexto de operacin del programa principal, ser necesario que la subrutina
comience preservando el valor todos los registros que se modifican en su ejecucin, y finalice restaurando
el valor de dichos registros:
29
Prog. Principal
Subrutina
Sub
Preservacin
del contexto
Paso de
parmetros
(PUSH)
JSR Sub
dir
Restauracin
del contexto
Liberacin
de parmetros
RTS
Pila despus
del paso de
parmetros
Pila despus
de la llamada
a sub
Pila despus
de preservar
el contexto
Pila despus
de restaurar
el contexto
Pila despus
de la vuelta
de sub
contexto
3.2.3
dir
dir
dir
parametro n
parametro n
parametro n
parametro n
parametro n
parmetro 1
parmetro 1
parmetro 1
parmetro 1
parmetro 1
Pila despus
de la
liberacin
del rea de
parmetros
Para que una subrutina con variables locales sea re-entrante y por tanto recursiva es necesario crear un
conjunto nuevo de variables locales cada vez que se produce una nueva llamada sin haber finalizado la
anterior. Para ello se puede utilizar de nuevo la Pila, que se convierte as en el soporte de la gestin
dinmica de la memoria en las llamadas a subrutinas. El conjunto de informacin que se introduce en la
pila como consecuencia de una llamada a subrutina se conoce como Registro de Activacin (RA)
Prog. Principal
Paso de
parmetros
(PUSH)
Subrutina
Sub
Creacin de
variab. locales
Preservacin
del contexto
JSR Sub
dir
Liberacin
de parmetros
Restauracin
del contexto
Destruccin de
variab. locales
RTS
30
La evolucin de la Pila en el proceso de llamada, ejecucin con variables locales y vuelta de subrutina sera la
siguiente:
Pila despus
del paso de
parmetros
Pila despus
de la llamada
a sub
Pila despus
de reservar
var. locales
Pila despus
de preservar
el contexto
Pila despus
de restaurar
el contexto
Pila despus
de liberar
var. locales
Pila despus
de la vuelta
de sub
contexto
parmetros
variables
locales
variables
locales
variables
locales
dir
dir
dir
dir
dir
parmetro 1
parmetros
parmetros
parmetros
parmetros
parmetros
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 direccin del antiguo RA (el de la subrutina que realiza la llamada, o
subrutina padre). De esta manera todos los RAs quedan enlazados a travs de este nuevo campo:
contexto
Estado de
la Pila
var. locales
R.A
de
Sub3
Subrutina
en
ejecucin
D. RA padre
Dir. Retorno
parmetros
contexto
Subrutina 1
var. locales
R.A
de
Sub2
D. RA padre
Sub1
Subrutina 2
Sub2
Subrutina 3
Sub3
Dir. Retorno
parmetros
JSR Sub2
JSR Sub3
RTS
RTS
contexto
var. locales
R.A
de
Sub1
RTS
D. RA padre
Dir. Retorno
parmetros
MC 68000
En el 68000 los registros de activacin se gestionan con las instrucciones LINK y UNLK, y contienen
los cuatro campos siguientes:
31
A7
PRAL
A6
PRAG
A5
Variables locales
Puntero al RA padre
Direccin de retorno
Parmetros
Variables globales
Teniendo en cuenta que en la pila estn ya los parmetros y la direccin de retorno de la subrutina la
ejecucin de esta instruccin inmediatamente despus de entrar en la rutina tiene el siguiente efecto:
Guarda en la pila el puntero de registro de activacin actual (A6), que contiene el puntero de registro
de activacin de la subrutina padre.
Copia el puntero de pila en el puntero de registro de activacin actual, que no vara durante la
ejecucin de la subrutina. Con esto se enlaza el registro de activacin de la subrutina con el de la
subrutina padre.
Decrementa el puntero de pila reservando espacio para las variables locales de la subrutina.
32
La instruccin UNLK desasigna la zona de memoria local restituyendo el puntero de registro de activacin
de la subrutina padre. Tiene el siguiente formato:
UNLK An
An es el registro de direcciones que se ha usado como puntero de registro de activacin. Su
semntica es la siguiente:
An --> SP; (SP)+ --> An
Es decir:
1.
2.
La ejecucin de esta instruccin antes del retorno de subrutina tiene el siguiente efecto:
Copia en el puntero de pila el contenido del puntero del registro de activacin actual. Con esto se
libera la zona de variables locales de la pila.
Saca de la pila el puntero de registro de activacin de la subrutina padre y lo coloca como puntero de
registro de activacin actual. El puntero de pila queda apuntando a la direccin de retorno.
Programa Principal
Sub
Subrutina
LINK A6, #despla
Preservacin del
contexto
Paso de parmetros
(PUSH)
JSR Sub
dir
Liberacin
de parmetros
Restauracin del
contexto
UNLK A6
RTS
Pentium
El procesador Pentium II tiene instrucciones equivalentes a las del 68000 para realizar la gestin de
las subrutinas: CALL, ENTER, LEAVE y RETURN equivalentes a JSR, LINK, UNLK y RTS.
Programa Principal
Sub
Subrutina
ENTER
Preservacin del
contexto
Paso de parmetros
(PUSH)
CALL Sub
dir
Liberacin
de parmetros
Restauracin del
contexto
LEAVE
RETURN
33
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
dode EBP es el PRAL y ESP el Puntero de pila (SP).
Esta secuencia de instrucciones es ms rpida que su equivalente ENTER que se introdujo con el
80286 (10 ciclos ENTER frente a 6 la secuencia anterior). La instruccin ENTER se aadi al
repertorio para sustituir a todo el cdigo anterior, aunque su velocidad de ejecucin es menor que la
de dicho cdigo.
4. Soporte de las instrucciones de control a las construcciones de alto nivel
4.1 Construcciones condicionales
IF-THEN
L.A.N.
IF A ope B THEN
<sentencias1>
L
LM.
CMP A, B
Bope L
<sentencias>
......
L1
L2
L.M.
CMP A, B
Bope L1
<sentencias2>
BRA L2
<sentencias1>
......
IF-THEN-ELSE
L.A.N.
IF A ope B THEN
<sentencias1>
ELSE
<sentencias2>
IF-THEN-ELSE-IF
L.A.N.
IF A1 ope1 B1 THEN
<sentencias1>
ELSE IF A2 ope2 B2 THEN
<sentencias2>
......
ELSE IF An open Bn THEN
<sentenciasn>
ELSE
<sentencias>
L1
L2
Ln-1
Ln
L
L.M.
CMP A1, B1
Bope1 L1
<sentencias1>
BRA L
CMP A2, B2
Bope2 L2
<sentencias2>
BRA L
.......
CMP An, Bn
Bopen Ln
<sentenciasn>
BRA L
<sentencias>
........
34
CASE
L.A.N.
CASE K
OF
0: <sentencias1>
1: <sentencias2>
......
n: <sentenciasn>
defecto: <sentencias>
L.M.
TABLA
L0
L1
L2
...
Ln
Ln+1
L0
L1
Ln
Ln+1
FIN
MOVE K, A1
LEA TABLA(A1), A2
JMP (A2)
<sentencias0>
BRA FIN
<sentencias1>
BRA FIN
....
<sentenciasn>
BRA FIN
<sentenciasn+1>
........
WHILE-DO
L.A.N.
WHILE A ope B
BEGIN
<sentencias1>
END DO
INI
L.M.
CMP A, B
Bope L
<sentencias>
BRA INI
<sentencias1>
......
REPEAT
L.A.N.
REPEAT
<sentencias>
UNTIL A ope B
INI
L.M.
<sentencias>
CMP A, B
Bope INI
......
FOR
L.A.N.
FOR A = B TO C DO
<sentencias>
L1
L.M.
MOVE B, A
CMP C, A
BGT L2
<sentencias>
INC A
BRA
......
35
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:
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 gestin interna.
La funcin 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.
El tiempo de CPU de un programa podemos expresarlo como:
Tiempo_de_CPU = Nmero_de_ciclos_de_reloj_de_la_ CPU Tc
donde Tc = Duracin_del_ciclo_de_reloj
Tiempo _ de _ CPU =
NI CPI
Fc
En determinadas situaciones de diseo puede ser til calcular el nmero total de ciclos de reloj de la CPU como:
Nmero_de_ciclos_de_reloj_de_la_CPU =
CPI
NI i
i =1
donde NIi representa el nmero de veces que el grupo de instrucciones i es ejecutado en un programa, y CPIi
representa el nmero medio de ciclos de reloj para el conjunto de instrucciones i. El tiempo de CPU se evala en
este caso mediante una de las 2 siguientes expresiones:
CPI
Tiempo_de_CPU =
i =1
NI i Tc
CPI i NI i
i =1
Tiempo _ de _ CPU =
Fc
El nmero medio de ciclos por instruccin vendr dado por:
n
CPI i NI i
NI
n
i =1
= (CPI i i )
CPI =
NI
NI
i =1
Esta ltima expresin calcula el CPI multiplicando cada CPIi individual por la fraccin 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
Se consideran 2 alternativas para implementar el salto condicional en un procesador:
CPU A: Una instruccin de comparacin genera el cdigo de condicin, y una de salto bifurca en funcin del
valor de cdigo generado.
CPU B: Una nica instruccin de salto que incluye la comparacin.
En ambos casos la instruccin de salto consume 2 ciclos de reloj, las dems instrucciones consumen 1 ciclo. Se
ignoran las prdidas debidas al sistema de memoria.
En la CPU A, el 20% de las instrucciones ejecutadas son saltos condicionales, y como en esta CPU cada salto es
precedido por una comparacin, otro 20% de las instrucciones ejecutadas son comparaciones.
Debido a que la CPU A no incluye la comparacin en el salto, su ciclo de reloj es un 25% ms rpido que el de la
CPU B.
Bajo estas condiciones Qu CPU es ms rpida?
Solucin
Com pa r a cion es
Sa lt os
CP U A
20 %
CP U B
20 %
20 %
100
Ot r a s
in st r u ccion es
60 %
80
60 %
MIPS =
1
6
CPI * 10 * Tc
Fc
CPI * 10 6
NI
MIPS * 10 6
Los MIPS dependen del repertorio de instrucciones, por lo que resulta un parmetro difcil de utilizar para
comparar mquinas con diferente repertorio
Pueden variar inversamente al rendimiento, como ocurre en mquinas 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 nmero de
instrucciones
En definitiva, los MIPS pueden fallar al dar una medida del rendimiento, puesto que no reflejan el tiempo de
ejecucin. Por esta razn se han venido utilizando los MIPS relativos, que miden cuantas veces ms tarda en
ejecutarse un programa en la mquina a medir que en una de referencia, que por definicin tiene un MIPS (VAX11/780):
MIPS relativos =
MFLOPS =
Existen operaciones en coma flotante rpidas (como la suma) o lentas (como la divisin), 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, comparacin y multiplicacin se les da peso 1;
divisin y raz cuadrada peso 4; y exponenciacin, trigonomtricas, etc. peso 8:
Productividad (throughput)
Nmero de tareas ejecutadas en la unidad de tiempo
Si llamamos fm a la fraccin de tiempo que puede utilizarse el modo de ejecucin ms rpido, 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 expresin:
(1 - fm) * Tsin
Tcon = (1 - fm) * Tsin + fm * Tsin / gvmejora
Tsin
tiempo en
que se
puede
utilizar la
mejora
fm * Tsin / gvmejora
fm * Tsin
tiempo
ahorrado
en la
mejora
gvglobal =
Tsin
Tsin
1
=
=
Tcon ( 1 f )* Tsin + f m * Tsin ( 1 fm ) + f m
m
gvmejora
gvmejora
Esta expresin recoge la forma cuantitativa de la ley de Amdahl. Si obtenemos el lmite 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 expresin de la fraccin fm
gvglobal
1/(1-fm)
gvmejora
Ejemplo
Un disco magntico 10 veces ms rpido que en la mquina original. El disco se utiliza slo el 40% del tiempo de
ejecucin. Cual es la ganancia de velocidad global?
fr=0.4
gvmejora = 10
CPU
gvglobal
1
(1 0.4)
1
(1 0.4) +
0.4
10
1
= 1.56
0.64
gvmejora -->
fi = 1
i =1
R a = f i * ri
i =1
P2
10.000 instruciones
10.000 instrucciones
5 segundos
2 segundos
Velocidad de ejecucin media aritmtica 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 ejecucin de un programa general) sobre 3
computadores A, B y C. Por cada programa se ejecutan 108 instrucciones, resultando los siguientes tiempos en
segundos:
Tiempo de ejecucin (seg)
Programa
P1
P2
P3
P4
A
1
10.000
500
100
Computador
B
10
100
1000
800
C
20
20
50
100
Ta =
1
m
ti =
i =1
1
m
A
100
0,1
0,2
1
Computador
B
10
1
0,1
0,125
C
5
5
2
1
r
i =1
1
i
= 16,01/4
= 4,002
= 19,1/4
= 4,775
= 1,9/4 = 0,475
R g = Ri1 / m
i =1
R g* = Ri f i
i =1
Se utiliza con medidas de rendimiento normalizadas con respecto a una mquina de referencia.
Los modelos de simulacin pueden construirse con mayor precisin, recogiendo especificaciones detalladas
de diseo. Sin embargo, estos modelos requieren una gran capacidad computacional cuando se incorporan todos
los componentes bsicos de la mquina.
En la tercera alternativa es la mquina o mquinas reales las que se evalan con el fin de disponer de algn
criterio de eleccin. En este caso (y posiblemente en algunos modelos de simulacin) ser necesario disponer de
un conjunto de programas representativos de la carga real de trabajo que vaya a tener la mquina, y con respecto a
los cuales se realicen las medidas. Estos programas patrones se denominan benchmarks, y sern 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 clasificacin general en funcin del mbito de aplicacin que representan, es decir, el
tipo de recursos computacionales que mayoritariamente intervienen en la evaluacin. En este sentido los
clasificaremos en:
Enteros: aplicaciones en las que domina la aritmtica entera, incluyendo procedimientos de bsqueda,
operaciones lgicas, etc. Por ejemplo, SPECint2000.
Punto flotante: aplicaciones intensivas en clculo numrico 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 ejecucin.
Con ellos se obtienen las medidas ms precisas
Ncleos (Kernels): Trozos de programas reales. Adecuados para analizar rendimientos especficos de las
caractersticas de una determinada mquina: Linpack, Livermore Loops
Patrones conjunto (benchmarks suits) Conjunto de programas que miden los diferentes modos de
funcionamiento de una mquina: SPEC y TPC.
Patrones reducidos (toy benchmarks): Programas reducidos (10-100 lneas de cdigo) y de resultado
conocido. Son fciles de introducir y ejecutar en cualquier mquina (Quicksort,...)
A continuacin estudiaremos con algn detalle tres de los benchmarks con mayor difusin.
LINPACK
Es una coleccin de subrutinas Fortran que analizan y resuelven ecuaciones lineales y problemas de mnimos
cuadrados. Los sistemas de ecuaciones lineales que contempla utilizan diferentes formas de las matrices:
generales, en banda, simtricas, 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
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 numrica 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 mquina. Para
resolver un sistema de n ecuaciones se realizan 2/3n3 + 2n2 ( se cuentan tanto las sumas y as multiplicaciones) .
Computador
Cray T916 (8 proc. 2.2 ns)
Cray T916 (4 proc. 2.2 ns)
Cray T916 (2 proc. 2.2 ns)
Cray T916 (1 proc. 2.2 ns)
Cray C90 (16 proc. 4.2 ns)
Cray C90 (8 proc. 4.2 ns)
Cray 3-128 (4 proc. 2.11 ns)
Hitachi S-3800/480(4 proc 2 ns)
Hitachi S-3800/380(3 proc 2 ns)
Hitachi S-3800/280(2 proc 2
Hitachi S-3800/180(1 proc 2 ns)
Cray 3-128 (2 proc. 2.11 ns)
Cray C90 (4 proc. 4.2 ns)
Cray C90 (2 proc. 4.2 ns)
Cray C90 (1 proc. 4.2 ns)
NEC SX-3/44R (4 proc. 2.5 ns)
NEC SX-3/42R (4 proc. 2.5 ns)
NEC SX-3/41R (4 proc. 2.5 ns)
NEC SX-3/34R (3 proc. 2.5 ns)
NEC SX-3/32R (3 proc. 2.5 ns)
NEC SX-3/31R (3 proc. 2.5 ns)
NEC SX-3/24R (2 proc. 2.5 ns)
NEC SX-3/22R (2 proc. 2.5 ns)
NEC SX-3/21R (2 proc. 2.5 ns)
NEC SX-3/14R (1 proc. 2.5 ns)
NEC SX-3/12R (1 proc. 2.5 ns)
Cray 3-128 (1 proc. 2.11 ns)
NEC SX-3/44 (4 proc. 2.9 ns)
NEC SX-3/24 (2 proc. 2.9 ns)
NEC SX-3/42 (4 proc. 2.9 ns)
NEC SX-3/22 (2 proc. 2.9 ns)
NEC SX-3/14 (1 proc. 2.9 ns)
NEC SX-3/12 (1 proc. 2.9 ns):
Cray Y-MP/832 (8 proc. 6 ns)
Fujitsu VP2600/10 (3.2 ns)
Cray Y-MP/832 (4 proc. 6 ns)
Fujitsu VPP500/1(1 proc. 10 ns)
Cray Y-MP M98 (8 proc. 6 ns)
Fujitsu VP2200/10 (3.2 ns)
Cray 2S/4-128 (4 proc. 4.1 ns
OS/Compilador
cf77
cf77
cf77
cf77
CF77
CF77
CSOS
OSF/1 MJ
CSOS 1.0
CF77 5.0
CF77 5.0
CF77 5.0
FORTRAN:V03-00
level 129
-Zp -Wd-e68
-Zp -Wd-e68
-Zp -Wd-e68
N=100
Mflops/s
522
479
468
421
408
393
388
387
387
368
368
327
314
313
275
249
226
206
204
203
202
N=1000
Mflops/s
10800
5711
2943
1576
10780
6175
2862
20640
16880
12190
6431
1622
3275
1703
902
15120
8950
4815
12730
6718
3638
9454
5116
2627
5199
2757
876
13420
8149
7752
4404
4511
2283
2144
4009
1159
1490
1733
1048
1406
Peak
Mflops/s
14400
7200
3600
1800
15238
7619
3792
32000
24000
16000
8000
1896
3810
1905
952
25600
12800
6400
19200
9600
4800
12800
6400
3200
6400
3200
948
22000
11000
11000
5500
5500
2750
2667
5000
1333
1600
2666
1250
1951
10
SPEC2000
SPEC CPU2000
Los disea 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 mquina 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
mquina de referencia, que por definicin tiene SPECint2000 = 100, y SPECfp2000 = 100.
SPECint2000
Lo integran los siguientes programas:
vpr(versatil place and route): implementa los procesos de ubicacin (placement) y conexionado
(routing) de un circuito digital sobre bloques lgicos de FPGAs. Pertenece a la clase de programas
de optimizacin combinatoria. Utiliza simulated annealing como procedimiento de optimizacin.
mcf: Programa de planificacin temporal (scheduling) de transporte pblico que utiliza el cdigo
MFC del mtodo simplex de red (versin especializada del algoritmo simplex de programacin
lineal).
crafty: programa de juego de ajedrez por computador con un nmero significativo de operaciones
enteras y lgicas tales como AND, OR, XOR y desplazamientos.
parser: analizador sintctico de ingls basado en gramticas de enlace (link grammar) con un
diccionario de mas de 60.000 palabras.
eon: trazador de rayos (ray tracer) que transmite un nmero de lneas 3D (rayos) sobre un modelo
poligonal 3D, calcula la interseccin entre las lneas y los polgonos, y genera nuevas lneas para
calcular la luz incidente en los puntos de interseccin. El resultado final es una imagen vista por
cmara.
perlbmk: versin del lenguaje de script Perl en el que se han eliminado las caractersticas
especficas del SO.
11
gap: implementa un lenguaje diseado para computar en grupos (GAP: Groups, Algorithm and
Programming).
vortex: procede de un OODBMS (sistema de gestin 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
CINT2000 Result
Intel Corporation
Intel D850MD motherboard (2.0A GHz, Pentium 4 processor)
SPEC license #
13
Benchmark
Base
Runtime
Base
Ratio
Runtime
1400
184
762
182
767
175.vpr
1400
316
443
315
444
176.gcc
1100
128
862
128
861
181.mcf
1800
326
552
326
553
186.crafty
1000
147
681
146
686
197.parser
1800
249
723
250
721
252.eon
1300
142
917
122
1066
253.perlbmk
1800
209
860
209
860
254.gap
1100
116
944
116
945
255.vortex
1900
162
1171
159
1192
256.bzip2
1500
259
580
254
591
300.twolf
3000
596
503
594
505
CPU:
CPU MHz:
FPU:
CPU(s) enabled:
CPU(s) orderable:
Parallel:
Primary Cache:
Secondary Cache:
L3 Cache:
Other Cache:
Memory:
Disk Subsystem:
Other Hardware:
722
SPECint2000
Vendor:
Model Name:
Ratio
164.gzip
SPECint_base2000
SPECint2000 =
735
SPECint_base2000 =722
735
Intel Corporation
Intel D850MD motherboard (2.0A GHz,
Pentium 4 processor)
Pentium 4 processor (2.0A GHz, 400
MHz bus)
2000
Integrated
1
1
No
12k micro-ops I + 8KBD on chip
512KB(I+D) on chip
N/A
N/A
256 MB (2 128 MB PC800 RDRAM nonECC modules)
IBM DTLA-307030 ATA-100
None
Operating System:
Compiler:
File System:
System State:
Software
Windows XP Professional(Build 2600)
Intel C++ Compiler 5.0.1 Build 010525Z
Microsoft Visual C++ 6.0 SP5(for
libraries)
FAT32
Default
13
CINT2000 Result
Copyright 1999-2000 Standard Performance Evaluation Corporation
Intel Corporation
Intel VC820 (1.0 GHz Pentium III)
SPEC license #
13
Benchmark
Reference
Time
Base
Runtime
Base
Ratio
SPECint2000 =
410
SPECint_base2000 =407
Runtime
1400
288
486
287
488
175.vpr
1400
426
329
426
329
176.gcc
1100
297
371
295
373
181.mcf
1800
710
254
710
254
186.crafty
1000
200
499
200
499
197.parser
1800
523
344
523
344
252.eon
1300
320
406
320
406
253.perlbmk
1800
312
576
313
576
254.gap
1100
290
379
289
381
255.vortex
1900
272
697
266
714
256.bzip2
1500
413
363
398
377
300.twolf
3000
844
355
820
366
407
SPECint2000
Hardware Vendor:
Model Name:
CPU:
CPU MHz:
FPU:
CPU(s) enabled:
CPU(s) orderable:
Parallel:
Primary Cache:
Secondary Cache:
L3 Cache:
Other Cache:
Memory:
Disk Subsystem:
Other Hardware:
Software Avail:
Ratio
164.gzip
SPECint_base2000
Intel Corporation
Intel VC820 (1.0 GHz Pentium III)
1.0 GHz Pentium III processor
1.0 GHz
Integrated
1
1
No
16KBI + 16KBD on-die
256KB(I+D) on-die ECC
N/A
N/A
256 MB PC800 RDRAM non-ECC
IBM DJNA 371800 ATA-66
Diamond Multimedia Viper 770 Ultra
TNT2 AGP
410
Operating System:
Compiler:
File System:
System State:
Software
Windows 2000 (Build 2195)
Intel C Compiler 4.5 for Windows 2000
Microsoft Visual C++ 6.0 C libraries,
SmartHeap library
FAT32
Default
14
CFP2000 Result
Copyright 1999-2002 Standard Performance Evaluation Corporation
Intel Corporation
Intel D850EMV2 motherboard (2.0A GHz, Pentium 4 processor)
SPEC license #
13
Benchmark
Base
Runtime
Base
Ratio
SPECfp2000 =
SPECfp_base2000 =
Runtime
1600
168
952
167
957
171.swim
3100
235
1317
233
1333
172.mgrid
1800
246
730
245
736
173.applu
2100
263
798
258
815
177.mesa
1400
183
767
182
769
178.galgel
2900
268
1084
265
1094
179.art
2600
489
532
484
538
183.equake
1300
144
905
137
950
187.facerec
1900
201
947
200
951
188.ammp
2200
434
507
431
511
189.lucas
2000
189
1057
189
1057
191.fma3d
2100
282
746
281
746
200.sixtrack
1100
302
365
293
376
301.apsi
2600
454
572
454
573
764
SPECfp2000
Model Name:
CPU:
CPU MHz:
FPU:
CPU(s) enabled:
CPU(s) orderable:
Parallel:
Primary Cache:
Secondary Cache:
L3 Cache:
Other Cache:
Memory:
Disk Subsystem:
Ratio
168.wupwise
SPECfp_base2000
773
764
773
Intel Corporation
Intel D850EMV2 motherboard (2.0A
GHz, Pentium 4 processor)
Pentium 4 processor (2.0A GHz, 400
MHz bus)
2000
Integrated
1
1
No
12k micro-ops I + 8KBD on chip
512KB(I+D) on chip
N/A
N/A
256 MB (2 128 MB PC800-40 RDRAM
non-ECC modules)
IBM 120GXP 80 GB
IC35L080AVVA07-0 ATA-100
Operating System:
Compiler:
File System:
System State:
Software
Windows XP Professional(Build 2600)
Intel C++ Compiler 6.0 Build 020321Z
Intel Fortran Compiler 6.0 Build 020321Z
Microsoft Visual C++ 6.0 SP5(for
libraries)
FAT32
Default
15
La siguiente grfica muestra la evolucin de los procesadores en los ltimos aos caracterizados
por su valor de SPECint con referencia en el VAX 11/780
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 ms detalle en los siguientes pargrafos 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 estndar industrial
para aplicaciones comerciales. Los dos son muy similares ya que modelan la misma aplicacin comercial (base de
datos, preguntas y funciones de refresco). Se diferencian en las reglas de implementacin , ya que mientras TPCH limita el uso de ndices y esquemas de particiones, TPC-R no limita el uso de estas estructuras en la base de
datos.
16
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 relacinentidad de la siguiente figura (8 tablas):
part
partsupp
supplier
customer
nation
lineitem
orders
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 tamao 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 tamao de todas las tablas excepto nation y region tienen un tamao proporcional al factor de
escala.
Carga de Trabajo
Las cargas de trabajo para ambos benchmarks constan de los siguientes componentes:
La construccin 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 estn definidas en SQL-92 como plantillas (templates), por lo que antes de ser ejecutada
sobre la base de datos se tiene que realizar la sustitucin de parmetros. 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 informacin (RF1) y la eliminacin
de informacin obsoleta (RF2). RF1 inserta nuevas filas en la tabla lineitem y orders, mientras que RF2 elimina el
mismo nmero de filas de las mismas tablas.
Mtrica de rendimiento
La principal mtrica de rendimiento de TPC es la mtrica de rendimiento compuesta (QphH/QphR). Para
calcular la mtrica 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). Despus se combinan los resultados de ambos
tests para calcular la mtrica compuesta.
En un test de potencia se ejecuta la funcin de refresco RF1, seguida por la ejecucin de las 22 preguntas en
modo de nico usuario, y por la ejecucin de la funcin de refresco RF2.
En el test de capacidad se ejecutan las 22 preguntas (flujos de preguntas Si) en orden predefinido en mltiples
sesiones concurrentes. Adems en una sesin separada se ejecuta secuencialmente un par de actualizaciones
(RF1, RF2) por cada flujo de preguntas.
17
Test de Potencia
tiempo
Insercin
S2
Sn
RF1
RF1
RF2
Q1
Q2
Q3
.
.
.
Q21
Q22
Flujo de
preguntas
....
.
.
.
RF1
Borrado
RF2
RF2
El nmero mnimo de flujos depende del factor de escala, segn la tabla siguiente:
Factor de Escala (SF)
1
10
100
300
1000
3000
10000
Flujos (S)
2
3
4
6
7
8
9
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)
La potencia de procesamiento se calcula como la media geomtrica de los tiempos de respuesta
correspondientes a las preguntas y funciones de refresco. La unidad es preguntas/hora. La media geomtrica
reduce los efectos de las preguntas con tiempos de respuesta muy cortos y muy largos. Para un factor de escala SF
dado, la potencia de procesamiento se calcula como:
3600 SF
Power @ Size =
24
i = 22
j =2
i =1
j =1
QI (i,0) * RI ( j,0)
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 funcin de refresco RFj
3600: segundos (= 1 hora)
La capacidad de procesamiento se calcula como la razn del nmero total de preguntas ejecutadas a lo largo del
intervalo de ejecucin. La unidad es preguntas/hora. Para un factor de escala SF viene dada por:
18
Throughput @ Size =
S 22 3600
SF
TS
La mtrica de rendimiento compuesta (QphH para TPC-H y QphR para TPC-R) se calcula como:
Company
System
QphH Price/QphH
System
Availability
Database
Operating
System
Oracle 9iR2
w/Real
Application
Cluste
HP Tru64
Unix
V5.1A/IPK
HP
AlphaServer
5,578
ES45 Model
68/1000
404 US $
07/15/02
IBM eServer
x350 with 2,960
DB2 UDB
336 US $
06/20/02
347 US $
SGI 1450
Server with
DB2 UDB
EEE v7.2
2,733
Date
Cluster
Submitted
07/15/02
02/01/02
10/31/01
Linux 2.4.3
05/11/01
Microsoft
Windows
.NET
Enterprise
Server
07/31/02
HP Proliant
1,933
DL760 X900
89 US $
12/31/02
Microsoft SQL
Server 2000
Enterprise
Edition
ProLiant 80001,699
X700-8P
161 US $
08/01/00
Microsoft SQL
2000
Microsoft
Windows
2000
07/21/00
Microsoft
Windows
2000
Advanced
Server
06/26/02
HP Proliant
DL580 G2
1,695
82 US $
06/26/02
Microsoft SQL
Server 2000
Enterprise
Edition
e-@ction
Enterprise
Server
ES5085R
1,669
169 US $
01/31/01
Microsoft SQL
Server 2000
Microsoft
Windows
2000
12/22/00
Netfinity
8500R
1,454
200 US $
08/01/00
Microsoft SQL
Server 2000
Microsoft
Windows
2000
05/23/00
ProLiant 80001,308
8P
174 US $
08/01/00
Microsoft SQL
2000
Microsoft
Windows
2000
04/05/00
195 US $
08/18/00
Microsoft SQL
Server 2000
Microsoft
Windows
2000
08/18/00
10
NetServer
LXr8500
1,291
19
300 GB Results
Rank
Company
System
Compaq
ProLiant
12,995
DL760 x90064P
System
Availability
Database
Operating
System
199 US $
06/20/02
IBM DB2
UDB 7.2
Microsoft
Windows
2000
Advanced
Server
04/09/02
QphH Price/QphH
Date
Cluster
Submitted
NUMA-Q
2000
7,334
616 US $
08/15/00
IBM DB2
UDB 7.1
DYNIX/ptx
4.5.1
05/03/00
Compaq
AlphaServer
ES45 Model
68/1000
5,976
453 US $
06/01/02
Oracle 9i R2
Enterprise
Edition
Compaq
Tru64 Unix
V5.1A/IPK
05/05/02
NUMA-Q
2000
5,923
653 US $
09/05/00
IBM DB2
UDB 7.1
DYNIX/ptx
4.5.1
09/05/00
10/17/02
Unisys
ES7000 Orion
4,774
130 Enterprise
Server
219 US $
03/31/03
Microsoft
Microsoft
SQL Server Windows .NET
Server 2003
2000
Datacenter
Enterprise
Edt.
Ed. 64-bit
NUMA-Q
2000
4,027
652 US $
09/05/00
IBM DB2
UDB 7.1
DYNIX/ptx
4.5.1
09/05/00
AlphaServer
ES40 Model
6/667
2,832
1,058 US $
02/14/01
Informix XPS
8.31 FD1
Compaq
Tru64 UNIX
V5.1
12/19/00
ProLiant
8000-8P
1,506
280 US $
11/17/00
Microsoft
SQL Server
2000
Microsoft
Windows
2000
11/17/00
NetServer LXr
1,402
8500
207 US $
08/18/00
Microsoft
SQL Server
2000
Microsoft
Windows
2000
08/18/00
1,000 GB Results
Rank
Company
System
QphH Price/QphH
System
Availability
Database
Operating
Date
Cluster
System Submitted
10/30/02
Oracle 9i
Database
Enterprise
Edition
v9.2.0.2.0
HP UX 11.i
64-bit
06/24/02
Microsoft
Windows
2000
Advanced
Server
02/06/02
HP 9000
Superdome
25,805
Enterprise
Server
Compaq
ProLiant
22,361
DL760
X900-128P
255 US $
06/20/02
Sun
Fire[TM] 18,802
15K server
256 US $
07/17/02
Oracle 9i
Database
Enterprise
Edition
Sun Solaris
8
01/17/02
WorldMark
18,542
5250
638 US $
07/27/01
Teradata
V2R4.1
MP-RAS
3.02.00
10/09/01
HP 9000
Superdome 13,160
Enterprise
564 US $
09/05/01
Orcacle9i.9.0.1
Enterprise Edi
HP UX 11.i
64-bit
08/06/01
231 US $
20
Server
6
IBM
RS/6000 SP 12,866
550
649 US $
08/15/00
IBM AIX
4.3.3
06/15/01
HP 9000
Superdome
9,754
Enterprise
Server
814 US $
02/13/01
Informix
Extended
Parallel Ser
8.31FD1
HP UX 11.i
64-bit
02/13/01
581 US $
10/31/01
Sun Solaris
8
06/11/01
Sun Fire
6800
4,735
3000 GB Results
Rank
Company
System
QphH Price/QphH
System
Availability
Database
Operating
System
Oracle 9i
Database
Enterprise
Edition
v9.2.0.2.0
HP UX 11.i
64-bit
HP 9000
Superdome
27,094
Enterprise
Server
240 US $
10/30/02
Sun Fire[TM]
15K Server
23,813
with Oracle9i
R2
237 US $
10/30/02
Compaq
ProLiant
21,053
DL760
X900-128P
291 US $
WorldMark
18,803
5250
989 US $
HP 9000
Superdome
17,908
Enterprise
Server
Sun Starfire
Enterprise
10,764 1,250 US $
10000 with
Oracle9i
569 US $
Oracle 9i R2
Enterprise Sun Solaris 9
Edition
Date
Cluster
Submitted
08/26/02
06/26/02
06/20/02
IBM DB2
UDB 7.2
Microsoft
Windows
2000
Advanced
Server
02/06/02
07/27/01
Teradata
V2R4.1
MP-RAS
3.02.00
10/09/01
05/15/02
Oracle 9i
Database
Enterprise
Edition
HP UX 11.i
64-bit
12/17/01
04/13/01
06/19/01
Oracle9i
Database
Sun Solaris 8
Ent. Edition
9.0.1
100 GB Results
^ Compan
y
System
QphR Price/QphR
System
Availability
Database
Date
Submitted
04/04/03
Oracle 9i R2 Enterprise
Edition
10/11/02
1,000 GB Results
^ Company
System
QphR
Price/QphR
System Availability
Database
Date Submitted
WorldMark 5200
17,529
737 US $
02/15/00
08/23/99
WorldMark 5200
21,254
607 US $
08/31/00
03/06/00
21
Otros benchmarks
Whetstone: Benchmark sinttico representativo de la programacin numrica escalar (punto flotante). Est
formado por un conjunto de bucles con una alta localidad de referencia, lo que favorece a las cache pequeas.
Utiliza muchas llamadas a librera, lo que posibilita mejorar los resultados optimizando estas libreras. El
resultado se expresa en whetstone/segundo, es decir, instrucciones del benchmark/segundo. Se basa en una
estadstica recogida por Brian Wichmann del National Physical Laboratory de Inglaterra, utilizando un
compilador Algo 60 que traduca Algo a instrucciones de la mquina imaginaria Whetstone, una pequea
ciudad a las afueras de Leicester.
Dhrystone: Benchmark sinttico que utiliza un juego de palabras relativas a su antecesor whetstone y es
representativo de programas generales (enteros) escritos originariamente en Fortran. Rene operaciones
aritmticas de enteros, tratamiento de caracteres y punteros. Est constituido por un bucle de gran tamao. El
resultado se expresa en dhrystone/segundo, es decir, nmero de ejecuciones del bucle por segundo. En la
actualidad est tambin disponible en ADA, Pascal y C.
Registros
Mayor flexibilidad para los compiladores
Ms velocidad (sin acceso a Memoria)
Inconvenientes
Elevado trfico con Memoria
Instrucciones ms largas
El trfico con memoria es uno de los cuellos de botella ms importantes para el funcionamiento del procesador. Se
disminuye este trfico con instrucciones que operen sobre registros, ya que el acceso es ms rpido y las
referencias a los registros se codifican con menor nmero de bits (instrucciones ms cortas).
Conclusin
Se opta por el tipo de mquina con registros de propsito general (RPG)
Inconvenientes
Mayor nmero de instrucciones
por programa
22
Memoria-Memoria
Formato ms complejo
Mucho acceso a memoria
Formato complejo
Conclusin
Dentro de las mquinas con registros de propsito 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
ALU
R2
Almacenamiento
R3
.
Carga
Memoria
.Rn
ms rpido
ms lento en general
mayor flexibilidad
Conclusin
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 nmero de instrucciones de un
programa. Sin embargo, aaden complejidad al repertorio aumentando con ello el CPI (nmero medio de ciclos
por instruccin). En la grfica siguiente aparecen los resultados de medir los modos de direccionamiento que
utilizan 3 programas del SPEC89 sobre la arquitectura VAX (una de las que ms modos de direccionamiento
dispone): Tex, Spice y gcc. Como puede observarse en la grfica, los direccionamientos inmediato y con
desplazamiento dominan con diferencia sobre los dems. No se ha incluido el direccionamiento relativo que se
utiliza casi exclusivamente en las instrucciones de bifurcacin.
23
1%
Indirecto memoria
1%
0%
Indexado
16%
6%
3%
Indirecto registro
6%
24%
TeX
11%
Spice
gcc
43%
17%
Inmediato
39%
32%
Desplazamiento
55%
40%
0%
Otros
0%
3%
3%
10%
20%
30%
40%
50%
60%
El direccionamiento registro + desplazamiento alcanza ms del 75%. El tamao de los desplazamientos no aparece
en la grfica pero vara de 12 a 16 bits en un porcentaje que va del 75% al 99%. El tamao del campo inmediato
varia de 8 a 16 bits en un porcentaje que va del 50% al 80%.
Conclusiones
Una mquina eficiente, que favorezca los casos frecuentes (que como hemos visto por la ley de Amdahl son los
que ms aportan a la ganancia de velocidad global de la mquina) debera soportar:
24
0%
Doble Palabra
66%
0%
89%
34%
Palabra
91%
TeX
Spice
Media Palabra
0%
0%
4%
gcc
11%
BYTE
0%
5%
0%
20%
40%
60%
80%
100%
Frecuencia de la referencia
2.6 Operaciones
Se cumple en la prctica que las operaciones ms simples son las que ms se repiten en los programas,
concretamente las operaciones de carga, salto condicional, comparacin, 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 ejecutndose sobre la familia x86, tal como muestra la siguiente tabla:
ordenacin
1
2
3
4
5
6
7
8
9
10
instruccin x86
carga
salto condicional
comparacin
almacenamiento
suma
and
resta
transferencia RR
salto a subrutina
retorno de subrutina
TOTAL
% total ejecutadas
22%
20%
16%
12%
8%
6%
5%
4%
1%
1%
96%
Conclusiones
El repertorio ISA de un procesador eficiente no debera incluir muchas ms operaciones que las aparecidas en
la tabla anterior.
25
16%
13%
10%
Llamada/retorno
Bifurcacin
12%
12%
TeX
Spice
gcc
18%
66%
Condicional
0%
10%
20%
30%
40%
50%
60%
75%
78%
70%
80%
90%
Si analizamos la distribucin de los saltos condicionales observamos (figura siguiente) que ms de un 70% son
saltos sobre igual o diferente, y un gran nmero son comparaciones con cero. Esto justifica que algunos
procesadores incorporen un registro cuyo contenido es siempre igual a cero.
25%
LT/GE 0%
GT/LE
11%
TeX
3%
25%
0%
Spice
72%
75%
EQ/NE
0%
20%
40%
60%
gcc
89%
80%
100%
La grfica siguiente muestra la distribucin del desplazamiento (nmero de bits) relativa al PC:
40
punto flotante
35
30
enteros
25
20
15
10
5
0
10
11
12
13
14
15
16
Conclusiones
Instrucciones que integren el test sobre la condicin y el correspondiente salto
Registro cuyo contenido es inalterable igual a cero.
Desplazamiento de 8 bits
26
que deben de realizar. Resulta, pues, conveniente optimizar la ejecucin de estas instrucciones. Del anlisis de los
datos se deducen los siguientes hechos:
retorno
t = 33
llamada
w=5
profundidad
de
anidamiento
Puede observarse que la variacin 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 activacin (RA). Este mecanismo lo analizamos en el punto siguiente.
Registros de propsito general: ventanas para soportar llamadas a procedimientos
El procesador dispone de n registros fsicos r0, r1, ...rn de los que en cada momento slo son visibles para
el programador (ventana) m de ellos: R0, R1, ..., Rm (m < n). Cuando todava no se ha realizado ningn salto a
subrutina, los registros visibles coinciden con los m primeros registros fsicos. Cuando se ejecuta una instruccin
de salto, los registros visibles se desplazan sobre los fsicos de tal manera que se da un solapamiento entre los
ltimos antes del salto y los primeros despus del salto. Es en los registros de solapamiento donde se realiza el
paso de parmetros a la rutina y la devolucin de resultados.
27
r0
r1
ri
rn
R0
Rm
R. parmetros
R. var. locales
R. temporales
R0
salto 1
Rm
R. parmetros
R. var. locales
R. temporales
R0
R. parmetros
ventana de solapamiento 1
Rm
R. var. locales
R. temporales
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 activacin) que primero se introdujo (primera
llamada). El tamao del buffer se elige de manera tal que permita soportar un nivel de anidamiento activo (en
registros) de acuerdo a los datos empricos que muestran los programas. En nuestro caso vimos que una variacin
de nivel igual a 5 se mantena durante 33 llamadas/retorno, lo que significa que durante esas 33 llamadas todos
los registros de activacin se hubiesen soportado en un sistema con 5 ventanas .
B.in
A.out
A.loc
ventana salvada
B.loc
C.in
B.out
ventana actual
A.in
restauracin
salvaguardia
Ejemplo
En la siguiente figura se presenta el diseo de un sistema de registros con ventana de solapamiento
que dispone de 32 registros fsicos, r0, r1, ...r31, y una ventana de 8 registros: R0, R1, ..., R7. El
solapamiento es de 2 registros.
28
000
001
010
011
100
JSR
RTS
+1
-1
00000
00110
01100
01010
10110
Lgica
combinacional
Sumador
direccin del
registro visible
r0
R0
r1
R1
r2
R2
r3
R3
r4
R4
r5
R5
r6
R6
R0
r7
R7
R1
r8
R2
r9
R3
r10
R4
r11
R5
r12
R6
r13
R7
r31
Las optimizaciones realizadas por los compiladores modernos podemos resumirlas en las siguientes:
Optimizacin de alto nivel: realizadas en el cdigo fuente
Integracin de procedimientos: sustituye la llamada a un procedimiento por el cuerpo de ste (expansin
de macros).
29
Optimizacin del uso de registros: es una de las que reporta mayor incremento de rendimiento. La
estudiaremos con ms detalle a continuacin.
Por ltimo conviene destacar que las dos ayudas ms importantes que la arquitectura de un procesador puede
prestar al diseo del compilador son:
Regularidad del repertorio, es decir, ortogonalidad de sus elementos para simplificar la generacin de cdigo
Proporcionar funciones primitivas, no soluciones codificadas en las instrucciones, pues estas resultan difcil
de utilizar cuando el caso se aparta ligeramente del que origin su diseo.
Ejemplo
Asignacin de las 6 variables (V1,...V6) que aparecen en el segmento de programa de la siguiente figura, en la
que se indica de forma grfica sus interferencias. Se disponen de 3 registros en la mquina: R1, R2 y R3.
1) Se construye el grafo de interferencias tal como se muestra en la siguiente figura.
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
R1
V1
V2
V3
V4
V5
R2
V6
V1
V2
V3
V4
R3
R1
V5
R3
V6
Memoria
Segmentacin
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 ms fases de ejecucin. La tarea de cada instruccin se divide en
etapas, de tal forma que en cada ciclo se ejecuta una etapa de una instruccin, simultanendose la ejecucin de
etapas de diferentes instrucciones.
31
Modelo secuencial
instruccin 1
E
I
instruccin 2
instruccin 3
1
10
11
12
13
14
15 ciclos
instruccin 2
instruccin 3
instruccin 4
instruccin 5
1
ciclos
Modelo infrasegmentado
En cada n ciclos se lanza una nueva instruccin (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
ms) ciclos para acceder a la misma.
instruccin 1
instruccin 2
instruccin 3
instruccin 4
instruccin 5
1
10
11
12
13
E
14
Modelo supersegmentado
Aumentan el rendimiento disminuyendo el tiempo de ciclo. Esto lo consiguen aumentando considerablemente el
nmero de etapas del procesador (o dividiendo la etapa en subciclos). Con ello se consigue que el rendimiento
mximo 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 nmero de conflictos entre las
instrucciones que tengan algn tipo de dependencia a la hora de la ejecucin (dependencias de datos, estructurales
o de control), con la consiguiente prdida de rendimiento.
32
ciclos
instruccin 1
instruccin 2
10
11
12
instruccin 3
instruccin 4
instruccin 5
1
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 implcito que presentan las aplicaciones y que pueden extraer los
compiladores.
instruccin 1
instruccin 2
instruccin 3
instruccin 4
instruccin 5
instruccin 6
1
ciclos
Dependencias
Son las causantes de la disminucin de rendimiento en la ejecucin segmentada y superescalar. Son de tres tipos:
Dependencias de datos
Producidas por la referencia a un mismo dato por ms de una sentencia (instruccin). Son de tres tipos:
Dependencia de flujo (verdadera dependencia) RAW(Read After Write)
S1 S2
S1
.
.
.
S2
Ejemplo:
X := ...
...:=...X...
Load r1, a
Add r2, r1, r1
33
S1
.
.
.
S2
Ejemplo:
...:=...X...
X :=...
Mul r1, r2, r3
Add r2, r4, r5
S1
.
.
.
S2
Ejemplo:
X :=...
X :=...
Mul r1, r2, r3
Add r1, r4, r5
Grafo de dependencias
S1:
S2:
S3:
S4
Load
Add
Move
Store
R1, A
R2,R1
R1,R3
B,R1
/R1
/R2
/R1
/M(B)
M(A)/
<R1>+<R2>/
<R3>/
<R1>/
S1
S2
S4
S3
Dependencias de control
Debido a las instrucciones de salto condicional.
Ejemplo:
zproc
Dependencias de recursos(estructurales)
Producidas al tratar de usar recursos compartidos
34
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)
Formatos de las instrucciones
6
tipo I
(Inmediato)
Operacin
rs
rd
16
Inmediato
rd Memoria
Memoria rs
rd rs Operacin Inmediato
Cargas
Almacenamientos
Operaciones inmediatas
6
Tipo J
(salto)
26
Operacin
Destino
Tipo R
(registro)
11
Operacin
rs1
rs2
rd
Funcin
Operaciones aritmtico-lgicas
Repertorio de instrucciones
Veamos algunas de las instrucciones de los diferentes grupos:
INSTRUCCIONES ARITMETICO/LOGICAS
Ejemplo
ADD (Sumar)
R1 R2 + R3
ADDI (Sumar inmediato)
R1 R2 + 3
SLLI (Desplazamiento lgico izquierda)
R1 R2 << 5
SLT (Activa menor que)
IF (R2 < R3) R1 1 ELSE R1 0
Semntica
ADD R1, R2, R3
ADDI R1, R2, #3
SLL R1, R2, #5
SLT R1, R2, R3
Ejemplo
J nombre
JAL nombre
JR R3
BEQZ R4, nombre
BNEZ R4, nombre
Instruccin
Instruccin
INSTRUCCIONES DE CARGA/ALMACENAMIENTO
Semntica
Ejemplo
LW R1, 30 (R2)
R1 32 M[30 + R2]
LW R1, 1000 (R0)
R1 32 M[1000 + 0]
LB (Cargar byte)
R1 32 (M[40 + R3]0)24 ## M[40+R3] LB R1, 40 (R3)
LBU R1, 40 (R3)
LBU (Cargar byte sin signo)
R1 32 024 ## M[40+R3]
SW 500(R4), R3
SW (Almacenar palabra)
M[500+R4]32 R3
Instruccin
LW (Cargar palabra)
35
M[502+R2]16 R316..31
M[41+R3]8 R224..31
SH 502(R2), R3
SB 41(R3), R2
4
ratio de rendimiento
3,5
3,5
3
2,5
2,5
1,5
1,5
1
ratio CPI
0,5
0,5
fi
eqntott
espresso
doduc
tomcatv
fpppp
nasa7
0
matrix
0
spice
DLX/VAX
SPEC 89
36
Ubicacin en el computador
Interna (CPU): registros, cache(L1), cache(L2), memoria principal
Externa (E/S): discos, cintas, etc.
Parmetros de velocidad
Tiempo de acceso
Tiempo de ciclo
Ancho de banda(frecuencia de acceso)
Unidades de transferencia
Palabras
Bloques
2. Jerarqua de las unidades de memoria de un computador
Las distintas memorias presentes en un computador se organizan de forma jerrquica:
aumenta capacidad
nivel superior
aumenta velocidad
Registros de la CPU
Memoria cache(L1,L2)
Memoria principal
Discos magnticos
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
Se consigue que el mayor nmero de referencias generado por los programas correspondan a
informaciones ubicadas en los niveles ms altos de la jerarqua.
3. Memoria principal: organizacin.
Una memoria principal se compone de un conjunto de celdas bsicas dotadas de una
determinada organizacin. Cada celda soporta un bit de informacin. Los bits se agrupan en
unidades direccionables denominadas palabras. La longitud de palabra la determina el nmero
de bits que la componen y constituye la resolucin de la memoria (mnima cantidad de
informacin direccionable). La longitud de palabra suele oscilar desde 8 bits (byte) hasta 64 bits.
Cada celda bsica es un dispositivo fsico 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 magnticos como soporte de las celdas de
memoria principal (memorias de ferritas, de pelcula delgada, etc.) en la actualidad slo se
utilizan los materiales semiconductores.
Dentro de las memorias electrnicas de semiconductor podemos distinguir dos grandes
grupos: las estticas (SRAM: Static Random Access Memory) y las dinmicas (DRAM: Dynamic
Random Access Memory). Las estticas utilizan el principio de biestabilidad que se consigue con
dos puertas inversoras (NAND NOR) realimentadas, mientras que las dinmicas aprovechan la
carga o ausencia de carga de un pequeo condensador creado en un material semiconductor.
Debido a la descarga natural que sufren las celdas cargadas, las memorias dinmicas necesitan
un sistema de refresco que peridicamente - y antes que la carga elctrica del condensador se
haga indetectable - recargue las celdas que se encuentran en estado de carga.
Desde un punto de vista conceptual y con independencia de la tecnologa,
consideraremos la celda bsica de memoria como un bloque con tres lneas de entrada (entrada
dato, seleccin y lectura/escritura) y una de salida (salida dato). La celda slo opera (lectura
escritura) cuando la seleccin est activa.
Seleccin
Entrada dato
Salida dato
Lectura/Escritura
Matriz de celdas
direccin
2n
2n X m celdas
Seleccin
n
Control
SC
R/W
m
datos
entrada
datos
salida
De1
De2
De3
R/W
A0
A1
3
2
DEC 1
0
Ds0
Ds1
Ds2
Ds3
Organizacin 3D
En lugar de una nica seleccin (decodificador) de 2n salidas en esta organizacin se
utilizan dos decodificadores
de 2n/2 operando en coincidencia. Las lneas de direccin se
reparten entre los dos decodificadores. Para una configuracin dada de las lneas de direccin se
selecciona un nico bit de la matriz. Por ello se la denomina tambin organizacin por bits.
Seleccin
X
2n/2
n/2
Matriz de celdas
n
direccin
2n/2
Seleccin
Y
2n X m celdas
n/2
Control
SC
R/W
m
datos
entrada
datos
salida
Ejemplo:
A2
A3
DEC
0
R/W
A0
A1
3
2
DEC 1
0
En esta organizacin se necesitan varias matrices de celdas bsicas, tantas como bits
deba tener la palabra de memoria, actuando sobre ellas en paralelo los circuitos de
decodificacin:
DE C X
u n a pa la br a
DE C
Y
SC
SC
n
2n * m * k bits
2n * m bits
R/W
R/W
m
mk
n
n
SC
1
SC
2
SC
k
2n x m bit s
2n x m bit s
2n x m bit s
R/W
R/W
R/W
R/W
k m
SC
SC
SC
SC
SC
1K x 2 bit s
1K x 2 bit s
1K x 2 bit s
1K x 2 bit s
R/W
R/W
R/W
R/W
R/W
D0
.
.
.
D7
SC
SC
n+k
2n * m bits
2n * N * m bits
R/W
R/W
2k-1
An +k+1,...An
DEC
1
0
dir eccion es
An -1,...A0
SC
n
SC
1
SC
2
SC
N
2n x m bit s
2n x m bit s
2n x m bit s
R/W
R/W
R/W
R/W
bu s de da t os
A10
DE C
A11
SC
A0
A1
A9
SC
SC
SC
SC
SC
1K x 8 bit s
1K x 8 bit s
1K x 8 bit s
1K x 8 bit s
R/W
R/W
R/W
R/W
R/W
D0
.
.
.
D7
SC
SC
n+k
2n * m bits
2n * N * m * k bits
R/W
R/W
m
m*k
D0
D1
D2
D3
.
.
.
Di
.
.
.
Dj
.
.
.
D2n-1
dn-1 dn-2........ d1
d0
0
0 ...
0
0
0
0 ...
0
1
0
0 ...
1
0
0
0 ...
1
1
.
.
.
--------------------Memoria
2m palabras
---------------------
1 ...
dn -1
dn -2
.
.
.
d1
ldm -1
ldm -2
.
.
Mem or ia
2 m pa la br a s
ld1
ld0
d0
SC
F u n cin
de
seleccin
Si la memoria debe ocupar posiciones consecutivas, las lneas menos significativas del bus de
direcciones se conectarn con las lneas de direcciones locales de la memoria:
ld0
ld1
=
=
d0
d1
.
.
.
ldm-2 =
dm-2
ldm-1 =
dm-1
La funcin de seleccin ser una funcin booleana del bus de direcciones:
SC = fb(dn-1, dn-2,...,d1, d0)
10
d3
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
d2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
d1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
d0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
00
ld2
RAM
ld1
23 = 8
palabbras
ld0
d3
SC
01
11
10
00 0
01 0
11 1
10 1
d2
d1
d3 d2 d0 d3 d2 d1 d3 d1 d0 d3 d2
d0
D00
D01
D02
D03
D04
D05
D06
D07
D08
D09
D10
D11
D12
D13
D14
D15
d3
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
d2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
d1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
d0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
00
ld2
RAM
ld1
23 = 8
palabbras
ld0
d3
SC
01
11
10
00 0
01 1
11 0
10 1
d2
d1
d3
d2
d3
d2
11
d3
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
d2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
d1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
d0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
00
ld2
RAM
ld1
23 = 8
palabbras
ld0
SC
d3
01
11
10
00 1
01 1
11 0
10 0
d2
d1
d3
d0
D00
D01
D02
D03
D04
D05
D06
D07
D08
D09
D10
D11
D12
D13
D14
D15
d3
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
d2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
d1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
d0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
00
ld2
RAM
ld1
23 = 8
palabbras
ld0
SC
d3
01
11
10
00 0
01 0
11 1
10 1
d2
d1
d3
RAM
ld1
23 = 8
pa la bbr a s
da t os
ld0
SC1
SC2
d3
d2
d3
d2
d1
RAM
da t os
d0
2 12 = 4K
pa la bbr a s
SC
d0
pu er t o E /S
22 = 4
pa la bbr a s
da t os
000
RAM
(2K)
SC
7F F
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 decodificacin
parcial, ya que hemos utilizado 2K del espacio disponible para ubicar tan slo 4 palabras. Esto significa
que los 4 registros presentan mltiples direcciones cada uno (exactamente 512):
13
R0
R1
R2
R3
800
801
8o2
803
804
805
806
807
808
809
80A
80B
80C
80D
80D
80F
...
...
...
...
RAM
da t os
A0
A12
2 13 = 8K
pa la bbr a s
SC
A13
A14
A15
A15
A0
A0
RAM
da t os
A12
2 13 = 8K
pa la bbr a s
SC
A12
A13
DE C
A14
A15
N de bits de paridad
N total de bits
4
5
6
7
8
9
12
21
38
71
135
265
Incremento
porcentual
50 %
31,25 %
18,75 %
10,94 %
6,25 %
3,52 %
15
Da t os de en tr a da
Da t os de sa lida
Libr e de er r ores
sim ples
Dir ecciones
Mem or ia
R/W
COMP
CORR
Ejemplo
Supongamos que la longitud de palabra de la memoria es m = 8.
Los datos de m = 8 bits
(d8, d7, d6, d5, d4, d3, d2, d1)
los ampliamos con k = 4 bits de paridad
(C8, C4, C2, C1)
para formar un mensaje de m + k = 12 bits
(m12, m11, m10, m9, m8, m7, m6, m5, m4, m3, m2, m1).
Los bits de paridad Ci ocupan las posiciones en el mensaje correspondientes a las
potencias de 2, es decir la 1, 2, 4 y 8 (de aqu el subndice i).
Con los bits (C8, C4, C2, C1) se codifican todas las posiciones del mensaje (12), es decir:
(C8, C4, C2, C1) = 0 0 0 1 = 1 en decimal para m1, ...
(C8, C4, C2, C1) = 1 1 0 0 = 12 en decimal para m12,
de manera que cuando se produzca un error simple (complementacin de un bit) en el bit mj del
mensaje, (C8, C4, C2, C1) sea igual a j en decimal.
Es decir, Ci deber recoger la paridad de todos los mj que tengan Ci = 1 en su
codificacin, incluido el propio Ci:
d8
d7
d6
d5
d4
d3
d2
d1
datos
16
C8
m8
1
0
0
0
m12
1
1
0
0
m11
1
0
1
1
m10
1
0
1
0
m9
1
0
0
1
d8
d8
d7
d6
d5
d7
d7
d6
d5
m7
0
1
1
1
m6
0
1
1
0
m5
0
1
0
1
d4
d4
d4
d3
d3
d2
C4
m4
0
1
0
0
d2
m3
0
0
1
1
d1
d1
C2
m2
0
0
1
0
C1
m1
0
0
0
1
paridades
mensaje
C8
C4
C2
C1
=
=
=
=
C8
C4
C2
C1
Funcin F:
C8
C4
C2
C1
=
=
=
=
d8d7d6d5
d8d4d3d2
d7d6d4d3d1
d7d5d4d2d1
=
=
=
=
1
1
0
0
0
1
0
1
0
1
1
1
1
0
11
01
=
=
=
=
0
1
1
1
En la lectura se generar de nuevo los bits de paridad con el bloque F a partir de los bits de datos
ledos de memoria. El bloque F responde a la misma funcin lgica que F. Supongamos que en la lectura
se produce un error simple en d5, es decir, escribimos un 1 y hemos ledo un 0, el valor de F ser:
Funcin F:
C8
C4
C2
C1
=
=
=
=
d8d7d6d5
d8d4d3d2
d7d6d4d3d1
d7d5d4d2d1
=
=
=
=
1
1
0
0
000
110
0111
0101
=
=
=
=
1
1
1
0
=
=
=
=
C8
C4
C2
C1
C8
C4
C2
C1
=
=
=
=
0
1
1
1
1
1
1
0
=
=
=
=
1
0
0
1
Direcciones
1001 1101
error
R/W
1000 1101
0111
1
1
1
0
COMP
0
1
1
1
1
0
0
1
0
1
2
3
4
5
6
7
DEC 8
9
10
11
12
13
14
15
Ausencia de error
Corrector
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
d1
d2
d3
d4
d5
d6
d7
d8
18
F = F
C8
C4
C2
C1
=
=
=
=
D8
D7
D6
D5
D4
D3
D2
D1
F
d8 d7 d6 d5
d8 d4 d3 d2
d7 d6 d4 d3 d1
d7 d5 d4 d2 d1
=
=
=
=
=
=
=
=
Corrector
dec12 d8
dec11 d7
dec10 d6
dec9 d5
dec7 d4
dec6 d3
dec5 d2
dec3 d1
1. Memoria entrelazada.
Para aumentar el ancho de banda de una memoria principal se puede descomponer en
mdulos con accesos independientes, de manera que se pueda acceder simultneamente a una
palabra de cada uno de los mdulos.
Me m o ria p rin c ip a l
R. Dir eccion es
R. Dir eccion es
R. Direccion es
Mdu lo M0
Mdu lo M1
Mdu lo Mk
R. Da tos
R. Da tos
R. Da tos
Existen diferentes elementos de diseo en una memoria modular, siendo el orden del
entrelazado de las direcciones uno de los principales. Bsicamente existen dos tipos de
entrelazado para el espacio de direcciones de una memoria: entrelazado de orden superior y
entrelazado de orden inferior.
19
m bits
(n m) bits
Mdulo
Mdulo M0
Mdulo M1
Mdulo Mk
R. Datos
R. Datos
R. Datos
D
E
C
mdulo
00
00
00
00
00
00
00
00
Dir.mdulo
000
001
010
011
100
101
110
111
M0
mdulo
0
1
2
3
4
5
6
7
01
01
01
01
01
01
01
01
Dir.mdulo
000
001
010
011
100
101
110
111
M1
mdulo
8
9
10
11
12
13
14
15
10
10
10
10
10
10
10
10
Dir.mdulo
000
001
010
011
100
101
110
111
M2
mdulo
16
17
18
19
20
21
22
23
11
11
11
11
11
11
11
11
Dir.mdulo
000
001
010
011
100
101
110
111
M3
24
25
26
27
28
29
30
31
20
E n t re la z a d o d e o r d e n i n fe ri o r
Dir eccin den t r o d el m du lo
Mdu lo M0
Mdu lo M1
Md u lo Mk
R. Da t os
R. Da t os
R. Da t os
Mdu lo
D
E
C
Dir.mdulo
000
001
010
011
100
101
110
111
mdulo
00
00
00
00
00
00
00
00
M0
0
4
8
12
16
20
24
28
Dir.mdulo
000
001
010
011
100
101
110
111
mdulo
01
01
01
01
01
01
01
01
M1
1
5
9
13
17
21
25
29
Dir.mdulo
000
001
010
011
100
101
110
111
mdulo
10
10
10
10
10
10
10
10
M2
2
6
10
14
18
22
26
30
Dir.mdulo
000
001
010
011
100
101
110
111
mdulo
11
11
11
11
11
11
11
11
M3
3
7
11
15
19
23
27
31
21
m bit s
Org a n i z a c i n S
Dir eccin den t r o del m du lo
Mdu lo M0
Md u lo M1
Mdu lo Mk
R. Da t os
R. Da t os
R. Da t os
Mdu lo
Con t r ol
MU X
S a lid a
Mdulos
M2m-1
.
.
.
acceso 1
acceso 2
acceso 3
M1
acceso 1
acceso 2
acceso 3
M0
acceso 1
acceso 2
acceso 3
Salida
m
tiempo
22
D
E
C
Mdu lo M0
Dir eccin
Con t r ol
Mdu lo M1
Dir eccin
Con t r ol
Mdu lo Mk
23
CPU
10.000
55%
1000
Diferencia
progresiva
100
Memoria
(DRAM)
10
35%
7%
0.1
1980
1987
2000
La memoria cach es una memoria pequea y rpida 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 diseo del sistema de gestin 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 emprica que se suele cumplir en la
mayora de los programas revela que gastan el 90% de su tiempo de ejecucin sobre slo el 10% de su cdigo. Una
consecuencia de la localidad de referencia es que se puede predecir con razonable precisin 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 dimensin: 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.
Localidad espacial: las palabras prximas en el espacio de memoria a las recientemente referenciadas
tienen una alta probabilidad de ser tambin referenciadas en el futuro cercano. Es decir, que las palabras prximas
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 (lneas)
Memmoria principal
Mp
Para implementar el mecanismo de actualizacin de la cach con los datos con mayor probabilidad de ser
refernciados se divide la memoria principal en bloques de un nmero de bytes (4,8,16 etc.) y la cach en marcos de
bloque o lneas de igual tamao. El bloque ser, pues, la unidad de intercambio de informacin entre la memoria
principal y la cach, mientras que entre la cach y la CPU sigue siendo la palabra. El directorio contiene la
informacin de qu bloques de Mp se encuentran ubicados en Mc
Direccin
de memoria
0
1
2
Mp
Directorio
Mc
Bloque 0
Marco de
Bloque 0
Bloque 1
direccion
Marco de
Bloque m -1
Bloque 2 /K -1
2n -1
Mc <-- CPU(DF)
Recibe la
Direccin Fsica
(DF) de la CPU
no
DF bloque
en la cache?
(fallo)
si (acierto)
Leer el contenido de DF
y llevarlo a la CPU
Asignar un marco de la
cache al bloque de Mp
Mc <-- Mp(bloque)
Cargar el bloque de
Mp en el marco
asignado de la cahe
Llevar el contenido
de la DF a la CPU
Cuando una direccin se presenta en el sistema cach pueden ocurrir dos cosas:
Acierto de cach (hit): el contenido de la direccin se encuentre en un bloque ubicado en una lnea de
la cach.
Fallo de cach (miss): el contenido de la direccin no se encuentre en ningn bloque ubicado en alguna
lnea de la cach.
Si en la ejecucin 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:
Tasa de aciertos:
Ta = Na/ Nr
Tasa de fallos:
Tf = Nf/ Nr
Evidentemente se cumple: Ta = 1 - Tf
2. Elementos de diseo.
A la hora de disear un sistema de memoria cach hay que elegir entre una serie de alternativas para cada uno de los
siguientes elementos de diseo:
Funcin de correspondencia: determina las posibles lneas 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 sustitucin: determina el bloque que hay que desubicar de una lnea de la cach cuando sta
est llena y hay que ubicar un nuevo bloque.
Poltica de escritura: determina la forma de mantener la coherencia entre memoria cach y memoria
principal cuando se realizan modificaciones (escrituras)
Poltica de bsqueda de bloques: determina la causa que desencadena la llevada de un bloque a la cach
(normalmente un fallo en la referencia)
Mc
Mc
B0
B1
B2
B3
B4
B5
B6
B7
B0
B1
B2
B3
B4
B5
B6
B7
Directa
Asociativa
Mc
C0
C1
C2
C3
Asociativa por conjuntos
Bloques de Mp
0,
1,
Marcos de bloque de Mc
0
1
...
m-1
bloque
etiqueta
marco de bloque
s-r
palabra
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 diferenciarn 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 obtencin del contenido de una direccin fsica en cachs con correspondencia directa
podemos resumirlo en el siguiente esquema:
Mp
s+w
etiqueta
marco
palabra
etiqueta
dato
dato
s-r
Memoria Cache
B0
MB0
dato
dato
etiqueta
s-r
dato
dato
Comparador
w
fallo
dato
MBi
dato
acierto
Bj
w
etiqueta
dato
dato
MBm-1
dato
B2s-1
dato
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
lnea
palabra
Memoria cache (RAM)
Comparador
etiqueta
p0
p1
p2
p3
MB0
etiqueta
p04
p5
p6
p7
MB1
etiqueta
p8
p9
p10
p11
MB2
etiqueta
MBm-2
etiqueta
MBm-1
MUX
acierto
fallo
En una operacin de lectura se lee la palabra completa de la RAM, es decir, la lnea y la etiqueta.
Si la etiqueta leda coincide con la procedente de la direccin fsica, significa que la lnea contiene la
palabra de Mp referenciada por dicha direccin fsica: se produce un acierto de cach. En este caso con los w bits de
palabra se selecciona la palabra referenciada dentro de la lnea.
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 podra ser el
siguiente:
etiqueta
lnea
palabra
14
Mp
00
0000 13 57 92 46
0004 00 00 00 00
11 11 11 11
33 33 33 33
FFF8
FFFC
0000
0004
16MB
Mc
64KB
00
FF
16
00
13 57 92 46
24 56 78 99
22 33 44 55
33 33 33 33
16
55 55 55 55
13 67 988 8
24 24 25 26
22 33 44 55
16
MB0
MB1
MB2
MB3
.
.
.
.
.
.
.MB214-1
64KB
FFF8
FFFC 55 55 55 55
0000
0004
FF
13 12 34 56
24 56 78 99
64KB
FFF8
FFFC
Se ha dibujado Mp divididida en zonas consecutivas de tamao 64 KB (igual que el tamao de Mc) para facilitar la
correspondencia de los bloques de Mp y los marcos de bloque de Mc.
2.1.2 Correspondencia asociativa
En la correspondencia asociativa un bloque Bj de Mp se puede ubicar en cualquier marco de bloque de Mc.
Interpretacin de una direccin fsica en correspondencia asociativa:
etiqueta
2s bloques de Mp
2r marcos de bloque de Mc
palabra
w
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 obtencin del contenido de una direccin fsica en cachs con correspondencia asociativa
podemos resumirlo en el siguiente esquema:
Mp
s+w
etiqueta
Memoria Cache
palabra
B0
MB0
w
MBi
s
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 lneas tenga Mc. Las lneas se soportan sobre un array de memoria con longitud de palabra
suficiente para ubicar un bloque, tal como se muestra en la siguiente figura:
etiqueta
palabra
Direccin fsica
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 comparacin simultnea de su contenido con el campo de etiqueta de la direccin fsica.
bloque
etiqueta
s-d
conjunto
palabra
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 lneas de Mc.
El esquema lgico de acceso a una cach de correspondencia asociativa por conjuntos se muestra en la siguiente
figura:
Mp
s+w
etiqueta
conjunto
Memoria Cache
palabra
B0
s-d
w
C0
Bj
w
Comparador
Cv-1
fallo
acierto
Una Mc de correspondencia asociativa por conjuntos de v vas se puede implementar como k mdulos de
correspondencia directa en paralelo cada uno con v lneas. Los conjuntos lo formaran las lneas que ocupan idntica
posicin en cada mdulo:
etiqueta
conjunto
palabra
C0
C1
Comparador
MUX
C0
C1
Comparador
MUX
Si dibujamos Mp divididida en zonas consecutivas de tamao 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 fcilmente parte de un posible contenido de Mc con correspondencia asociativa por conjuntos de dos
vas en un instante determinado para el ejemplo anterior.
10
etiqueta
9
lnea
palabra
13
Mp
000
0000 13 57 92 46
0004 00 00 00 00
11 11 11 11
33 33 33 33
Mc
32KB
7FF8
7FFC
0000
0004
13 67 98 88
24 24 25 26
22 33 44 55
001
001 13 67 98 88
1FF 24 56 78 99
000
001
001
1FF
13 57 92 46
24 24 25 26
C0
C1
C2
32KB
7FF8
7FFC 55 55 55 55
55 55 55 55
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/lnea
etiqueta
ndice
palabra
aumenta la
asociatividad
directa
asociativa
11
2.
3.
4.
Para una memoria asociativa de dos vas basta con aadir 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.
Buffer
de
escritura
Mp
12
Prebsqueda siempre: la primera vez que se referencia el bloque Bi se busca tambin Bi+1
Prebsqueda 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:
(2)
donde:
Tacierto = Ta*Tc, vlido si frente a un fallo, el bloque se lleva a Mp al tiempo que la palabra referenciada del
bloque se lleva (en paralelo) a Mc. Si estas dos acciones se realizan de forma secuencial Tacierto = Tc. ya que
toda referencia implicara un acceso a Mc y por tanto la expresin (1) se transformara en:
Al aumentar el tamao de bloque disminuye la tasa de fallos iniciales (forzosos) porque mejora la localidad
espacial.
Sin embargo con el aumento del tamao de bloque aumenta la penalizacin de fallos, ya que el tiempo de
lectura y transmisin sern mayores si los bloques son mayores.
b) Aumento de la asociatividad
Experimentalmente se comprueba que una cach asociativa por conjuntos de 8 vas es tan eficiente (tasa de
fallos) como una cach completamente asociativa.
Tf
Mc
1K
15%
10%
16
4K
32
64
128
tamao de bloque
Una cach de correspondencia directa de tamao N tiene aproximadamente la misma tasa de fallos que una
asociativa por conjuntos de 2 vas de tamao N/2
Se aade una pequea cach completamente asociativa entre Mc y su camino hacia Mp para contener slo los
bloques descartados (sustituidos) por un fallo (vctimas)
Reducen los fallos de conflicto fundamentalmente en cachs pequeas con correspondencia directa.
Cache de vctima
Mc
Mp
d) Cachs pseudoasociativas
Se trata de cachs de correspondencia directa que con una ligera modificacin se pueden comportar como
asociativas. Para ello se permite que un bloque de Mp se pueda ubicar en dos (pseudoasociativa de 2 vas) marcos
de bloque de Mc, el que le corresponde (por la correspondencia directa) y el que resulta de conmutar el bit ms
significativo de la direccin del bloque, tal como se indica en el siguiente esquema:
etiqueta
marco
palabra
Memoria cache pseudoasociativa
0 X X...........X
conjunto
pseudoasociativo
1 X X...........X
Comparador
MUX
acierto
fallo
Tasa_fallospseudo = Tasa_fallos2vas
Penalizacin_fallospseudo = Penalizacin_fallosdirecta
Tiempo_aciertopseudo = Tiempo_aciertodirecta + Tasa_aciertos_alternativospseudo *2
Tasa_aciertos_alternativospseudo = Tasa_aciertos2vas - Tasa_aciertosdirecta =
(1 - Tasa_fallos2vas)- (1 - Tasa_fallosdirecta) = Tasa_fallosdirecta - Tasa_fallos2vias
Tiempo_acceso_mediopseudo = Tiempo_aciertodirecto + (Tasa_fallosdirecta - Tasa_fallos2vias)*2 +
Tasa_fallos2vas *Penalizacin_fallosdirecta
Ejemplo:
Tamao (cach)
2K
2K
grado asociatividad
1
2
tasa de fallos
0,098
0,076
penalizacin fallo
50
-
Tiempo de acierto
1
-
La prebsqueda 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
Mc
Buffer
de
Prebsqueda
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 prebsqueda
16
Utiliza instrucciones explcitas de prebsqueda del tipo prefetch(dato) que el compilador utiliza para optimizar
los programas despus de realizar un anlisis de sus sentencias.
La prebsqueda se realiza al tiempo que el procesador contina la ejecucin del programa, es decir, la
prebsqueda se hace en paralelo con la ejecucin de las instrucciones.
Los bucles son las construcciones ms apropiadas para que el compilador genere prebsqueda
Ejemplo
Supongamos que en una cach de 8 KB de correspondencia directa y bloques de 16 bytes se ejecuta el
siguiente programa:
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 precisin) y estn dispuestos en
memoria en orden ascendente de sus ndices, es decir:
a[0][0]
a[0][1]
a[0][2]
........
a[0][99]
a[1][0]
a[1][1]
a[1][2]
........
a[1][99]
a[2][0]
a[2][1]
a[2][2]
........
a[2][99]
b[0][0]
b[0][1]
b[0][2]
.........
b[0][99]
b[1][0]
b[1][1]
b[1][2]
.........
b[1][99]
b[2][0]
b[2][1]
b[2][2]
.........
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 producirn 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 nmero
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
estn almacenados sus elementos. En cambio se beneficiar dos veces de la localidad temporal ya que se accede a
los mismos elementos para cada iteracin de i. Adems, cada iteracin de j usa los mismos valores de b[ ][ ] que la
iteracin anterior. Ignorando los posibles fallos por conflicto, el nmero de fallos en el acceso a b sern 101, es
decir, 1 para b[0][0] y 100 para b[1][0] hasta b[100][0]. En la 1 iteracin se producirn 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
Mc
iteraciones
a[0][0]
a[0][1]
b[0][0]
b[0][1]
b[1][0]
b[1][1]
i= 0, j= 0
a[0][0] ,b[0][0],b[1][0]
b[2][0]
b[2][1]
i= 0, j= 1
a[0][1] ,b[1][0],b[2][0]
a[0][2]
a[0][3]
b[3][0]
b[3][1]
i= 0, j= 2
a[0][2] ,b[2][0],b[3][0]
a[0][98]
a[0][99]
b[99][0]
b[99][1]
i= 0, j= 98
a[0][98] ,b[98][0],b[99][0]
b[100][0]
b[100][1]
i= 0, j= 99
a[0][99] ,b[99][0],b[100][0]
i= 1, j= 0
a[2][98]
a[2][99]
i= 2, j= 98
a[1][0] ,b[0][0],b[1][0]
a[1][0] ,b[0][0],b[1][0]
Se ha descompuesto el bucle en dos, el primero (iteracin para i = 0) prebusca a partir de b[6][0] y a[0][6]:
18
Mc
prebusqueda
a[0][6]
b[6][0]
a[0][7]
b[0][7]
fallos
a[0][0]
a[0][1]
a[0][2]
a[0][3]
a[0][4]
a[0][5]
3 fallos
a[0][99]
b[0][0]
b[0][1]
iteraciones
b[1][0]
b[1][1]
i= 0, j= 0
b[2][0]
b[2][1]
i= 0, j= 1
b[3][0]
b[3][1]
i= 0, j= 2
b[4][0]
b[4][1]
i= 0, j= 3
b[5][0]
b[5][1]
i= 0, j= 4
1 + 5 = 6 fallos
b[99][0]
i= 99 j= 99
Fusin de arrays
Se sustituyen varios arrays de igual tamao por un nico array de elementos estructurados. La
transformacin aumenta la localidad espacial si el programa referencia localmente las componentes de
igual ndice de los aarrays originales.
Ejemplo:
programa original
int val[SIZE];
int key [SIZE];
programa transformado
struct merge {
int val;
int key;
};
struct merge array_fundido[SIZE]
19
val
array_fundido
key
La transformacin mejora la localidad espacial de los elementos de los dos arrays originales.
Fusin de bucles
programa original
for (i = 0; i < 100; i = i + 1)
for (j = 0; j < 100; j = j + 1)
a[i][j] = 2/b[i][j] *c[i][j];
programa transformado
for (i = 0; i < 100; i = i + 1)
for (j = 0; j < 100; j = j + 1)
a[i][j] = 2/b[i][j] *c[i][j];
d[i][j] = a[i][j] + c[i][j];
La transformacin 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
programa original
for (j = 0; j < 100; j = j + 1)
for (i = 0; i < 5000; i = i + 1)
x[i][j] = 2*x[i][j];
programa transformado
for (i = 0; i < 100; i = i + 1)
for (j = 0; j < 5000; j = j + 1)
x[i][j] = 2*x[i][j];
20
bucle original
iteracin
iteracin 101
bucle intercambiado
x[0][0]
x[0][1]
iteracin 1
iteracin 2
x[0][2]
x[0][4999]
iteracin
iteracin 102
x[1][0]
x[1][1]
iteracin 5001
iteracin 5002
x[1][2]
x[1][4999]
iteracin 100
x[99][0]
iteracin 495001
iteracin 200
x[99][1]
iteracin 495002
x[99][2]
x[99][4999]
iteracin 500000
iteracin 500000
Descomposicin en bloques
21
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:
for (jj = 0; jj < N; jj = jj + B)
for (kk = 0; kk < N; kk = kk + B)
for (i = 0; i < N; i = i + 1)
for (j = jj; j < min(jj + B, N); j = j + 1)
{ r = 0;
for (k = kk; k < min(kk + B,N); k = k + 1){
r = r + Y[i][k] *Z[k][j];};
X[i][j] = X[i][j] +r;
};
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:
X00
X01
X02
Y00
Y01
Y02
Z00
Z01
Z02
X10
X11
X12
Y10
Y11
Y12
Z10
Z11
Z12
Z20
Z21
Z22
22
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 lnea de Mc a la que pertenece la posicin
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 an el contenido del buffer
no se ha escrito en Mp
Este problema de inconsistencia se puede resolver de dos maneras:
1) Retrasando el servicio del fallo de lectura producido por (3) hasta que el buffer est vaco (todo su
contenido se haya reflejado en Mp). Esta solucin penaliza bastante los fallos de lectura, pues los datos empricos
demuestran que la espera sistemtica a que el buffer se vace 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 ms frecuente que la
escritura) adoptando la segunda alternativa.
2) Incorporar al proceso asociado al fallo de lectura producido por (3) la comprobacin de si el buffer
contiene la posicin 512, y continuar si el resultado es falso.
b) Utilizacin de sub-bloques dentro de un bloque
La utilizacin de bloques de gran tamao no solo disminuyen la tasa de fallos sino que reduce el espacio de
memoria cach dedicado al directorio (almacenamiento de las etiquetas de los bloques residentes en una lnea). Sin
embargo, bloques grandes aumentan la penalizacin por fallos debido al aumento de la cantidad de datos que se
deben transferir en el servicio de cada fallo. Una forma de disminuir la penalizacin por fallos sin modificar los
otros factores positivos consiste en dividir el bloque en sub-bloques y asociar un bit de validez a cada sub-bloque.
De esta forma, cuando se produzca un fallo, no ser necesario actualizar ms que el sub-bloque que contiene la
palabra referenciada. Esta alternativa hace que no slo haya que comprobar si el bloque est en la cach
comparando etiquetas, sino que habr que asegurar que el sub-bloque que contiene la palabra referenciada es un
sub-bloque vlido, es decir, con datos actualizados.
Tambin podemos ver esta alternativa de diseo como una forma de economizar informacin 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 actualizacin cuando el grupo est en Mc. En la siguiente figura se muestra un esquema de
esta alternativa de diseo:
23
etiqueta
lnea
palabra
etiqueta
subbloque1
subbloque2
subloque3
subloque4
Comparado
Mc (L1)
Mc (L2)
Mp
24
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
Tasa_fallos_localN1 = Tasa_fallos_globalN1 = 40/1000 = 0.04 (4%)
Tasa_fallos_localN2 = 20/40 = 0.5 (50%)
Tasa_fallos_globalN2 = 20/1000 = 0.02 (2%)
Tambin hace posible su incorporacin al chip de la CPU, eliminando el conexionado externo y por tanto
el tiempo de acceso desde la CPU
25
1. Gestin 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 deban
realizar con la memoria. La memoria virtual automatiza la gestin entre los dos niveles
principales de la jerarqua de memoria: memoria principal y disco. Antes de entrar en los
mecanismos especficos de la memoria virtual revisaremos una serie de funciones que
deben incorporarse en la gestin de memoria.
Solapamiento (overlay)
El tamao de la memoria principal disponible en los computadores ha aumentado
de forma sostenida desde sus orgenes. Sin embargo, el tamao de los programas ha
crecido ms rpidamente, por lo que la necesidad de ejecutar programas que no caban en
la memoria principal ha sido una constante en la historia de los computadores. Una forma
de superar esta limitacin es el uso de la tcnica de solapamiento (overlay).
En primer lugar, con la tcnica de solapamiento se divide en mdulos el programa
que no cabe completo en la memoria principal. Despus hay que situar en los lugares
adecuados de cada mdulo las instrucciones de E/S necesarias para cargar en memoria
principal aquellos mdulos residentes en el disco cuyas instrucciones deban ejecutarse o
cuyos datos sean referenciados. Es decir, el propio programa se encarga de cargar
dinmicamente aquellos mdulos que son referenciados.
Con este mecanismo se puede superar la limitacin de la memoria principal, sin
embargo tiene el inconveniente de hacer depender el programa del tamao de la memoria
disponible en el computador, con lo que variaciones en su configuracin obligan a revisar
la divisin modular del programa.
Memoria principal
Disco
M1
M2
M1
M3
M4
M2
e/s
Reubicacin
En sistemas con multiprogramacin se necesita que varios programas residan
simultneamente en memoria. El tiempo de CPU se va distribuyendo entre ellos de
acuerdo a una poltica de prioridades determinada. La ubicacin en memoria de los
programas no se conoce en tiempo de compilacin, por lo que no se pueden generar
direcciones absolutas. Para conseguir una asignacin dinmica de memoria en tiempo de
ejecucin se utilizan registros de reubicacin. La direccin efectiva se obtiene sumando a la
direccin generada por el compilador el contenido del registro de reubicacin asignado al
programa.
Paginacin
La paginacin tambin surgi de la necesidad de mantener ms de un programa
residente en memoria cuando la capacidad de sta es inferior a la suma de los tamaos
de los programas. Se trata de un mecanismo automtico de solapamiento mltiple que
practica el Sistema Operativo para hacer posible la multiprogramacin. El espacio de
memoria principal se divide en bloques de tamao fijo denominados pginas. Los
programas se dividen tambin en pginas y residen en el disco. El Sistema Operativo se
encarga de asignar pginas fsicas a los programas en ejecucin (multiprogramacin). De
esta forma el tiempo de CPU puede distribuirse entre los programas residentes.
Proteccin
Un papel importante de la gestin de memoria es la proteccin. Si varios programas
comparten la memoria principal debe asegurarse que ninguno de ellos pueda modificar el
espacio de memoria de los dems. Como casi todos los lenguajes permiten el uso de
punteros dinmicos, los test en tiempo de compilacin no son suficientes para garantizar
la proteccin. Esta debe mantenerla en tiempo de ejecucin el sistema de gestin de
memoria (MMU)
Comparticin
Esta funcin parece estar en contradiccin con la anterior. Sin embargo, con
frecuencia los programas de un sistema multiprogramado deben poder compartir y
actualizar informacin, por ejemplo, un sistema de bases de datos. Adems, 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.
En un computador con memoria virtual (MV) las direcciones de los programas
(generadas por la CPU) hacen referencia a un espacio mayor que el espacio fsico realmente
disponible en la memoria principal o memoria fsica (MF).
Los programas operan virtualmente con un tamao fsico de memoria principal
mucho mayor que el realmente disponible. En estas mquinas hay que diferenciar, pues,
entre el espacio de direcciones virtuales generado por la CPU y el espacio de direcciones
fsicas o reales existentes en memoria principal y determinado por el nmero de lneas del
bus de direcciones.
El espacio virtual se soporta sobre un disco con la ayuda de un mecanismo de
traduccin que genera la direccin fsica de memoria principal a partir de la virtual. En la
siguiente figura hemos representado el mecanismo de traduccin de direcciones virtuales
(DV) a direcciones fsicas (DF).
CPU
Nmero de Pgina Virtual (NPV)
v
Memoria virtual
Pgina 0
Pgina 1
Sumador
Pgina 2
Tabla de Pginas
Pgina 3
Pgina 4
control pv 0
control pv 1
control pv 2
pag. f sica 1
control pv v-2
pag. f sica 0
control pv v-1
pag. en disco
ACIERTO
Pgina 5
2v
w
Memoria fsica
pginas
FALLO
Pgina 0
Pgina 1
Pgina 2
pv v-1
2w
Pgina2
v-3
Pgina2
v-2
Pgina2 v-1
pginas
Memoria de Disco
Pgina f-2
Pgina f-1
Tanto la memoria principal como la memoria del disco se dividen en pginas de igual
tamao. El nmero de pginas de la memoria virtual en general es mayor que el nmero de
pginas disponibles de la memoria fsica. Por este motivo, en cada momento slo las copias
de un conjunto de pginas virtuales del programa residen en la memoria fsica. 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
ocurra con la memoria cache.
Los bits de una DV se consideran divididos en dos campos, el nmero de pgina
virtual (NPV) los ms significativos, y el desplazamiento dentro de la pgina (DP), los menos
significativos. El nmero de bits del campo DP lo determina el tamao de pgina (n de bits
de DP = log2 tamao de pgina). El nmero de bits del campo NPV lo determina el nmero de
pginas virtuales (n de bits de NPV = log2 n de pginas virtuales). Los bits de una DF se
consideran divididos tambin en dos campos, el nmero de pgina fsica (NPF) los ms
significativos, y el desplazamiento dentro de la pgina (DP), los menos significativos. El
nmero de bits del campo DP de una DF es el mismo que el de una DV, puesto que las
pginas tienen igual tamao en MV y MF. El nmero de bits del campo NPF lo determina el
nmero de pginas fsicas de MF (n de bits de NPF = log2 n de pginas fsicas).
Las DVs generadas por la CPU se traducen a DFs con la ayuda de una Tabla de
Pginas (TP). Esta tabla contiene tantas entradas como pginas existen en la MV, y la
posicin en la tabla de una entrada correspondiente a una pgina virtual concreta coincide
con su NPV. Cada entrada contiene un primer campo de bits de control, de los que por el
3
momento haremos referencia tan slo a uno, el bit de presencia (P). Si este bit est activo
(por ejemplo a 1) significa que la pgina 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 pgina virtual no
est en la MF, sino en el disco. En este caso el segundo campo de la entrada apunta a la
direccin del disco donde se encuentra la pgina virtual. Como en un momento se pueden
estar ejecutando ms de un programa (multiprogramacin o multiusuario) existirn ms 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 pginas (RBTP) asociado a cada programa.
Para traducir una DV en DF se busca en la correspondiente entrada de la TP. Si el
bit P de esta entrada vale 1, se dice que ha ocurrido un acierto de pgina, y se lee el
contenido del segundo campo que en los aciertos constituye el NPF en la memoria principal.
La DF completa se obtiene concatenando los bits de NPF con los de DP de la DV. Si el bit P
de la entrada de la TP vale 0, se dice que ha ocurrido un fallo de pgina, lo que significa que
la pgina virtual donde se ubica la DV que se est traduciendo, no se encuentra en MF. En
este caso el fallo de pgina se sirve buscado la pgina en el disco, ubicndola en MF y
actualizando la correspondiente entrada de la TP.
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 pginas de 29 = 512 bytes, eso significa que se necesitan tablas
de pginas de 222 entradas por proceso. La cantidad de memoria dedicada slo a tablas de
pginas podra ser inaceptablemente alta.
Para solucionar este problema, la mayora de los esquemas de memoria virtual
almacenan las tablas de pginas en la propia memoria virtual, en lugar de utilizar la
memoria fsica. Esto significa que la tabla de pginas tambin est sujeta a paginacin,
igual que el resto de los programas. Cuando un programa se est ejecutando, al menos una
Nivel 1
Direccin Virtual
Nivel 2
Nivel 3
Despla. Pgina
RBP
Tabla Paginas N1
+
Entrada TP
Tabla Paginas N2
Entrada TP
Tabla Paginas N3
Entrada TP
Direccin Fsica
Nmero de pgina fsica
Despla. Pgina
tablas,
tcnica de dispersin da lugar a cadenas usualmente cortas, con uno o dos elementos. Esta
alternativa de TP se utiliza en el PowerPC.
Direccin Virtual
N Pgina Virtual
Desplazamiento
Tabla de Dispersin
Tabla de Pginas
Funcin de
Dispersin
NPV
NPF
Enlace
NPF
Direccin Fsica
N Pgina Fsica
Desplazamiento
RWX
NPV
DP
RWX
NPV
Memoria
Asociativa
NPF
Fallo de pgina
Violacin de acceso
NPF
DP
Direccin Fsica
DP
TLB
NPV
NPF
Fallo de pgina
N PF
DP
Memoria cache
etiqueta
lnea
palabra
Comparador
etiqueta
datos
MUX
acierto
fallo
Esto significa que el tamao de la cache viene impuesto por el tamao de la pgina y
el grado de asociatividad. Por ejemplo, si tenemos un tamao de pgina de 1K, el DP tendr
10 bits. Si el nmero de palabras por bloque es 8 (3 bits de palabra) quedarn 7 bits para el
campo de conjunto de la direccin fsica de la cache. Si la asociatividad fuese 1
(correspondencia directa) con esos 7 bits podramos distinguir tan slo entre 128 marcos de
bloque o lneas de la cache, lo que impondra un tamao de cache de 128 x 8 = 1024 = 1K.
8
Para aumentar este tamao tendramos que aumentar la asociatividad. Por ejemplo,
si el grado de asociatividad es 2, el tamao de la cache sera de 2K. Cuando aumenta el
grado de asociatividad, tambin 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 vas)
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 traduccin. Sin
embargo, esta alternativa tiene dos problemas fundamentales. El primero surge en las
conmutaciones de procesos. Cuando se cambia de proceso, la misma direccin virtual de
cada proceso referencia diferentes direcciones fsicas, 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
direccin fsica (aliasing). Esto puede producir dos copias del mismo dato en una cache
virtual, lo que ocasiona problemas de inconsistencia si hay escrituras.
3.5 Mltiples espacios virtuales
Una forma de acelerar la conmutacin de procesos evitando tener que borrar la TP
(que puede estar en TLB o memoria invertida) es extender las entradas con un campo que
contiene el identificador de proceso (PID).
PID
RWX
N PV
DP
(TLB)
RWX
PID
NPV
NPF
Fallo de pgina
=
Violacin de acceso
N PF
DP
Direccin Fsica
Aleatoria
9
Elige una pgina aleatoriamente, sin mirar el nmero de referencias o el tiempo que la
pgina lleva en memoria principal. En general esta poltica 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 poltica posible: sustituir la pgina que vaya a tardar ms tiempo en
ser referenciada en el futuro (Belady). Aunque esta poltica tiene el mnimo nmero
posible de fallos de pgina (de aqu el nombre de poltica MIN), no se puede llevar a la
prctica en tiempo real, y se utiliza como una referencia terica para medir la eficiencia
de otras polticas en entornos experimentales.
10
Tipo acceso
RWX
Direccin Virtual
Nmero Segmento(NS)
Desplaz. (DP)
P = bit de presencia
L = Longitud del segmento
Desplaz.(DP)
Direccin Fsica
Tipo acceso
RWX
Direccin Virtual
N Segmento
N Pgina
DP
Tabla de segmentos
Reg. Tabla Segmentos
P NPF
P = bit de presencia
L = Longitud del segmento
NPF
DP
Direccin Fsica
12
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 slo de lectura.
Para los segmentos de programa, el atributo de acceso especifica si se trata de acceso de
lectura/ejecucin o de slo lectura.
El mecanismo de traduccin de direccin para la segmentacin hace corresponder
una direccin virtual con una direccin lineal. Una direccin virtual consta de un
desplazamiento de 32 bits y un selector de segmento de 16 bits.
32
Desplazamiento
Direccin
Virtual
15
Nmero de segmento
TI RPL
Selector de segmento
Base(8bits)
Tipo
Base(8 bits)
Lmite (16 bits)
Descriptor
de
segmento
Base ( 32 bits): direccin de comienzo del segmento dentro del espacio lineal de
direcciones
Lmite ( 20 bits): tamao 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 lmite 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 cdigo)
con 4 Mbytes de capacidad y con su propia tabla de pginas. La flexibilidad del sistema de
gestin de memoria permite utilizar un directorio de pginas para todos los procesos, un
directorio de pginas para cada proceso o una combinacin de ambos. El directorio de
pginas del proceso en curso est siempre en memoria principal. Las tablas de pginas
pueden estar en memoria virtual.
La siguiente figura ilustra la combinacin de los mecanismos de segmentacin y
paginacin en la que no aparece el TLB ni la memoria cache. El Pentium II permite
seleccionar dos tamaos de pginas de 4 KBytes de 4 MBytes. Cuando se utilizan pginas
de 4 MBytes, hay un slo nivel en la tabla de pginas. El uso de pginas de 4 MBytes
reduce las necesidades de memoria. Con pginas de 4 KBytes, una memoria principal de 4
GBytes necesita del orden de 4 MBytes de memoria slo para la tabla de pginas. Con
pginas de 4 MBytes, una nica tabla, de 4 KBytes de longitud, es suficiente para la gestin
de las pginas.
Segmento
Desplazamiento
Direccin lineal
Dir
Pgina
Desplaz.
Tabla de
segmentos
Directorio
de pginas
Segmentacin
Paginacin
Tabla de
pginas
Direccin
fsica
Memoria
principal
15
Dispositivos de presentacin de datos. Son dispositivos con los que interactuan los usuarios, transportando
datos entre stos y la mquina, por ejemplo, ratn, teclado, pantalla, impresora, etc.
b) Dispositivos de almacenamiento de datos. Son dispositivos que forman parte de la jerarqua de memoria
del computador. Interactan de forma autnoma con la mquina, por ejemplo, discos magnticos y cintas
magnticas.
c) Dispositivos de comunicacin con otros procesadores. Permiten la comunicacin con procesadores
remotos a travs de redes, por ejemplo, las redes de rea local o global.
d) Dispositivos de adquisicin de datos. Permiten la comunicacin con sensores y actuadores que operan de
forma autnoma en el entorno del computador. Se utilizan en sistemas de control automtico de procesos
por computador y suelen incorporar conversores de seales A/D y D/A.
25 C
Cinta
CRT
Teclado
Disco
Impresora
A/D-D/A
E/S
Memoria
CPU
Los dispositivos de transporte y presentacin 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 tpicas para diferentes dispositivos:
Dispositivos
Sensores
Teclado
Lnea de comunicaciones
Pantalla (CRT)
Impresora de lnea
Cinta (cartridge)
Disco
Cinta
Velocidad
1 Bps 1 KBps
10 Bps
30 Bps 200 KBps
2 KBps
1 5 KBps
0.5 2 MBps
4.5 MBps
3-6 MBps
Velocidad
1 MBps
100 MBps
64 KBps
Retardo mximo
1 - 5 segundos
20 milisegundos
50 - 300 milisegundos
Los grficos requieren una gran capacidad de procesamiento de datos, hasta el punto que se han
diseado procesadores de propsito especial para manejar sofisticadas representaciones grficas. El
procesamiento de las imgenes grficas puede requerir de 5 a 10 microprocesadores de alta velocidad.
El problema del vdeo es simplemente la animacin de los problemas grficos, ya que debe crearse
una nueva imagen cada 1/30 de segundo (33 milisegundos).
Los dispositivos perifricos que pueden conectarse a un computador para realizar entrada y salida de
informacin presentan, pues, las siguientes caractersticas:
Tienen formas de funcionamiento muy diferentes entre s, debido a las diferentes funciones que
realizan y a los principios fsicos en los que se basan.
La velocidad de transferencia de datos es tambin 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 bsicas comunes a todo dispositivo de E/S:
La identificacin del dispositivo se realiza con un decodicador de direcciones. El envo y la recepcin de datos
tiene lugar a travs de registros de entrada y salida de datos. Los circuitos de sincronizacin se manipulan por
medio de registros de estado y control. El siguiente esquema representa grficamente estas funciones:
lneas de control
lneas de datos
lneas de direcciones
envio/
recepcin
Registros de datos
(entrada y/o salida)
Decodificador
de direcciones
Registros de
estado y control
identificacin
Circuitos de
sincronizacin
Dispositivo perifrico
Las tres funciones bsicas se pueden realizar a travs del bus del sistema que conecta la memoria y la CPU, o
bien se puede utilizar un bus especfico para las operaciones de E/S. Estas alternativas se traducen en dos
formas de organizacin de los espacios de direcciones:
Espacios de direcciones unificados
Las unidades de E/S se ubican en el espacio nico de direcciones como si fuesen elementos de memoria. A
cada unidad de E/S se le asigna un conjunto de direcciones (suficiente para diferenciar todos sus registros
internos). La interaccin entre CPU y unidad de E/S se realiza a travs de instrucciones de referencia a
memoria. El bus del sistema es nico.
bus del sistema
CPU
Memoria
Unidad
de E/S 1
Unidad
de E/S n
CPU
Memoria
Unidad
de E/S 1
Unidad
de E/S n
CPU
Memoria
bus de E/S
Unidad
de E/S 1
Unidad
de E/S 2
Unidad
de E/S n
/ AC <-- #1
/ M[517] <-- <AC>
/ AC <-- M[517]
/ Bifurca si N=0
/ AC <-- M[516]
8259
82
59
Mdulo de E/S
DISCO
Controlador de dispositivo
Lgica de
interfaz con
el dispositivo
externo
Registro de datos
Registro de estado/control
Lneas de
direccin
Lneas
de control
Estado
Control
Datos
Lgica
de E/S
Lgica de
interfaz con
el dispositivo
externo
Estado
Control
Un mdulo sencillo de E/S capaz de realizar la interfaz de un computador con una impresora podra
tener la estructura mostrada en la siguiente figura. El decodificador hace que el mdulo 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 direccin
asociada porque el primero slo se lee (RD*) y el segundo slo se escribe (WR*) desde el bus.
D E COD IFICAD OR
A7
IN TERF AZ D E IMP R ES OR A
S EL*
...
CLK
D ATOS
A1
A0
OE*
CP U
RD *
ES TAD O
CLK
WR*
CON TR OL
B . D ATOS
Control
(desde el mdulo de E/S)
Lgica
de
control
Datos
(desde y hacia el mdulo de E/S)
Buffer
Transductor
Controlador de dispositivo
Datos
(desde y hacia el exterior)
La conexin con el mdulo de E/S se realiza a travs de seales de control, estado y datos. Es la parte
del controlador que omologa su comportamiento singular al esquema general de gestin de la E/S. Las seales
de control determinan la funcin que debe realizar el dispositivo. La lgica de control asociada al dispositivo
controla su operacin en respuesta a las indicaciones del mdulo de E/S. El transductor convierte las seales
elctricas asociadas a los datos a otra forma de energa. Adems, suele existir un buffer asociado al transductor
para almacenar temporalmente el dato que se transfiere entre el mdulo de E/S y el dispositivo. En el tema 8
estudiaremos una serie de dispositivos perifricos particulares y sus controladores asociados.
2.3 Comunicacin entre el mdulo de E/S y el controlador de dispositivo perifrico
Analizaremos en este apartado el dialogo de seales que de forma general tiene lugar entre el mdulo de
E/S y el controlador de dispositivo en una transmisin de datos.
Salida
En el caso de un dispositivo de salida (o de e/s en operacin de salida) las lneas bsicas que intervienen
son las del bus de datos y dos de control: dato vlido y dato aceptado. La primera indica al dispositivo la
validez del dato presente en el bus de datos, y es activada por el mdulo de E/S cuando ha estabilizado el bus
de datos con el valor del dato a transmitir. La segunda la activa el dispositivo perifrico 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 grfica la evolucin temporal de las seales en una operacin de
salida
Salida
bus de datos
Mdulo
de E/S
dato vlido
Dispositivo
perifrico
dato aceptado
bus de datos
dato vlido
dato aceptado
La anterior secuencia de acciones que realizan el mdulo de E/S y el dispositivo perifrico en una operacin
de salida podemos tambin verlas en el siguiente diagrama:
Mdulo de E/S
Perifrico
"1" = capacitacin
"0" = descapacitacin
"Z" = alta impedancia
Entrada
En el caso de un dispositivo de entrada (o de e/s en operacin de entrada) las lneas bsicas que intervienen
son las del bus de datos y dos de control: peticin de dato y dato aceptado. La primera solicita al dispositivo
un dato de entrada, y es activada por el mdulo de E/S. La segunda la activa el dispositivo perifrico cuando
ha generado el dato y su valor es estable en el bus de datos. Con la activacin de esta seal el mdulo 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 grfica la evolucin temporal de las seales en una operacin de entrada
Entrada
bus de datos
Mdulo
de E/S
dato vlido
Dispositivo
perifrico
peticin dato
peticin dato
bus de datos
dato valido
La anterior secuencia de acciones que realizan el mdulo de E/S y el dispositivo perifrico en una operacin
de entrada podemos tambin verlas en el siguiente diagrama:
Mdulo de E/S
Perifrico
"1" = capacitacin
"0" = descapacitacin
"Z" = alta impedancia
no
Orden de
lectura al
mdulo de
CPU E/S
Leer el estado
del mdulo
E/S CPU
Orden de
lectura al
mdulo de
Leer el estado
del mdulo
estado indica
orden realizada?
estado indica
orden realizada?
CPU E/S
Ejecutar otra tarea
Interrupcin
E/S CPU
no
Error
si
si
Leer el dato
del mdulo
de E/S
Escribir el
dato en
memoria
E/S CPU
Leer el dato
del mdulo
de E/S
CPU Memoria
no
Escribir el
dato en
memoria
E/S CPU
CPU Memoria
no
final?
final?
si
E/S Programada
si
Los dos ltimos inconvenientes podran paliarse en parte limitando el tiempo de espera, como se muestra
en el siguiente organigrama:
Orden de
lectura al
mdulo de
CPU E/S
Leer el estado
del mdulo
E/S CPU
no
estado indica
orden realizada?
no
lmite de tiempo?
si
Leer el dato
del mdulo
de E/S
Escribir el
dato en
memoria
E/S CPU
CPU Memoria
Otras
operaciones
de E/S
no
final?
si
10
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 llegarn 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
Mdulo
de
E/S
Dispositivo
perifrico
En cambio, la E/S paralela se utiliza para conectar mdulos de E/S que se encuentran relativamente
cerca del dispositivo perifrico. Utiliza un conjunto de lneas por las que se transmiten simultneamente (en
paralelo) los bits del mensaje
Mdulo
de
E/S
Dispositivo
perifrico
11
R. desplazamiento (E)
10110010
0 0
1 0
R. desplazamiento (R)
10110010
reloj
emisor
reloj
receptor
En la siguiente figura se muestra que el reloj local del receptor muestrea la lnea de transmisin 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 perodo),
como se muestra en la siguiente figura, a partir del cuarto intervalo bit la seal ser muestreada incorrectamente
en el receptor.
12
R. desplazamiento (R)
10100100
reloj
receptor
Codificacin
por nivel
Codificacin
Manchester
Reloj
decodificado
E/S paralela
Ejemplo de mdulo de E/S paralelo: VIA (Versatil Interface Adapter)
13
Tema 9: Interrupciones
1. E/S por interrupcin: gestin de interrupciones
2. Tipos de sistemas de interrupciones: prioridades
3. Enmascaramiento de interrupciones.
4. Anidamiento de interrupciones
5. Ejemplos
seal de interrupcin
lnea de interrupcin
.In
Rutina de tratamiento
i1
i2
.
.
im
Podemos, pues, ver una interrupcin como un salto a subrutina (rutina de tratamiento) ocasionado por una
seal externa, y no por una instruccin del programa. De esta forma se pueden eliminar los tiempos muertos de
consulta de la E/S programada
La implementacin de un sistema de interrupciones implica introducir una fase de consulta de las lneas de
interrupcin al final de la ejecucin de cada instruccin. En un procesador sin sistema de interrupciones, se podra
conseguir un efecto similar introduciendo una instruccin de consulta y la correspondiente de salto sobre el valor de
la consulta, detrs de cada instruccin natural del programa. De esta forma se garantizara 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 sera el recargo introducido por la ejecucin de las parejas de instrucciones de consulta y salto
introducidas detrs de cada instruccin til del programa. Sera algo as como una E/S programada en la que en lugar
de preguntar en el mismo punto del programa por el estado del perifrico, se replica la consulta por todo el programa,
intercalndose con la ejecucin de las instrucciones tiles. Pues bien, un sistema de interrupciones podemos verlo
como la integracin en hardware del supuesto software anterior, es decir, la integracin de la consulta y posible salto
dentro de la ejecucin de cada instruccin del repertorio.
El mecanismo de interrupcin 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
ejecucin. En el siguiente esquema se detallan las fases que tienen lugar en la atencin a una interrupcin producida
por algn dispositivo perifrico:
peticin de interrupcin
1
programa
programa
5
rutina de tratamiento
6
(1) El programa en ejecucin (CPU) activa el sistema de interrupciones utilizando instrucciones que operan (ponen a
1 y a 0) sobre el bit de capacitacin de las interrupciones I del registro de estado (RE):
STI
I <--1;
CLI I <-- 0
bit de interrupcin
(2) Se produce la peticin de interrupcin por parte de algn dispositivo perifrico en un instante de tiempo
impredecible para la CPU.
CPU
PC
seal de interrupcin
RE
CPU
Memoria
PC
SP
PC
RE
RE
(5) La CPU obtiene la direccin de la rutina de tratamiento a partir del vector de interrupcin (VI), que usualmente se
ubica en memoria.
CPU
Memoria
PC
vector de interrupcin
direccin r.t.
RE
(6) La CPU descapacita las interrupciones (I = 0) para que durante la ejecucin de la primera instruccin de la rutina
de tratamiento no se vuelva a detectar la misma interrupcin y provoque un bucle infinito.
CPU
PC
RE
(8) Finaliza la rutina de tratamiento con la ejecucin de la instruccin de retorno de interrupcin (RTI), que restaura
automticamente el estado de la CPU desde la pila y vuelve al programa interrumpido:
CPU
Memoria
PC
PC
1
RE
RE
SP
(9) La CPU contina la ejecucin del programa interrumpido, quedando las interrupciones capacitadas
automticamente al recuperarse el valor I = 1 del RE.
Interrupciones hardware
Internas: producidas por la CPU
divisin por cero
desbordamiento
instruccin ilegal
direccin ilegal
logaritmo de cero
raz cuadrada de negativos
etc.
Externas: producidas por los dispositivos de E/S
vectorizadas
no vectorizadas
Interrupciones autovectorizadas: el vector de interrupcin es fijo, una posicin de memoria asociada a la lnea de
interrupcin.
Memoria
Tabla de vectores de Interrupcin
d.r.t. interrupcin
d.r.t. interrupcin
d.r.t. interrupcin
d.r.t. interrupcin
d.r.t. interrupcin
Autovectorizadas
vector de interrupcin
Vectorizadas
d.r.t. interrupcin N-1
d.r.t. interrupcin N
CPU
E/S 1
INT
E/S 2
estado
control
INT
E/S n
estado
control
INT
estado
control
La OR-cableada en la lnea de interrupcin INT se realiza normalmente con tecnologa de transistores con
colector abierto. Por ello normalmente la seal activa de interrupcin es en baja.
+5Vcc
INT
E/S 1
INT
E/S 2
estado
INT
E/S n
estado
INT
estado
La rutina general de tratamiento asociada a la lnea de interrupcin comienza su ejecucin identificando por
encuesta el perifrico causante de la interrupcin, para bifurcar despus a la rutina de tratamiento especfica de dicho
perifrico, en donde se realiza la operacin de E/S propiamente dicha:
Programa
INT
activo
Eliminar fuente
de interrupcin
interrupcin
Leer estado de E/S n
RTI
INT
activo
RTI
Eliminar fuente
de interrupcin
RTI
INT
bus de datos
lnea de reconocimiento de interrupcin
RINT
vector
CPU
E/S
INT1
E/S
estado
E/S
estado
INTn
estado
INT2
control
control
control
prioridad
La lgica interna del paso de la seal de reconocimiento por encadenamiento (daisy chain) para cada mdulo se
representa en la siguiente figura:
INT
CPU
vector INT
INT
RE
RINT
2.3 Prioridades
Cuando dos o ms dispositivos de E/S generan una peticin de interrupcin, el sistema de prioridades
determina la interrupcin 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 lnea. Es decir, se establece por software.
Interrupciones vectorizadas: la prioridad la determina el orden de proximidad a la CPU establecido por la lnea de
retorno de interrupcin Es decir, se establece por hardware.
Cuando existen ms de una lnea de interrupcin, la prioridad viene establecida por hardware en el diseo del
procesador:
INT1
INT2
.
.
.
INTn
prioridad
CPU
RINT3 INT3
CPU
E/S 1
RINT3
INT3
E/S 1
RINT3 INT3
E/S 1
Aunque suele ser frecuente, para minimizar el nmero de pines del chip, que las diferentes lneas entren
codificadas a la CPU, siendo necesario el uso de un codificador externo:
INT1
INT2
.
.
.
INTm
COD
INTn-1
INTn
m = log2 n
CPU
m
INT1
INT2
INT3
RINT (reconocimiento)
cdigo reconocido
En estos casos suele existir una nica seal de reconocimiento RINT, generndose por las lneas menos significativas
del bus de direcciones el cdigo de la interrupcin reconocida, que ser la ms prioritaria entre las que realizaron la
peticin.
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 ningn concepto se puede interrumpir el programa en ejecucin. Adems de la inhibicin
total del sistema, existe la posibilidad de enmascarar individualmente algunas de las lneas de interrupcin utilizando
un registro de mscara:
CPU
RE
0
Unidad
de
Control
DEC
Prioridad
1
1
0
INT 0
INT 1
INT 2
INT 3
Registro de Mscara
La descapacitacin de algunas interrupciones tambin se puede realizar a nivel local del propio mdulo de
E/S, actuando sobre su registro de control.
A nivel software tambin se pueden inhibir las interrupciones producidas sobre una misma lnea por
diferentes perifricos, en la fase de identificacin 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 interrupcin por la generacin de otra interrupcin. Tal
posibilidad viene determinada por el sistema de prioridades: "un dispositivo slo puede interrumpir a otro cuando su
nivel de prioridad es mayor que el que se est atendiendo".
Programa
INT2
Rutina INT2
INT4
Rutina INT4
Rutina INT7
INT7
Para describir con ms detalle la forma en que opera la combinacin de las prioridades y el anidamiento en un sistema
de interrupciones, consideremos una CPU con tres lneas de interrupcin: INT0, INT1, INT2, siendo la primera la ms
prioritari, y la ltima la menos prioritaria. Supongamos que llegan tres peticiones de interrupcin 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 inhibicin de forma independiente cada lnea:
INT0
INT1
INT2
Las interrupciones con menor prioridad no podrn 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:
d1
Programa
Rutina INT1
dir1
dir1+1
INT2
d0
Rutina INT0
INT0
INT1
dir
dir+1
d2 Rutina INT2
10
llega INT1
llega INT2
llega INT0
fin INT0
fin INT1
atiende INT2
fin INT2
dir1+1
011
dir+1
Pila
dir+1
000
CP
d1
d1+ n
011
RE
000
011
d0
dir+1
000
dir1+1
111
dir+1
000
dir+1
011
000
d2
dir+1
001
000
6.
Prioridad
Baja
Alta
Direccin Rutina
FFF8 FFF9
FFF6 FFF7
FFFC FFFD
FFFE - FFFF
Bit de mscara en RE
I
F
No enmascarable
No enmascarable
Comportamiento
Salva todos los registros
Salva CP y RE
Salva todos los registro
No salva registros
Veremos como se puede transformar la lnea IRQ en 8 lneas de interrupcin diferentes. Para ello se
aprovecha el que cuando se produce una interrupcin por esta lnea y es atendida por la CPU, sta accede a su vector
de interrupcin que se encuentra en las direcciones FFF8 y FFF9, lo que significa que en el bus de direcciones
aparecern estas direcciones. Slo en respuesta a una interrupcin 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 lnea nueva de
interrupcin.
El esquema completo de un dispositivo que realiza esta conversin lo hemos representado en la siguiente
figura. El dispositivo se selecciona cuando se activa la seal CS, por lo que esta seal deber generarse cuando en el
bus aparezcan las direcciones FFF8 y FFF9. Cuando eso ocurra, el dispositivo transformar las 4 lneas 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 lnea INTi activada de mayor prioridad.
11
INT7
INT6
INT5
INT4
Rgist r o
De
P et icin
P r ior ida d
y
M sca r a
Vector
INT3
INT2
IRQ
INT1
INT0
R/W
CS
E
Seleccin
y
Con t rol
Z4
A4
Lgica
com bin a cion a l
A3
Z3
Z2
Z1
A2
A1
FFF8 FFF9
Lnea
1
INT7
INT6
INT5
INT4
INT3
INT2
INT1
INT0
Direccin salida
A16....Z4 Z3 Z2 Z1
FFE6 FFE7
FFE8 FFE9
FFEA FFEB
FFEC FFED
FFEE FFEF
FFF0 FFF1
FFF2 FFF3
FFF4 FFF5
La disposicin del controlador de interrupciones respecto a la CPU y la memoria se muestra en el siguiente esquema:
12
CP U
IRQ
INT7
INT6
INT5
INT4
INT3
INT2
INT1
INT0
IRQ
Co n tro la d o r
de
In te rru p c io n e s
A4
A3
A2
A1
Z4
Z3
Z2
Z1
CS
Mem or ia
A5,...A16
A5,...A16
D0,...D7
IPL2
IPL1
IPL0
CP U 68000
FC2 = 1
FC1 = 1
FC0 = 1
A3 A2 A1
Una cuarta lnea, VPA, determina si los siete niveles de las lneas IPLi codifican una excepcin
autovectorizada (VPA = 0) o vectorizada (VPA = 1). En el primer caso el vector de excepcin es fijo para cada nivel,
y en el segundo lo determina el perifrico y lo transmite por las 8 lneas menos significativas del bus de datos cuando
le llega la seal de reconocimiento procedente de la CPU, que corresponde al valor 111 de las seales de estado FC2,
FC1, FC0. El nmero de la lnea vectorizada reconocida lo genera la CPU a travs de las lneas del bus de direcciones
A3, A2, A1. Por ello, es necesario complementar con circuitera lgica externa el sistema, tal como aparece en el
siguiente esquema:
13
VP A
COD
IPL2
IPL1
IPL0
n ivel
n ivel
n ivel
n ivel
n ivel
n ivel
n ivel
7
6
5
4
3
2
1
n ivel
n ivel
n ivel
n ivel
n ivel
n ivel
n ivel
7
6
5
4
3
2
1
7 lneas
autovectorizadas
7 lneas
vectorizadas
CP U 68000
Se a l de
r econ ocim ien t o
globa l pa r a
excepcion es
vect or iza da s
FC2
FC1
FC0
Se a l de
r econ ocim ien t o
in dividu a l
pa r a
ca da n ivel
A3
A2
A1
IN TA1
IN TA2
IN TA3
IN TA4
IN TA5
IN TA6
IN TA7
DE COD
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
0 1 1
Niveles 1 al
1 0 0
Niveles 1 al
1 0 1
Niveles 1 al
1 1 0
Niveles 1 al
1 1 1
Niveles 1 al
El nivel 7 no es enmascarable
I2
2
3
4
5
6
6
I1
I0
Vectores de excepcin
14
Los vectores de excepcin son posiciones de memoria donde la CPU obtiene la direccin de la rutina de
tratamiento de la excepcin. En el MC 68000 existen 255 vectores que se agrupan en la tabla de vectores de
excepcin ubicada en la zona ms baja de memoria (desde la direccin 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 nmero 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 direccin real se obtendr multiplicando por 4 el nmero de vector. El nmero de vector lo
genera la CPU (excepciones autovectorizadas) o el perifrico (excepciones vectorizadas).
N de vector
0
1
1
3
4
5
6
.
.
.
25
26
27
28
29
30
31
.
.
.
64
.
.
.
255
autovector nivel 1
autovector nivel 2
autovector nivel 3
autovector nivel 4
autovector nivel 5
autovector nivel 6
autovector nivel 7
15
Perifrico 1
Perifrico 2
IPL2
nivel 7
nivel 6
nivel 5
nivel 4
nivel 3
nivel 2
nivel 1
COD
VPA
nivel 7
nivel 6
nivel 5
nivel 4
nivel 3
nivel 2
nivel 1
IPL1
IPL0
autovectorizadas
vectorizadas
CPU 68000
FC2
FC1
Perifrico 3
FC0
NUMERO DE
VECTOR
A3
Perifrico 4
A2
A1
CIRCUITO
LOGICO
BUS DE DIRECCIONES
INTA1
INTA2
INTA3
INTA4
INTA5
INTA6
INTA7
Perifrico 5
BUS DE DATOS
16
200 Mh z
CP I = 2
Mem or ia
CP U
10 Kby te s
Mdu lo
E /S
20 pa g./m in.
1 pa g = 3000 bytes
a) E/S programada
Una instruccin 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 caractres/minuto = 1.000
caracteres/segundo = 1 Kbyte/s. Luego los 10 Kbytes los imprimir en 10 segundos.
La CPU est ocupada durante 10 segundos
b) E/S por interrupcin
Para este caso habr que conocer el nmero de instrucciones que se ejecutan dentro de
la rutina de tratamiento de la interrupcin. Supondremos que son 10 las instrucciones (3 para
salvar contexto, 2 para comprobar el estado y bifurcar, 1 para la transferencia, 3 para restaurar
contexto, y 1 para retorno de interrupcin, RTI). La impresora genera una interrupcin cada vez
que est preparada para recibir un nuevo caracter.
Para transferir los 10 Kbytes se producirn 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 interrupcin ha reducido en 10.000 veces el tiempo que la CPU est ocupada
en atender la impresora. Sin embargo, la velocidad de la operacin de E/S no ha cambiado,
como era de esperar al estar dominada por la velocidad del perifrico.
Supuesto 2: conexin de un perifrico rpido, un disco magntico. 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
CP I = 2
CP U
Mem or ia
Mdu lo
E /S
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.
d) E/S por interrupcin
Seguimos suponiendo que la rutina de tratamiento ejecuta 10 instrucciones. Como ahora se
transmiten 107 bytes se producirn otras tantas interrupciones, lo que significa que la CPU ejecuta
en toda la operacin 107 * 10 = 108 instrucciones. Por tanto el tiempo total de ocupacin de la CPU
en la transferencia de E/S ser 108 instrucciones * 10 ns/instruccin = 109 ns = 1 segundo.
Luego en el supuesto 2 las interrupciones no ahorran tiempo de CPU en la operacin de
E/S frente a la E/S programada. La razn est en que se ha llegado al lmite de velocidad que es
capz de soportar la lnea de interrupcin del supuesto (1 byte cada 100 ns). Por encima de los 10
Mbytes/s la E/S por interrupcin perdera datos puesto que se presentara un nuevo byte antes de
haber finalizado la rutina de tratamiento del byte anterior. La E/S programada todava admitira
mayor velocidad puesto que no tendra que ejecutar las instrucciones de guarda y restauracin del
contexto ni la instruccin RTI. El bucle de la E/S programada ejecutara slo 3 instrucciones (2
para comprobar el estado y bifurcar, 1 para la transferencia), es decir tardara 30 ns en lugar de los
100 ns que tarda la rutina de tratamiento de la interrupcin. Por tanto podra llegar hasta el lmite
de 30 ns/byte, es decir, 33 Mbytes/segundo
Por tanto, cuando se tienen que transferir grandes cantidades de datos y a una elevada
velocidad, es necesario disponer de una tcnica que realice de forma ms directa las transferencias
entre la memoria y el dispositivo perifrico, limitando al mximo la intervencin de la CPU. Esta
tcnica se conoce con el nombre de acceso directo a memoria (DMA: Direct Memory Access).
Bsicamente se trata de un mdulo con capacidad para leer/escribir directamente en la
memoria los datos procedentes/enviados de/a los dispositivos perifricos. Para ello solicita la
correspondiente peticin a la CPU. Antes de que la CPU conceda acceso a memoria al DMA, pone en
estado de alta impedancia su conexin 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 operacin de E/S el DMA genera una interrupcin y la CPU vuelve a tomar
control de la memoria. De esta forma la velocidad de transferencia slo estarn limitadas por el
ancho de banda de la memoria.
peticin
concesin
Acceso Directo a
Memoria
(DMA)
Mdulo
E/S
Control
MAR
B. DIR
MEMORIA
CPU
MDR
B. DATOS
Transmitida esta informacin, la CPU pasa a realizar otra tarea, delegando totalmente la
operacin de E/S al DMA. El DMA transfiere directamente, palabra a palabra, el bloque de datos
entre el perifrico y la memoria, sin pasar por la CPU. Cuando la transferencia finaliza el DMA enva
una seal de interrupcin a la CPU.
r/w
bus de datos
bus de direcciones
CPU
Memoria
Contador de palabras
peticin
concesin
interrupcin
Direccin de memoria
Registro de datos
r/w
Lgica de control
DEC
DMA
Dispositivo perifrico
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 pequeos 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 caractersticas del procesador que se utilice.
Son las siguientes:
Rfagas: el DMA toma control del bus y no lo libera hasta haber transmitido un bloque de
datos completo. Con este mtodo se consigue la mayor velocidad de transferencia pero puede
dejar sin actividad a la CPU durante perodos grandes de tiempo.
In st r u ccin 1
In st r u ccin 2
Ciclo DMA
Ciclo DMA
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 ms usual de transferencia y en ella se dice que el DMA
roba ciclos a la CPU.
In st r u ccin 1
In st r u ccin 2
Ciclo DMA
Ciclo DMA
Transparente: el DMA accede al bus slo en los ciclos en los que la CPU no lo utiliza. Y esto
ocurre en diferentes fases de ejecucin de las instrucciones. De esta forma la ejecucin del
programa no se ve afectado en su velocidad de ejecucin.
In st r u ccin
B squ eda
Decodifica cin
Ciclo DMA
B squ eda
E jecu cin
Ciclo DMA
En los sistemas con memoria cache tambin se puede aprovechar el acceso de la CPU a la cache
para que el DMA pueda acceder simultneamente 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 direccin y contador
de palabras del controlador de DMA. El registro de direccin debe contener la direccin
base de la zona de memoria principal que se va a utilizar en la transferencia de datos. El
registro contador de palabra almacena el nmero de palabras que se transfieren
desde/hacia la memoria.
2. Cuando el controlador de DMA est preparado para transmitir datos, activa la lnea de
peticin. La CPU espera a un punto de concesin del DMA, renuncia al control de los
buses de datos y direcciones y activa la lnea de reconocimiento de DMA.
3. El DMA transfiere directamente los datos a/desde memoria principal por alguno de los
mtodos que se acaban de ver. Despus de transferir una palabra, el registro de
direccin 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
preparado para enviar o recibir los siguientes datos, el DMA devuelve
liberando el bus del sistema y desactivando la lnea de peticin.
desactivando la lnea de reconocimiento de DMA y continuando
normal.
perifrico no est
el control a la CPU
La CPU responde
con su operacin
Bus nico (DMA independiente): todos los mdulos comparten el bus del sistema. El DMA,
que acta en sustitucin de la CPU, intercambia datos entre la memoria y el perifrico
utilizando un procedimiento anlogo al de E/S controlada por programa, es decir, hace de
intermediario entre ambas unidades.
CPU
DMA
E/S
E/S
Memoria
Esta configuracin, aunque puede ser muy econmica, es claramente poco eficaz, ya que cada
transferencia de una palabra consume 2 ciclos del bus.
Integracin de funciones DMA-E/S: reduce a 1 el nmero de ciclos de utilizacin del bus. Esto
significa que hay un camino entre el controlador de DMA y uno o ms controladores de E/S que
no incluyen al bus del sistema.
CPU
DMA
DMA
Memoria
E/S
E/S
E/S
La lgica del DMA puede ser una parte de un controlador de E/S o puede ser un mdulo
independiente que controla a uno o ms 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
nmero de interfaces de E/S en el DMA, y proporciona una configuracin fcilmente ampliable.
CPU
DMA
Memoria
bus de E/S
E/S
E/S
E/S
CPU
MEMORIA
bus del sistema
PE/S1
PE/S2
Perifrico
CONTROL
E/S
Perifrico
CONTROL
E/S
Perifrico
CONTROL
E/S
Perifrico
CONTROL
E/S
bus
Perifrico
CONTROL
E/S
E/S1
bus
Perifrico
E/S2
CONTROL
E/S
Un PE/S representa, pues, una extensin del concepto DMA. Un PE/S tiene la capacidad de
ejecutar instrucciones de E/S, lo que le da un control completo sobre dicha operacin. 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
E /S
-
CP U
P rogr a m a
de ca n a l
P rocesa dor de
E /S can a l
P er ifr ico
CPU
Solicita el
estado del P
/S
Si el estado es
vlido emite la
orden de inicio
de la operacin
de E/S
La CPU
contina la
ejecucin de
otro
programa
Solicita el
estado al P E/S
Comprueba que
la operacin de
E/ S ha sido
correcta
Procesadaor de E/S
Enva a memoria
la palabra de
estado
Accede a Memoria
para leer
comandos del
programa de E/S
Accede a Memoria
para transferir por
DMA bloques de
datos
Interrumpe a la
CPU cuando ha
finalizado el
programa de E/S
Transfiere a
memoria el estado
de realizacin del
programa de E/S
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
conectados al canal. Esto les permite operar en forma multiplexada sobre varios dispositivos de
E/S.
Ca n a l
Mu lt iplexor
10
Su bca n a l 1
Su bca n a l 2
Su bca n a l n
n pa la br a s
n pa la br a s
n pa la br a s
dir eccin
dir eccin
dir eccin
con t r ol
con t r ol
con t r ol
Bu ffer de da t os
Con t r ol
del ca n a l
Canal selector
Un canal selector controla mltiples dispositivos de alta velocidad. En cualquier instante de
tiempo est dedicado a la transferencia de datos con uno slo de estos dispositivos. El PE/S
selecciona un dispositivo y efecta la transferencia de datos completa.
Ca n a l
Select or
Con t rola dor
E /S
11
CD
N de pa la br a s
CC SKIP P CI
Operacin Este campo corresponde al cdigo de operacin de las instrucciones mquina normales.
Especifica la operacin que debe realizar la CCW. La unidad de control decodifica este campo y
enva las seales adecuadas de control al dispositivo. Existen varias operaciones, las ms
importantes son las siguientes:
Lectura: el canal transfiere a memoria principal un bloque de palabras de tamao
especificado en el campo n de palabras, en orden ascendente de direcciones, empezando en
la direccin especificada en el campo direccin del dato.
Escritura: el canal transfiere datos de memoria principal al dispositivo. Las palabras se
transfieren en el mismo orden que en la operacin de lectura.
Control: se utiliza esta orden para enviar instrucciones especficas al dispositivo de E/S,
como rebobinar una cinta magntica, etc.
Bifurcacin: cumple en el programa de canal la misma funcin que una instruccin 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 direccin del dato como la direccin de la siguiente
CCW a ejecutar.
Flags Los bits de este campo indican lo siguiente:
12
CC (Encadenamiento de comando): cuando este bit est a 1, indica al canal que la siguiente
CCW especifica una nueva operacin de E/S que debe realizarse con el mismo dispositivo.
El canal ejecuta primero la operacin de E/S especificada en la CCW que tiene a 1 el flag
CC. Despus 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 direccin 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 conexin con el dispositivo de
E/S, contina la transferencia utilizando la direccin 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
magntica. Si se utiliza encadenamiento de comandos, los dos bloques se escribirn en la cinta
separados por un separador de registros que la unidad de cinta inserta de forma automtica al
final de una operacin 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 nmero 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 (Interrupcin controlada por programa): el canal produce una interrupcin cuando ejecuta
una CCW con el flag PCI a 1. Si esta CCW va precedida por otra CCW con encadenamiento
de comandos, la interrupcin se genera despus 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 magntica. CCW1 lee 70 bytes de memoria, a partir de la
posicin 2000, y los escribe en cinta. La operacin de Escritura y la unidad de cinta a utilizar se
especifican en el campo de operacin. Puesto que el bit CD est 1, CCW2 debe interpretarse como
una continuacin de CCW1. Se realiza la misma operacin de E/S, esto es, una Escritura en el
mismo dispositivo, pero con los datos especificados en CCW2. Obsrvese 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
posicin 2.200, como continuacin 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 separacin 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 posicin 2.500 de memoria. Puesto que los flags CD y CC valen cero, se trata
del final del programa de canal.
OPERACION
DIRECCION
FLAGS
CD CC SK PCI
N PALABRAS
13
CCW1
CCW2
CCW3
ESCRITURA
ESCRITURA
2000
2200
2500
Memoria principal
1
0
0
0
1
0
0
0
0
0
0
0
70
100
500
Cinta magntica
CCW1
2000
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 operacin a la memoria, a partir de la posicin 4.500. Puesto que CD = 1, CCW2 realiza la
misma operacin. 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, contina la misma
operacin de lectura con CCW3, provocando la transferencia de los siguientes 50 bytes a la
memoria, a partir de la posicin 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.
OPERACION
CCW1
CCW2
CCW3
LECTURA
DIRECCION
4500
4700
FLAGS
CD CC SK PCI
1
0
0
0
1
0
1
0
0
0
0
0
N PALABRAS
80
30
50
14
Memoria principal
4500
Cinta magntica
CCW1
80 bytes
80 bytes
registro
30 bytes
CCW2
4700
50 bytes
50 bytes
HALT I/O
TEST CHANNEL
TEST I/O
Una operacin de E/S se inicia con la instruccin START I/O. La ubicacin del programa de
canal en la memoria principal viene definida en la palabra de direccin de canal (CAW: Channel A
ddress word), que siempre est almacenada en la posicin 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
16
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
Los materiales ferromagnticos se caracterizan porque se magnetizan de forma permanente cuando se les aplica un
campo magntico externo. Normalmente el campo externo se genera elctricamente. Esto no les ocurre a los materiales
diamagnticos, que son repelidos por los campos magnticos y no se magnetizan, ni a los materiales paramagnticos, que
son atrados por los campos magnticos y tampoco se magnetizan. Un material ferromagntico se caracteriza por sus
curvas de magnetizacin e histresis. Supongamos que el material ferromagntico est originariamente desmagnetizado
(punto a de la siguiente grfica). Conforme se incrementa el campo magntico externo H, tambin se incrementa la
magnetizacin inducida M, hasta que se alcanza el valor de saturacin (punto b). La curva entre los puntos a y b se
denomina curva de magnetizacin. Si ahora reducimos el campo externo, la magnetizacin inducida tambin se reduce,
pero no sigue la curva original. El material retiene una cierta magnetizacin permanente denominada magnetizacin
remanente, que persiste incluso cuando se anula el campo externo (punto c). Si reducimos an ms el campo externo
(sentido opuesto) podemos llegar a anular la magnetizacin remanente (Punto d), y si contina la reduccin se crea una
magnetizacin inducida de sentido opuesto, llegndose tambin en este caso a un valor de saturacin (punto e). Si ahora
vamos reduciendo el campo externo hasta anularlo, el material queda con una magnetizacin remanente de sentido opuesto
a la anterior (punto f). Para anular esta magnetizacin remanente debemos aumentar el campo externo (con el sentido
original) hasta alcanzar el punto g, y si seguimos aumentando llegamos de nuevo a la saturacin (punto b), con lo que se
completa el ciclo de histresis. Los materiales ferromagnticos tienen por tanto dos valores estables de magnetizacin, uno
norte, correspondiente al punto c de la grfica y otro sur, correspondiente al punto f. Estos dos estados de magnetizacin
remanente que se mantienen en ausencia de campo externo son los que se utilizan para codificar la informacin binaria
cuando se utilizan los materiales ferromagnticos como soporte de memoria.
M
c
Los procesos de lectura y escritura sobre las superficies ferromagnticas de un disco (habitualmente de
xido de hierro) se realizan a travs de una cabeza de grabacin compuesta por un ncleo 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 colchn de aire formado por su propio movimiento.
Debido a esto, estn cerrados hermticamente, porque cualquier partcula de polvo puede daarlos.
escr it u r a
lect u r a
cor r ien t e
t en sin
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 magntico en el
ncleo de hierro que se cierra a travs de la pequea regin de la superficie magntica que en ese momento
est bajo la cabeza, dejando una magnetizacin remanente del mismo sentido que el campo de la bobina.
Lectura: Se mueve la superficie magntica previamente grabada por debajo de la cabeza. Cada variacin
de flujo producida por las pequeas reas magnetizadas inducir una pequea tensin en la bobina de
lectura. Amplificando e interpretando adecuadamente estas tensiones podemos reconstruir en forma de
seal elctrica digital los valores grabados en la superficie del disco.
Los discos magnticos actuales disponen de AUTOPARK o aparcamiento automtico 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 daos en la superficie del disco cuando la unidad es sometida a vibraciones o golpes en
un posible traslado.
Para grabar informacin en la superficie, se siguen una serie de cdigos que transforman un patrn de
bits en una secuencia de celdas con diferentes estados de magnetizacin.
1) Retorno a cero (RZ: return to zero).
El 1 lgico se graba magnetizando el centro de la celda. El 0 es ausencia de magnetizacin
2) Retorno a saturacin (RS: return to saturation).
El 1 se representa por un estado de magnetizacin en el centro de la celda. El resto de la celda y el 0 se representa con
el estado de magnetizacin opuesto.
3) Retorno a cero bipolar (BRZ: bipolar return to zero).
El 1 se representa por un estado de magnetizacin en el centro de la celda y el 0 por el estado de magnetizacin
opuesto, tambin en el centro de la celda. Los extremos de la celda quedan sin magnetizar.
4) Sin retorno a cero (NRZ: non-return zero).
El 1 se representa por un estado de magnetizacin en toda la celda y el 0 por el estado contrario, tambin en toda la
celda.
5) Sin retorno a cero inverso (NRZI: non-return to zero invert).
El 1 se representa por un cambio del sentido del flujo de magnetizacin en toda la celda respecto al estado de la celda
anterior. El 0 se representa por ausencia de cambio.
0
RZ
RS
BRZ
NRZ
NRZ1
La celda tiene un primer intervalo de longitud RI en un estado de magnetizacin, 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.
9) FM modificada (MFM: modifed FM).
Similar a FM excepto que el cambio de estado al inicio de la celda se efecta slo si el bit precedente y actual son
ambos 0.
10) Modulacin de frecuencia modificada-modificada (MIFM: modified-modified FM).
Igual que FM pero slo se efecta el cambio de estado al comienzo de la celda si la celda anterior no contiene ningn
cambio (ni al principio ni en el centro), y la celda actual no es un 1 .
PE
FM
PR
MFM
M FM
Los datos en un disco magntico se organizan en un conjunto de anillos concntricos sobre el plato denominados
pistas. Las pistas adyacentes estn separadas por bandas vacas. Esto minimiza los errores debidos a falta de alineamiento
de la cabeza o a interferencias del campo magntico. Para simplificar la electrnica, se suele almacenar el mismo nmero
de bits en cada pista. Esto significa que la densidad en bits es mayor en las pistas ms internas.
Los datos se transfieren en bloques y se almacenan en regiones del tamao 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 vacas. El disco se graba con un formato que contiene algunos datos extra, usados slo
por el controlador del disco y no accesibles al usuario. En la siguiente figura se puede ver la disposicin de los datos:
sect or es
pist a s
Sepa r a cin
in t er bloqu es
Ba n da de
sepa r a cin
de pist a s
En la siguiente figura se muestra un ejemplo del formato de grabacin 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
informacin de control utilizada por el controlador del disco. El campo ID es un identificador nico, o direccin, usado
para localizar un sector particular. El byte SINCRO es un patrn de bits especial que delimita el comienzo del campo. El
nmero de pista identifica cada pista. El nmero de cabeza identifica una cabeza, si el disco tiene varias superficies. El ID y
los campos de datos contienen, cada uno, un cdigo de deteccin de errores de redundancia cclica (CRC) que
estudiaremos en el apartado siguiente.
pist a
...................
Sect or i
ID
.................................
Ga p (41 yt es)
30 sect or es
Byt es
N pist a
Byt es
N ca beza
N sect or
Sin cr o
Da t os
512
Existen procedimientos para aumentar la capacidad del disco colocando ms sectores sobre las
pistas exteriores que son ms largas, manteniendo constante la velocidad de rotacin. El sistema ZBR
(Zone Bit Recording) es un ejemplo que requiere el uso de controladores ms complejos..
MTBF (Mean Time Between Failures), que se mide en horas (15000, 20000, 30000..). Cuanto mayor sea
Resta
1101101
- 0101001
---------1000100
Multiplicacin
1111101
x
11
---------1111101
1111101
---------10000111
Divisin
1111101
11 Cociente
---------10000111 Dividendo
1111101
------1111101
1111101
------0 Resto
Divisor
Codificacin
M = mensaje de k bits original que se desea transmitir
F = n bits de la secuencia de comprobacin (FCS)
T = mensaje de (k + n) bits que se transmite, con n < k
P = patrn de n + 1 bits: divisor elegido
Es evidente que multiplicar M por 2n equivale a desplazar hacia la izquierda n bits, introduciendo ceros por la derecha. Por
tanto la operacin de concatenacin de M con F para dar T podemos expresarla de la siguiente forma:
T = 2n M + F
El objetivo es escoger F de tal manera que T sea divisible por P. Como:
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
Ya que la suma y resta coinciden en aritmtica mdulo 2.
Ejemplo
Emisor
Mensaje original a transmitir
Patrn
FCS
X12 + X11 + X3 + X2 + X1 + X0
CRC-16
X16 + X15 +
CRC-CCITT
X16 + X12 + X5
CRC-22
X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+X0
X2
+ X0
+ X0
Implementacin hardware
La generacin y deteccin CRC se implementa con un circuito divisor compuesto por puertas Oexclusiva y un registro de desplazamiento. El registro contiene tantos bits como el FCS, es decir, n, y n1 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
C4
X5
C3
X4
C2
X3
C0
C1
X2
X1
Bits de entrada
X0
Sobre este circuito podemos seguir el proceso de generacin CRC del ejemplo anterior, para el
mensaje
M = 1010001101:
Inicial
Paso 1
Paso 2
Paso 3
Paso 4
Paso 5
Paso 6
Paso 7
Paso 8
Paso 9
Paso 10
Paso 11
Paso 12
Paso 13
Paso 14
Paso 15
C4
C3
C2
C1
C0
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
0
0
0
0
0
1
0
1
1
1
1
1
1
0
1
0
1
0
0
0
1
0
1
1
1
1
1
1
0
1
0
1
0
0
0
1
0
1
0
0
1
0
1
1
1
1
0
1
1
0
1
0
1
0
0
1
0
1
1
1
1
0
1
1
0
C4 C3
0
0
0
0
1
1
0
1
0
1
0
1
1
0
0
1
C4 C1
0
0
1
0
1
1
1
1
1
1
0
1
0
1
1
1
C4 entrada
1
0
1
0
0
1
0
1
1
1
1
0
1
1
0
0
entrada
1
0
1
0
0
0
1
1
0
1
0
0
0
0
0
0
mensaje
a enviar
cinco ceros
aadidos
Tiempo de bsqueda (Ts): tiempo que tarda la cabeza en posicionarse en la pista. Se compone de dos partes, el
tiempo de comienzo s o tiempo necesario para que la cabeza adquiera una cierta velocidad radial, y el tiempo necesario
para atravesar las pistas que preceden a la que se accede, que no es una funcin lineal del nmero de pistas atravesadas.
Sin embargo podemos aproximar Ts con la siguiente expresin:
Ts = m * n + s
donde:
n = nmero de pistas atravesadas
m = constante que depende del disco
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 ms 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 expresin del valor medio de Tr ser la siguiente:
Tr = 1/2r
En discos duros que giran a 3.600 rpm, una revolucin 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 bsqueda 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 rotacin del disco:
Tt = b/rN
donde:
b = nmero de bytes a transferir
N = nmero de bytes de una pista
r = velocidad de rotacin en rps
Tiempo de operacin (To): es la suma de las componentes anteriores, es decir:
To = m * n + s + 1/2r + b/rN
En un computador que funciona bajo control de un SO, para realizar una operacin de E/S, a estos tiempos habr
que aadir 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.
Comparacin de tiempos en acceso secuencial y aleatorio
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
El dispositivo floppy disk fue introducido por IBM en 1967. La primera versin tena un tamao de 8
pulgadas y se redujo a 5.50 pulgadas en la segunda con 360 KB, que se utiliz en el primer IBM PC en
1981. Posteriormente apareci la versin de 3.25 pulgadas con 1.44 MB. El floppy utiliza una fina capa de
material plstico recubierta de xido de hierro (material ferromagntico)
Estructura de bloques del dispositivo
Como puede verse en el esquema de la siguiente figura, un dispositivo floppy dispone de los
siguientes elementos:
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. Tambin dispone de un mecanismo de elevacin 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 seal cada vez que se inicia una nueva revolucin de
giro.
11
Pu lso
Dir e ccin pu lso
E le va cin ca be za
Con tr ol
G ir o m otor
Re loj
Da tos le ctur a
Da tos e scr itu r a
Le ctu r a
Y
E scr itu r a
Motor
de Giro
Cabeza l/e
Motor
P aso-a-paso
Listo
Pr oteccin e scr i.
Detector
de pista 0
E sta do
In dice
fotoclula
Pista 0
Tod
os los elementos del dispositivo son accionados y supervisados desde la circuitera de Control,
Lectura/Escritura y Estado a travs del controlador del dispositivo.
Formato de datos
marca
pista
sector
longitud
sector
CRC
sector
ID
marca
inicio
pista
marca
Campo de Datos
CRC
ndice
12
Regist r o de Or den es
Bu ffer
de
Da t os
Regist r o de E st a do
Regist ro de Sector
Cir cu itos
de
Ada pt a cin
y
Con t r ol
Regist ro de P ist a
CP U
Regist r o de Da tos
Lgica
de
Seleccin
y
Con t r ol
D IS CO
Bsqueda de pista
Bsqueda de sector
Lectura de sector
Escritura de sector
Analicemos las acciones que tienen lugar en el dispositivo durante la ejecucin de la primera de estas rdenes.
Bsqueda 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 mdulo de E/S ha puesto la orden de Bsqueda de pista sobre el Registro de Ordenes, carga en el Registro de Datos
el nmero de la pista a buscar y comienza la operacin. Se comparan los registros de Datos y Pista. Si sus contenidos
coinciden, la cabeza se encuentra en la pista buscada, y la operacin finaliza con una interrupcin despus de desactivar la
seal de Elevacin de cabeza y transcurrir un retardo de tiempo para el asentamiento de la cabeza. En caso contrario se
enva un pulso al motor paso-a-paso de la cabeza con la direccin adecuada (dependiendo del resultado menor o mayor de
la comparacin) a fin de desplazarla a la pista contigua. Despus se actualiza el Registro de Pista y se vuelve a comparar.
13
R.Da t os n de pist a
>
Pu lso
Direccin pu lso 1
R.P ist a <R.P ist a> + 1
E levacin cabeza 0
Ret a r do( a sen t a m ien to de la ca beza )
In t err u pcin
<
P u lso
Dir eccin pu lso 0
R.P ist a <R.P ist a> - 1
0,5 micras
1,6 micras
Etiqueta
Capa protectora
Capa aluminio
Base de
policarbonato transparente
La informacin se codifica usando un cdigo de canal con el que cada byte (ASCII) queda representado por 14 bits y
se graba en una cinta magntica
La cinta es leda por un grabador de moldes para controlar un modulador ptico de un lser de potencia.
El lser se enfoca sobre la superficie fotosensible que recubre el disco molde (que es de cristal).
Mediante un proceso anlogo al utilizado en la fabricacin 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 tendrn los CD-ROM.
14
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 asla del exterior, emparedndola entre la capa protectora superior y la base inferior de plstico
Con los CD-ROM se consiguen una densidad de grabacin de 16.000 pistas/pulgada (t/i) muy superior a la de los discos
magnticos (los disquetes 96 t/i.
El proceso de lectura sigue los siguientes pasos:
Se utiliza un haz de luz generado por un diodo lser de arseniuro de galio, que una lente enfoca sobre la superficie de
la base de plstico, convirtindose en un punto de 1 micra.
El enfoque no se realiza sobre la superficie externa de la base de plstico, sino sobre el aluminio, por lo que las
partculas de polvo o rayados del exterior del disco apenas afectan a su lectura.
La lectura se efecta con un fotodetector que mide la cantidad de luz reflejada (genera una corriente proporcional a la
radiacin recibida).
Cuando la luz incide sobre los bordes de los hoyos se desva, de forma que apenas vuelve nada hacia el objetivo,
obtenindose as un "1".
Cuando el haz incide sobre la superficie plana de hoyos y salientes se refleja casi sin desviacin, captndose en el
detector prcticamente la totalidad del haz, obtenindose as un "0".
10000010010000000000001000000010000001
Base de
laser de lectura
(lee 1)
laser de lectura
(lee 0)
Codificacin de la informacin
A nivel lgico la informacin se organiza en bloques (sectores) de 2.352 bytes, con el formato que aparece en la siguiente
figura:
bytes
00
FF
12
Sincronismo
ID
FF
2.048
288
Datos
FF
00
ECC
Minuto
Segund.
Sector
Modo
A nivel fsico
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 mnima fsicamente posible para hoyos
y salientes es de 0,6 micras, lo que exige que 2 1's deben estar separados como mnimo por 2 0's. Por eso cada byte de
datos se codifica con 14 bits de canal, segn la siguiente tabla:
15
Codificacin EFM
(Eight to Fourteen Modulation)
Byte
0000 0000
0000 0001
0000 0010
0000 0011
Cdigo de canal
01 0010 0010 0000
10 0001 0000 0000
10 0100 0010 0000
10 0010 0010 0000
0000 0100
0000 0101
0000 0110
0000 0111
.........
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
bits
1 byte de sector
bits
sincronizacin
datos
sep
14
24
sep
control
8 ECC
17
136
Base de
Base de
16
Son unidades de discos pticos similares a los lectores de CD-ROM, pero que contienen un lser de potencia, de
forma que en la propia unidad se puede efectuar la grabacin del disco.
Los discos vrgenes son previamente magnetizados, es decir, escritos todo a 0's, magnetizacin norte, o todo a 1's,
magnetizacin sur.
En la fase de escritura se realizan dos acciones:
1.
Toda la superficie del disco se somete a un campo magntico uniforme, de sentido contrario al de magnetizacin
inicial, y de intensidad no suficiente para alterar el estado de magnetizacin inicial de cada celda.
2.
Simultneamente se hace incidir un lser 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 magnetizacin inicial de la celda.
magnetizacin inicial
lser de escritura
Proceso de lectura:
El proceso de lectura se funda en el efecto Kerr, que consiste en que el plano de polarizacin de un haz de luz gira en
un sentido u otro, segn el estado de magnetizacin de la superficie en la que se refleja. La lectura se realiza con un
lser de unos 10 mW de potencia, que incide secuencialmente sobre las celdas del disco que se van a leer, captndose
la luz reflejada en un fotodetector despus de haber pasado por un analizador ptico.
17
fotodetector
lser de lectura
fotodetector
lser de lectura
Proceso de regrabacin
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 magnetizacin distinto al inicial. Para ello se aplica un campo magntico externo de
sentido igual al inicial y con la suficiente intensidad para invertir el sentido de magnetizacin 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.
18
Can de electrones
HSYNC
OSCILADOR
HORIZONTAL
AMPLIFICADOR
HORIZONTAL
VIDEO
AMPLIFICADOR
DE VIDEO
CRT
VSYNC
OSCILADOR
VERTICAL
AMPLIFICADOR
VERTICAL
Bobina de deflexin
Capa de fsforo
Los monitores de color tienen una organizacin similar pero utilizan un can de electrones para cada uno de los tres
colores bsicos. Cada punto de la pantalla, pxel, est compuesto por tres pequeas reas que se iluminan de rojo, verde y
azul cuando incide el correspondiente haz de electrones. La relacin entre las tres intensidades de electrones produce la
correspondiente intensidad de los tres colores bsicos 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 lnea horizontal vuelve al flanco izquierdo para realizar el barrido de la segunda lnea, al tiempo que el
haz sufre una pequea deflexin vertical, en sentido descendente. de esta forma se genera un conjunto de lneas
horizontales paralelas hasta alcanzar la esquina inferior derecha. En este punto se dice que se ha completado un barrido
vertical o un marco. Despus 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
1
2
3
4
5
6
7
Para producir el barrido descrito los osciladores horizontal y vertical debern generar unas seales en forma de
diente de sierra, tal como las que se presentan en la figura siguiente:
H
tiempo
tiempo
VIDEO
tiempo
La seal de VIDEO controla la intensidad de iluminacin del punto de barrido en cada instante, haciendo que se
dibuje la imagen sobre la pantalla, la letra A mayscula 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.
Si el refresco de la pantalla se realiza a razn de 60 marcos/segundo, corresponde a un intervalo de tiempo de
16.67 ms, de los cuales slo 15,42 ms se consumen estrictamente en el barrido vertical, los restantes 1,25 ms se emplean en
el retorno vertical.
V
ms
15,42
barrido vertical
16,67
retorno vertical
Lo mismo le ocurre al barrido horizontal. Unos valores tpicos para el barrido y el retorno son los que se muestran
en la siguiente figura:
20
s
53,5
barrido horizontal
10
retorno horizontal
Con los valores anteriores, el nmero total de lneas de un marco ser: 1.542 s / 63,5 242 lneas.
Sincronismo
Las seales de barrido horizontal y vertical tienen evidentemente que sincronizarse entre s y con la seal de
VIDEO, que por simplicidad seguiremos considerando que es binaria. La sincronizacin del barrido horizontal y los pulsos
de video se muestra en la siguiente figura:
borrado horizontal
pulsos de vdeo
HSYNC
pulso de sincronismo horizontal
VSYNC
21
dir_lnea
Reloj desplaz.
VIDEO
Registro de desplazamiento
(ROM)
(RAM)
carga
GENERADOR
DE
CARACTERES
MEMORIA
DE
REFRESCO
dir_ini
Z (en ASCII)
dir_fin
Cdigo ASCII
utilizado como
puntero
0
0
0
0
0
0
0
1
0
0
0
0
1
1
1
0
0
0
1
0
1
1
0
0
1
0
0
1
1
0
1
0
0
0
1
1
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
lnea 0
lnea 1
lnea 2
lnea 3
lnea 4
lnea 5
lnea 6
Para visualizar la Z tendremos que ir extrayendo de la ROM el valor binario de sus pixels, lnea a
lnea, llevando cada lnea al Registro de Desplazamiento que controla la seal de VIDEO, es decir, la
presencia (1) o ausencia (0) de luz en la pantalla.
Hemos supuesto que la resolucin de cada carcter, incluyendo los puntos de separacin es de 8 x 7
= 56 pixels.
El proceso completo de refresco de la lnea contenida entre las direcciones dir_ini y dir_fin de la
memoria de refresco lo hemos representado en el siguiente diagrama:
22
dir_refresco dir_ini
dir_ lnea
dir_lnea dir_lnea + 1
no
dir_lnea > 6
si
no
dir_refresco dir_refresco + 1
dir._refresco
>
dir_fin
si
1.4.2. Controlador
La estructura del controlador completo de la pantalla de tubo de rayos catdicos la componen un conjunto de
contadores que actan sobre la RAM de refresco, la ROM de generacin de caracteres, el Registro de Desplazamiento que
controla la seal de VIDEO y la Lgica de Temporizacin.
Supondremos que la resolucin de la pantalla es de 16 filas con 32 caracteres cada una, y cada carcter est
definido por una matriz de 7 x 10 puntos, tal como se muestra en la siguiente figura:
caracter 1
caracter 32
caracter 1
caracter 2
caracter 3
lnea 1
fila 1
32 X 16
lnea 10
fila 16
columna 1
columna 7
El controlador acta en sicronizacin con un Reloj que genera un pulso por cada pxel a visualizar. El Reloj acta
sobre el Registro de Desplazamiento para marcar los instantes en que tiene que renovarse el punto de la lnea en fase de
visualizacin.. Tambin acta de forma directa sobre el Contador de Puntos de cada lnea de un carcter. En realidad este
contador opera como divisor de la frecuencia del Reloj para cargar el Registro de Desplazamiento con las sucesivas lneas
de todos los caracteres que se visualizan en la misma fila de la pantalla.
La salida del Contador de Puntos acta sobre el Contador de Caracteres, que a su vez acta sobre el Contador de
Lnea de Puntos, que finalmente acta sobre el Contado de Fila de Caracteres. Este funcionamiento en cascada de los 4
23
contadores va dividiendo la frecuencia del Reloj en los valores adecuados al recorrido de cada contador, que se
corresponden con la resolucin de la pantalla:
Contador de Puntos Puntos de cada fila de cada carcter (7)
Contador de Caracteres Nmero de caracteres de una fila de la pantalla (32)
Contador de Lnea de Puntos Nmero de lneas de puntos de cada carcter (10)
Contador de Fila de Caracteres Nmero de filas de caracteres de la pantalla (16)
caracter 1
HSYNC
Lgica de temporizacin
HSYNC, VSYNC, VIDEO
VSYNC
caracter 32
fila 1
32 X 16
Contador de
fila de
caracteres
(16)
(RAM)
fila 16
VIDEO
7
Contador de
lnea
de puntos
(10)
Contador de
caracteres
(32)
Retardo
Contador de
puntos
(7)
(ROM)
carga
Registro de desplazamiento
desplazamiento
Reloj
24
luz no polarizada
polarizador
luz polarizada
analizador
luz bloqueada
luz no polarizada
polarizador
luz polarizada
analizador
Luz polarizada
Dos superficies de vidrio transparente cubiertas de un material conductor tambin transparente (oxido de
estao) que acta como electrodo
Un regulador de precisin 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 lquido se recubren de una fina capa de polmero
que ha sido frotado en una direccin. Las molculas de cristal lquido tienden a orientarse con sus ejes longitudinales
paralelos a esta direccin. Las superficies de vidrio se disponen de manera que las molculas adyacentes al electrodo
superior se orienten formando un ngulo recto con el inferior. Cada polarizador est orientado con su plano de polarizacin
paralelo a la direccin de frotacin del electrodo adyacente (de esta forma el polarizador y el analizador estn cruzados).
En ausencia de un campo elctrico el eje director del cristal lquido 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 orientacin local de las molculas
de cristal lquido. La disposicin girada (twisted) de las molculas de cristal lquido dentro de la celda actan como gua
de las ondas luminosas y rotan el plano de polarizacin 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 lquido es transparente. Cuando se
aplica un voltaje a los electrodos, las molculas de cristal lquido tienden a alinearse con el campo elctrico resultante E, y
de esta forma se pierden su propiedad de gua de las ondas luminosas, bloquendose el paso de la luz polarizada. Cuando
se desconecta el campo elctrico, las molculas tienden a adoptar de nuevo el estado girado (twisteado) y la celda se
convierte de nuevo en transparente.
25
luz no polarizada
polarizador
luz no polarizada
polarizador
luz polarizada
analizador
luz polarizada
luz polarizada
analizador
luz polarizada
1.5 Impresoras
1.5.1 Impresora de martillo
La impresora de martillos se ha utilizado mucho en aplicaciones que operan en ambientes
industriales, ya que su sencillez la hace muy robusta. Consta de un cilindro con el mismo carcter
repetido a lo largo de toda una generatriz, y tantas generatrices como caracteres imprimibles. Tambin
dispone de una batera de martillos que se accionan elctricamente, tantos como veces se repite el carcter
en una generatriz. Entre los martillos y el cilindro se desliza una cinta entintada y el papel. Cada
generatriz lleva asociada un pequeo imn en su extremo que genera un pulso cada vez que pasa debajo de
una pequea bobina. Tambin existe un imn asociado a todo el cilindro que genera un pulso al inicio de
una revolucin. Con la informacin de los dos trenes de pulsos, el Control conoce en todo momento el
carcter que se halla debajo de la batera de martillos. Slo tiene que accionar los martillos
correspondientes a las posiciones de la lnea de escritura donde deba aparecer el carcter bajo los
martillos. En general la escritura de una lnea requerir una vuelta completa del cilindro.
26
Control
martillos
bobina
imanes
cinta entintada
A A A A A A A A
B B B B B B BB
C C C C C C C C
papel
inicio de revolucin
Amp
fila de caracteres
deflexin
vertical
electrodo
de carga
0 - 200 V
papel
3 kV
Control
bomba
Tinta
seal
forma
carcter
tinta no
utilizada
Filtro
27
Modulador
Emisor de
Laser
Rodillo de
arrastre
Toner
Cilindro
giratorio
Ratn
fotodetector
Contador
Y
Contador
X
fotodetector
28
2. Buses de comunicacin
Un bus es un medio compartido de comunicacin constituido por un conjunto de lneas (conductores) que conecta
las diferentes unidades de un computador. La principal funcin de un bus ser, pues, servir de soporte para la realizacin
de transferencias de informacin 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 dinmicos, de manera que una misma unidad puede realizar ambas funciones en
transferencias diferentes. Por ejemplo, una unidad de DMA hace de slave en la inicializacin que realiza el master, la CPU,
para una operacin de E/S. Sin embargo, cuando comienza la operacin, la unidad de DMA juega el papel de master frente
a la memoria, que en esta ocasin 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 ms unidades pretenden acceder al mismo tiempo al bus, es decir, garantiza que en cada
momento slo exista un master.
Para establecer el tiempo de duracin 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 sincronizacin master-slave.
2.1 Estructura de un bus
Las lneas de un bus podemos clasificarlas en grupos, atendiendo al papel que cumplen en las transferencias:
1. Lneas de informacin bsica: las utiliza el master para definir los dos elementos principales de una
transferencia, el slave y los datos. Se dividen , pues, en dos grupos:
Existen buses con lneas independientes para cada uno de los anteriores tipos de informacin. En cambio en
otros se utilizan las mismas lneas multiplexadas en el tiempo.
2.
Lneas de control: transmiten las rdenes que determinan la operacin de transferencia a realizar por las lneas
de datos y direcciones, y marcan el ordenamiento temporal de las seales que circulan por el bus. Las
primeras son las lneas de control propiamente dichas, de las que las ms importantes son:
Escritura en memoria
Lectura de memoria
Operacin de salida
Operacin de entrada
Las segundas son las lneas de sincronismo, entre las que cabe citar las siguientes:
3.
Reconocimiento de transferencia
Reloj
Reset
Lneas de arbitraje: establecen la prioridad entre diferentes peticiones de acceso al bus. Por ejemplo:
29
CPU
Memoria
E/S
direcciones, datos
control
arbitraje
Lneas unidireccionales
Emisor simple
control tri-state
Emisor mltiple
colector abierto
Lneas bidireccionales
30
control tri-state
Desde el punto de vista fsico un bus es un conjunto de conductores elctricos paralelos dispuestos sobre una
tarjeta de circuito impreso. Los dispositivos del sistema se conectan a travs 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 disposicin anterior corresponde generalmente a los buses del sistema. Los denominados buses de
entrada/salida conectan las unidades a travs de cables.
Los principales parmetros que caracterizan un bus son:
En los buses sncronos existe un reloj que gobierna todas las actividades del bus, las cuales tienen lugar en un nmero
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
ciclo-1
ciclo-2
ciclo-3
Reloj
tiempo de establecimiento
Direccin
tiempo de mantenimiento
Datos
R/W
Escritura
Lectura
Escritura
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 operacin con memoria. Los buses sncronos son rpidos pero no tienen capacidad para conectar unidades con
velocidad de transferencia baja. o no conocida a priori.
2.2.2 Asncronos
Los buses asncronos utiliza un protocolo tipo handshaking para comunicarse el master con el slave.
En el siguiente diagrama se presenta el dilogo de seales que tiene lugar durante una transaccin de lectura de
memoria por parte de la CPU utilizando un protocolo asncrono (handshaking) sobre un bus que multiplexa las direcciones
y los datos sobre las mismas lneas (datos/direccin).
1) La CPU activa la seal de lectura al tiempo que coloca la direccin de la posicin a leer en las lneas
datos/direccin.
2) La Memoria detecta la activacin de lectura, lee la direccin que hay en datos/direccin y activa la seal de
reconocimiento para indicar que ha detectado la orden de lectura.
3) la CPU detecta la activacin de reconocimiento y en respuesta desactiva la seal de lectura y libera las lneas
de datos/direccin.
4) La memoria detecta que se ha desactivado la seal de lectura y desactiva la seal 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/direccin y activa la seal de
dato disponible.
6) La CPU detecta que dato disponible est activa y procede a leer los datos del bus y activar la lnea de
reconocimiento para indicar que ya dispone del dato.
7) La memoria detecta la seal de reconocimiento, desactiva dato disponible y libera las lneas de
datos/direccin.
8) Finalmente, la CPU al detectar que se desactiva dato disponible, desactiva, a su vez, la seal de
reconocimiento, indicando que la transmisin ha finalizado.
A partir de este momento se puede iniciar una nueva transaccin.
32
lectura
datos/direccion
es
dato
direccin
reconocimiento
dato disponible
Un bus asncrono trabaja igual que un par de mquinas de estados finitos que se comunican de tal forma que uno
de los autmatas no avanza hasta que sabe que el otro autmata ha alcanzado un determinado estado, es decir, los dos
autmatas estn coordinados.
Los buses asncronos se escalan mejor con los cambios de tecnologa y pueden admitir una mayor variedad de
velocidades de respuesta en los dispositivos.
CPU
Memoria
reconocimiento = 1
Liberar datos/direccin
Desactivar lectura
dato disponible = 1
dato disponible = 0
Memoria <-- datos/direccin
Activar reconocimiento
dato disponible = 0
dato disponible = 1
Desactivar reconocimiento
lectura = 0
lectura = 1
lectura = 0
Desactivar reconocimiento
Memoria --> datos/direccin
Activar dato disponible
reconocimiento = 0
reconocimiento = 1
Liberar datos/direccin
Desactivar dato disponible
2.2.3 Semisncronos
En los protocolos semisncronos existe, como en los sncronos, un reloj que gobierna las transferencias en el bus. Sin
embargo, en este caso existe, adems, una seal de espera (wait) que es activada por el slave cuando la transferencia va a
durar ms de un ciclo de reloj. De esta forma, los dispositivos rpidos operarn como en bus sncrono, mientras que los
lentos alargarn la operacin el nmero de ciclos que les sea necesario.
33
Reloj
Direccin
Datos
Espera
Escritura
asncrona
Escritura
sncrona
Lectura
sncrona
Lectura
asncrona
En los buses de ciclo partido la operacin de lectura se divide en dos transacciones no continuas de acceso al bus. La
primera transaccin es la de peticin de lectura que realiza el master sobre el slave. Una vez realizada la peticin el master
abandona el bus. Cuando el slave dispone del dato ledo, inicia un ciclo de bus actuando como master para enviar el dato al
antiguo master, que ahora acta como slave.
Direccin Slave
Direccin Master
Direccin
Master SYNC
Slave SYNC
Datos
direccin
Master Slave
dato
Slave Master
3. Protocolos de arbitraje
La demanda para utilizar el bus en un computador puede provenir de diferentes unidades, no slo 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 operacin
con la memoria. Los procesadores de E/S necesitan acceder al bus no slo para realizar las transferencias de datos por
DMA, sino tambin para leer su programa de canal. Por supuesto, si el sistema es multiprocesador (ms de una CPU
con memoria compartida) los candidatos al uso del bus aumentan.
Para garantizar que en todo momento slo una unidad acceda al bus, se utilizan los protocolos de arbitraje. Los
protocolos de arbitraje organizan el uso compartido del bus, estableciendo prioridades cuando ms de una unidad
solicita su utilizacin 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 fsicamente 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 gestin 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.
3.1 Protocolo de encadenamiento (daisy chaining) de dos seales
Es el protocolo centralizado ms sencillo ya que utiliza slo dos seales encadenadas, una de peticin del bus y
otra de concesin.
34
El master que quiere acceder al bus activa la seal de peticin (out) y los dems masters la propagan hasta el
rbitro. El rbitro activa la seal de concesin que es propagada por los masters que no solicitaron el acceso al bus. El
master que recibe la seal de concesin y tiene una peticin pendiente toma el control del bus. Si un master recibe una
seal de peticin mientras est accediendo al bus, bloquea su propagacin al rbitro hasta que finalice la utilizacin del
bus.
La prioridad viene determinada por la proximidad al rbitro.
concesin
peticin
in
out
in
out
M1
M2
out in
out in
in
out
Mn
out in
ARBITRO
BUS
M1
M2
Mn
peticin
ARBITRO
ocupacin
BUS
35
realiza la seleccin del siguiente master. Para ello se aade una cuarta lnea al esquema anterior, la lnea de
reconocimiento.
concesin
M1
M2
Mn
peticin
ARBITRO
ocupacin
reconocimiento
BUS
La lnea de reconocimiento la activa un master que solicit el bus (activ peticin) y recibi la concesin pero la
lnea de ocupacin estaba activa (bus ocupado). Cuando el rbitro recibe la activacin de reconocimiento inhibe su
actuacin, es decir, deja de atender la seal de peticin y generar la de concesin. El master queda en espera para ocupar el
bus tan pronto lo abandone su actual usuario, que lo har desactivando la seal de ocupacin. Cuando esto ocurre, el
master ocupa el bus y desactiva la seal de reconocimiento, con lo que el arbitro recupera su actuacin, procediendo a un
nuevo arbitraje entre los master solicitantes, simultneamente con la operacin de transaccin en el bus. En la siguiente
figura hemos representado el dilogo de seales correspondiente a una ocupacin del bus por el master M1, seguido por el
arbitraje a favor de M2 mientras M1 realiza su transaccin, y terminando con la ocupacin del bus por M2 cuando M1
finaliza:
M1
peticin
M2
M1
M2
concesin
M1
M2
ocupacin
M2
reconocimiento
log2n
M1
M2
Mn
concesin
ARBITRO
peticin
ocupacin
BUS
36
M1
M2
Mn
concesin-1
peticin-1
ARBITRO
concesin-2
peticin-2
concesin-n
peticin-n
BUS
M1
R1
M2
G1
Arbitro 1
R2
P1
M3
G2
G1
Arbitro 2
R3
P2
Mn
G3
G2
Arbitro 3
Rn
P3
Gn
Rn
Arbitro n
Pn
Bucle de prioridad
ocupacin
Si el master Mi no ha activado su lnea de peticin de bus Ri, el Arbitro-i activa la lnea de salida de prioridad Pi.
4 Jerarqua de un bus
Los ordenadores antiguos utilizaban una topologa de bus nico, denominado bus del sistema o backplane, para
conectar procesador, memoria y los mdulos de E/S, tal como la que se muestra en la siguiente figura:
37
Procesador
Red
Memoria
Vdeo
Sin embargo, cuando el nmero de dispositivos conectados a un bus aumenta disminuye su rendimiento. Esto es
debido a dos motivos fundamentales. El primero el aumento del retardo de propagacin de las seales debido al aumento
de longitud de los conductores que dan soporte al bus. Esto afecta especialmente a la propagacin encadenada de la seal
de concesin del bus. El segundo el incremento de demanda de acceso que se produce al aumentar el nmero 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 intil que se origina cuando tienen que realizar transferencias.
Por otra parte, las diferencias en la velocidad de operacin de los dispositivos conectados tambin repercute
negativamente en el rendimiento de un bus. En efecto, los dispositivos lentos pueden ocasionar retrasos importantes a los
rpidos. 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 emplearn 10 ms + 512 KB/ 15.000 KB/s = 44,1 ms. En este tiempo la CPU podra haber ejecutado 0,0441 *
100 * 106 = 4,41 millones de instrucciones.
Para evitar la cada de rendimiento, el sistema de buses se jerarquiza, apareciendo dos buses ms: el bus local, y el
bus de E/S.
Procesador
bus local
Cache
Memoria
Adaptador
de bus
Vdeo
Red
Impresora
Monitor
El bus local es de longitud pequea, 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 asla el trfico
procesador-cach del resto de transferencias del sistema.
El bus de E/S o de expansin reduce el trfico en el bus del sistema, de manera que el procesador puede acceder a
memoria en un fallo de cach mientras realiza una operacin de entrada/salida.
38
Los buses de expansin son buses estndar o abiertos (ISA, EISA, PCI, etc.) es decir, independientes del
computador y con unas caractersticas bien definidas en el correspondiente documento de normalizacin. La existencia de
estos buses permite disear una amplia gama de controladores de perifricos compatibles.
Para conectar los buses del sistema y de expansin se requiere un Adaptador de Bus, dispositivo que permite
adaptar las distintas propiedades de ambos buses: velocidad, carcter sncrono o asncrono, multiplexacin, etc.
El proceso de jerarquizacin se puede complicar ms con otras topologas que den cabida a dispositivos de distinta
velocidad. De esta forma se equilibra mejor el trfico de informacin en sistemas que operan con muchos dispositivos
conectados. En la figura siguiente se muestra una topologa jerrquica en la que se contempla un bus de alta velocidad del
que cuelgan dos buses, uno de expansin para dispositivos rpidos y otro de E/S para dispositivos lentos.
bus local
Procesador
Cache
Memoria
Adaptador
de bus
Vdeo
Adaptador
de bus
Red
Monitor
Adaptador
de bus
Bus de E/S
Bus de expansin
Red
Red
Red
5. Buses normalizados
Las especificaciones de un bus estndar estn perfectamente definidas en un documento de
estandarizacin respaldado por alguna sociedad de prestigio en el rea (IEEE, etc.). En las especificaciones
se distinguen varios niveles:
Nivel mecnico, en el que se recoge la forma y tamao de los conectores, el nmero de contactos
por conector y el nmero de dispositivos que soporta el bus.
39
Nivel elctrico, en el que se especifican los valores de tensin de las diferentes seales,
polarizacin, etc.
Nivel lgico, especifica la funcin de cada seal del bus: direcciones, datos, control, etc.
El bus PCI puede configurarse como un bus de 32 o 64 bits. La siguiente tabla define las lneas ms importantes
obligatorias en el PCI:
CLK (reloj)
RST# (reset)
Hace que todos los registros y seales especficas del PCI pasen al estado inicial.
C/BE[3:0]#
Activada por el master para indicar el comienzo y la duracin de una transferencia. Las activa al
comienzo y la desactiva al final de la fase de datos.
IRDY#
Seal de master preparado (Initiator Ready). La proporciona el master actual del bus (el iniciador de
la transaccin). Durante una lectura, indica que el master est preparado para aceptar datos; durante
una escritura indica que el dato vlido est en AD.
TRDY#
DEVSEL#
Seal de slave (dispositivo) seleccionado (Device Select). Activada por el slave cuando ha reconocido
su direccin.
Seales de arbitraje
REO#
Indica al rbitro que el dispositivo correspondiente solicita utilizar el bus. Es una lnea punto-a-punto
especfica para cada dispositivo.
GNT#
Indica al dispositivo que el rbitro le ha cedido el acceso al bus. Es una lnea punto-a-punto especfica
para cada dispositivo.
5.1.2 Ordenes
40
La actividad del bus consiste en transferencias entre dos elementos, denominndose maestro al que inicia la
transaccin. Cuando un maestro del bus adquiere el control del mismo, determina el tipo de transferencia que se producir
a continuacin. Los tipos, entre otros son los siguientes:
Reconocimiento de interrupcin
Lectura de E/S
Escritura en E/S
Lectura de memoria
Escritura en memoria
Toda transferencia de datos en el bus PCI es una transaccin nica, que consta de una fase de direccionamiento y una
o ms fases de datos. La siguiente figura muestra la temporizacin de una operacin de lectura. Todos los eventos se
sincronizan en las transiciones de bajada del reloj, cosa que sucede a la mitad de cada ciclo de reloj.
1
CLK
a
FRAME
h
d
AD
direccion
dato-1
b
C/BE
dato-2
dato-3
lectura
byte activo
byte activo
byte activo
IRDY
i
f
TRDY
DEVSEL
fase de
direccin
fase de
datos
fase de
datos
fase de
datos
Los dispositivos interpretan las seales del bus en los flancos de subida, al comienzo del ciclo. A continuacin, se
describen los eventos significativos sealados en el diagrama:
a)
Una vez que el master ha obtenido el control del bus, inicia la transaccin:
b)
c)
El master deja libre las lneas AD del bus y cambia la informacin de las lneas C/BE para indicar qu lneas AD
se utilizan para transportar datos (de 1 a 4 bytes). Tambin activa IRDY para indicar que est preparado para
recibir el primer dato (*).
41
d)
El slave activa DEVSEL para indicar que ha reconocido su direccin. Despus sita el dato solicitado en las lneas
AD y activa TRDY para indicar que hay un dato vlido en el bus.
e)
El master lee el dato al comienzo del ciclo de reloj 4 y cambia las lneas C/BE segn se necesite para la prxima
lectura.
f)
En este ejemplo el slave necesita algn tiempo para preparar el segundo bloque de datos para la transmisin. Por
tanto desactiva TRDY para sealar al master que no proporcionar un nuevo dato en el prximo ciclo. En
consecuencia el master no lee las lneas de datos al comienzo del quinto ciclo de reloj y no cambia la seal C/BE
durante ese ciclo. El bloque de datos es ledo al comienzo del ciclo de reloj 6.
g)
Durante el ciclo 6 el slave sita el tercer dato en el bus. No obstante, en este ejemplo, el master todava 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 indicrselo al slave. Adems
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 lneas que pueden ser activadas por ms 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 sncrono, en el que cada maestro tiene una seal propia de
peticin (REQ) y cesin (GNT) del bus. Estas lneas se conectan a un rbitro central. La especificacin PCI no indica un
algoritmo particular de arbitraje. El rbitro puede utilizar un procedimiento de primero en llegar primero en servirse, un
procedimiento de cesin cclica (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 direccin sigue una o ms fases de datos consecutivas.
La siguiente figura es un ejemplo en el que se arbitra a cul de los dispositivos A y B se cede el bus. Se produce la
siguiente secuencia:
42
CLK
REQ#-A
a
b
REQ#-B
GNT#-A
e
GNT#-B
d
FRAME
IRDY#
TRDY#
AD
Direccin
Dato
Direccin
acceso A
Dato
acceso B
a)
En algn momento anterior al comienzo del ciclo de reloj 1, A ha activado su seal REQ. El rbitro muestrea esa
seal al comienzo del ciclo de reloj 1.
b)
Durante el ciclo de reloj 1, B solicita el uso del bus activando su seal REQ.
c)
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. Adems, encuentra IRDY y TRDY desactivados, indicando que el bus est libre. En consecuencia, activa
FRAME y coloca la informacin de direccin en el bus de direcciones, y la orden correspondiente en las lneas
C/BE. Adems mantiene activa REQ-A, puesto que tiene que realizar otra transferencia despus de la actual.
e)
El rbitro del bus muestrea todas las lneas GNT al comienzo del ciclo 3, y toma la decisin de ceder el bus a B
para la siguiente transaccin. 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. Adems, desactiva su lnea REQ, puesto que slo 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).
5.2 Bus USB (Universal Serial Bus)
43
El bus USB (Universal Serial Bus) es un bus normalizado para la conexin de perifricos, desarrollado por
empresas de informtica y telecomunicaciones (7 compaas: Compaq, DEC, IBM, Intel, Microsoft, NEC y Northern
Telecom). Permite conectar de forma sencilla dispositivos perifricos al computador, sin necesidad de reiniciarlo ni de
configurar el sistema. Se pueden conectar hasta 127 dispositivos, con una longitud mxima de cable de 5 metros para cada
uno, con lo que una conexin en cadena permitira 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 rpidos, como CD-ROM , mdems, etc. Utiliza un cable de cuatro hilos, dos para
datos y dos para alimentacin. El bus USB est organizado en una estructura de rbol descendente, con unos elementos
especiales, llamados hubs que encaminan las seales desde un dispositivo al host o viceversa. En la raz 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 tambin son
dispositivos USB. A un hub se puede conectar uno o ms dispositivos, que a su vez pueden ser otros hubs.
Teclado
Ratn
Monitor
Teclado
Mic
Host(CPU)
Scaner
Telfono
Hub
Cuando se conecta un dispositivo, se detecta la diferencia de tensin en la red USB y procede a determinar las
caractersticas del dispositivo (vendedor, funcionalidad, ancho de banda requerido, etc.). El host le asigna una direccin
nica ID para diferenciarlo del resto de los dispositivos de la red USB. Despus el SO carga los drivers del dispositivo,
solicitndolos 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:
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 conexin en operacin.
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 mayora de los dispositivos que se conectan a este puerto, resulta pequea
cuando conectamos varios dispositivos sin fuente de alimentacin 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 entraran en colapso.
La proteccin de los dispositivos lentos de los rpidos ha sido siempre un problema importante en el diseo redes
mixtas, como es USB. El hub est compuesto por dos unidades principales: el Controlador y el Repetidor.
El Repetidor tiene la funcin de analizar, corregir y retransmitir la informacin que llega al hub hacia los puertos del
mismo. Contiene una memoria de varios registros para sus funciones.
44
El Controlador es una pequea CPU de supervisin de las mltiples funciones realiza un hub.
Todos los dispositivos conectados acceden al canal o medio para transmitir sus datos siguiendo un protocolo
administracin del host anlogo al de token ring, que consecutivamente va dando la posibilidad de transmisin a cada
perifrico.
5.2.1 Arquitectura
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 )
CP U
Bu s
Da t os
Bu s
Tr a n sm it
Receive
F IF Os
Transceiver El cable USB dispone de solo cuatro hilos: Vbus, D+, D- y GND. La informacin 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 funcin de serializar y paralelizar las transmisiones, adems maneja los
protocolos de comunicacin, las secuencias de paquetes, el control CRC y la codificacin 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 atencin para diversas acciones a travs de interrupciones.
FIFOs Los controladores tpicos disponen de un total de 8 buffer tipo FIFO, cuatro destinadas a la transmisin y
cuatro a la recepcin de datos. Tanto para la transmisin como para la recepcin, los buffer soportan cuatro tareas o
funciones, numeradas de 0 a 3.
5.2.2 Protocolo
Toda transferencia de datos o transaccin que emplee el bus, involucra al menos tres paquetes de datos. Cada
transaccin se da cuando el host decide qu dispositivo har uso del bus. Para ello enva un paquete al dispositivo
especfico. Cada dispositivo tiene un nmero de identificacin, asignado por el Controlador de host cuando arranca el
computador o cuando un se conecta un dispositivo nuevo al sistema. De esta forma, cada perifrico puede determinar si es
el receptor de un paquete de datos. Tcnicamente un paquete de datos se denomina Token Packet.
45
Este protocolo tiene un sistema muy eficiente de recuperacin de errores, empleando uno de los modelos ms
seguros como es el CRC (Cdigo de Redundancia Cclica). Y puede estar implementado al nivel de software y/o hardware
de manera configurable.
5.2.3 Modos de transmisin
Asncrona
Sncrona
Bulk
La transmisin Bulk, es una comunicacin no peridica, 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 imgenes o vdeo, donde se requiere una gran capacidad de transferencia en poco tiempo.
Versiones
La especificacin original SCSI, la SCSI-1, se desarroll en los aos 80. SCSI-1 utiliza 8 lneas 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 ms notables fueron la expansin opcional a 16 o 32 lneas
de datos y el aumento de la frecuencia de reloj a 10 MHz. Como resultado se tiene una velocidad de datos mxima 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 perifrico 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:
Bus Libre: ningn dispositivo est utilizando el bus, est disponible.
Arbitraje: determina el dispositivo que toma control del bus, de manera que pueda iniciar o reanudar una operacin
de E/S.
Seleccin: de un dispositivo para realizar una operacin, por ejemplo, una orden de lectura o escritura.
Reseleccin: permite que el dispositivo seleccionado se vuelva a conectar al iniciador para reanudar una operacin
iniciada previamente, pero suspendida por el dispositivo.
46
Fase de
bus libre
Fase de
arbitraje
Fase de
seleccin o
reseleccin
Fase de
orden, datos,
estado y mensaje
Despus de conectarse el sistema, o despus 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 seleccin o reseleccin, en la que se designa un iniciador y
un dispositivo seleccionado para realizar la transferencia. Despus de determinados los dos dispositivos, se producir una o
ms fases de transferencia de informacin entre ambos (fases de orden, datos, estado y mensaje). La fase final de
transferencia de informacin es normalmente la fase de entrada de mensaje, en la que un mensaje de desconexin o de
orden completa se transfiere al iniciador, seguida de una fase de bus libre. Una caracterstica importante del bus SCSI es la
capacidad de reseleccin. Si una orden enviada necesita algn tiempo para completarse, el dispositivo seleccionado puede
liberar el bus y volverse a conectar al iniciador ms 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 operacin sin necesidad de acceder al bus.
Lneas de seal
BSY: Bus ocupado, activada por el iniciador o dispositivo seleccionado
SEL: Seleccin de un dispositivo por el iniciador o del iniciador por un dispositivo
C/D: Indicacin por el dispositivo si el bus de datos lleva informacin de control (orden, estado o
mensaje) o datos
I/O: Control por el dispositivo de la direccin del movimiento de datos en el bus de datos.
REQ: Peticin por el dispositivo de una transferencia de informacin o datos.
ACK: Reconocimiento por el iniciador de la seal de REQ del dispositivo.
DB(7-0): Bus de datos
Operacin (temporizacin)
Para aclarar el papel de cada seal en las distintas fases (estados) del bus, analizaremos una
operacin de lectura que transfiere datos desde un dispositivo perifrico al iniciador (computador). Esta
sigue las siguientes fases:
47
Arbitraje
Seleccin
Orden
Transferencia de datos
Estado
Mensaje
El arbitraje se realiza con la seal BSY y las 8 seales de datos, la 7 asignada al computador, y las
otras 7 asignadas a otros tantos dispositivos (7 es el nmero mximo de dispositivos que se pueden
conectar al SCSI-1). El dispositivo que quiere acceder al bus activa BSY y su seal de datos asociada.
Entre las seales de datos existe una prioridad, siendo la 7 la ms prioritaria y la 0 la menos prioritaria.
Cada dispositivo conoce si puede acceder al bus leyendo las lneas de datos. Si no hay otra activa con
mayor prioridad acceder al bus. En nuestro caso es la CPU quien accede (mxima prioridad) para realizar
la lectura.
El dispositivo que ha ganado el arbitraje se convierte en el iniciador y comienza la fase de seleccin
del dispositivo con el que quiere realizar la transaccin. Para eso activa la seal SEL y las dos lneas de
datos: la suya propia y la del dispositivo con el que quiere conectar. El dispositivo reconoce su
identificacin activando la seal BSY que ha desactivado previamente el iniciador despus de su uso en el
arbitraje.
Despus se pasa a la fase de orden en la que el iniciador transmite al dispositivo en forma
asncrona el conjunto de bytes que componen la orden a ejecutar (lectura en nuestro caso). El sincronismo
se realiza con la ayuda de las seales conocidas REQ (controlada por el dispositivo y leda por el iniciador)
y ACK (controlada por el iniciador y leda por el dispositivo).
Una vez que el dispositivo conoce que es una orden de lectura se pasa a la fase de transmisin de
datos que de nuevo se realiza byte a byte de forma asncrona con la ayuda de REQ y ACK..
Finalizada la transmisin el dispositivo pasa el bus a la fase de estado en la que transmite un byte
en el que se codifica que la transmisin se ha realizado con xito.
Finalmente el dispositivo hace pasar al bus a la fase de mensaje en la que se transmite un byte con
el mensaje de orden completa.
El diagrama de tiempos para la orden de lectura con las principales seales implicadas sera el
siguiente:
BSY
SEL
C/D
I/O
REQ
ACK
DB(7-0)
byte orden
Arbitraje
Seleccin
byte orden
Orden
gyte datos
byte datos
Datos (entrada)
byte estado
Estado
orden completa
Mensaje
Mensajes
Orden completa
Desconexin
48
49