Está en la página 1de 272

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Tema 1: Introduccin a la estructura de computadores


1. Objetivos de la asignatura.
2. Niveles de descripcin de un computador.
3. Estructura bsica de un computador convencional.
4. Evolucin histrica: tecnologa y arquitectura.
5. Lenguajes de descripcin hardware.

1. Objetivos de la asignatura
La arquitectura de un computador est constituida por el conjunto de funcionalidades
disponibles para un programador que utiliza el lenguaje 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)

Una metodologa de anlisis y sntesis de los elementos de salida en trminos de los de


entrada.

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

computador digital:
APLICACIONES

ALGORITMOS

LENGUAJES DE ALTO NIVEL


SOFTWARE BASICO (S.O.)

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Comentaremos en los subapartados siguientes cada uno de estos niveles.


Nivel Fsico
En el nivel fsico se manipulan como elementos de entrada las formas geomtricas que
se corresponden con las mscaras de difusin utilizadas en el proceso de fabricacin de los
circuitos integrados del computador. Determinadas disposiciones de estas formas representan
dispositivos electrnicos concretos, tales como transistores, resistencias, etc., que son los
elementos de salida del nivel fsico. En este nivel se suele utilizar como herramienta de estudio
software de manipulacin grfica con restricciones.

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

Circ u ito e l c tric o

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.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

M em oria

R egistros

R epertorio d e in stru ccion es


LDR Ri, Dj
STR Ri, Dj
ADD Ri, Rj

En primer lugar est el planteamiento CISC (Complex Instruction Set Computers) que
define un repertorio de instrucciones bastante complejo y numeroso, con muchos tipos de
direccionamiento y muchos modos de control, pretendiendo reducir la distancia 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.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

Inconvenientes de la divisin entre niveles


El establecimiento de niveles de abstraccin en el estudio de un computador hace posible
acotar su complejidad al utilizar metodologas de anlisis y sntesis propias en cada nivel, permitiendo
que dentro de un nivel el usuario pueda abstraerse de lo que ocurre en los dems niveles. Este
planteamiento que facilita sin duda el estudio del computador presenta sin embargo algunas
dificultades cuando se contempla el problema de la optimizacin. En efecto, a la hora de implementar
una especificacin no slo deben cumplirse todos los requerimientos funcionales de la misma,
adems se deben optimizar ciertas funciones de calidad que generalmente tienen que ver con la
velocidad (maximizacin) y el costo (minimizacin). En efecto, existen ocasiones en las que
contemplar tan solo los niveles frontera de un nivel en el que se plantea un problema de diseo
puede dar lugar a la imposibilidad de optimizar la implementacin. A ttulo de ejemplo citaremos dos
casos en los que se presenta esta situacin. El primero entre los niveles elctrico y lgico, y el
segundo entre los niveles lenguajes de alto nivel y arquitectura (repertorio de instrucciones)
1) Niveles elctrico <--> lgico Si nos planteamos el diseo de un multiplexor con
conmutadores bidireccionales (tecnologa NMOS esttica) respetando los niveles de diseo,
obtendramos en primer lugar el esquema lgico (con puertas) del multiplexor, y despus
expresaramos cada puerta lgica en trminos de los conmutadores bidireccionales.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

X3
X2

X3
X2

MUX

X1
X1

X0
X0

El diseo resultante es ms costoso (mayor nmero de conmutadores) que el que podemos


obtener si planteamos el diseo directamente con conmutadores:

X3

S1

S0

S1

S0

S1

S0

S1

S0

X2

X1

X0

2) Niveles lenguaje de alto nivel <--> arquitectura


En este caso un compilador, para optimizar el cdigo mquina que genera (mayor velocidad),

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Programa principal
I1
I2
.
.
.Ii
Ii+1
.

seal de interrupcin
lnea de interrupcin

.In
Rutina de tratamiento
i1
i2
.
.
im

b) Sistema de memoria cache, que permite disminuir el tiempo de acceso a la memoria


principal(Mp) ubicando una memoria de menor tamao y mayor velocidad (memoria cache, Mc)
entre la CPU y Mp. El sistema explota la localidad de referencia de los programas haciendo que
Mc contenga en cada momento los bloques de Mp ms referenciados, y evitando as que la CPU
tenga que acceder a Mp:
CPU
palbras
Memoria cache
(Mc)
bloques
Memmoria principal
(Mp)

c) Sistema de memoria virtual, que permite la ejecucin de programas cuyo tamao


supere el de la Mp. Para ello el sistema mantiene en Mp, de forma transparente para el
programador, tan slo el conjunto de pginas activas (con mayor probabilidad de ser
referenciadas) del programa en ejecucin. Las restantes pginas que completan el programa
residen en la memoria secundaria, hasta que son referenciadas, en cuyo caso el sistema las
activa llevndolas a Mp:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Memoria principal
(Mp)

pginas

Memoria secundaria
(Ms)

4. Evolucin histrica: tecnologa, estructura y arquitectura


La velocidad de procesamiento de informacin de un computador est determinada
bsicamente por tres elementos: arquitectura, organizacin (o estructura) y tecnologa. Podemos
analizar la influencia de estos elementos en la velocidad de procesamiento de informacin de un
computador teniendo en cuenta que el tiempo T de ejecucin de un programa se puede expresar
como el producto de tres factores: el nmero de instrucciones del programa (N), el nmero
medio de ciclos por instruccin (CPI), y el tiempo de ciclo (Tc), como hemos representado en la
siguiente figura:

Tc

P r ogr a m a
1 ciclo

I1

3 ciclos

I2

2 ciclos

I3

CP I (n de ciclos m edio/in st r u ccin )

in st r u ccion es
.

t iem po

10

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

T = N * CPI * Tc

Arquitectura del computador


Compilador

Organizacin del computador


Tecnologa
Arquitectura del computador
Organizacin del computador

T
N
CPI
Tc

=
=
=
=

tiempo de ejecucin del programa


nmero de instrucciones del programa
nmero medio de ciclos por instruccin
tiempo de ciclo

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

Las organizaciones y arquitecturas paralelas consiguen que en ciertos instantes de


tiempo el computador procese simultneamente ms de una operacin bsica. La simultaneidad
temporal se consigue fundamentalmente con dos tcnicas: el paralelismo y la segmentacin. La
primera ejecuta simultneamente varias operaciones independientes replicando el nmero de
operadores hardware. La segunda descompone el operador y la operacin correspondiente en
etapas secuenciales y autnomas, de manera que simultneamente se puedan ejecutar etapas
diferentes de varias operaciones. Ambas tcnicas se consideran como dos formas del
paralelismo: el paralelismo espacial o replicacin la primera, y el paralelismo temporal la
segunda.
La idea bsica de la segmentacin estaba ya latente en la propuesta de von Neumann
para construir el primer computador de programa almacenado. Al hablar sobre las tcnicas de
entrada/salida, sugera la conveniencia de disponer un buffer que permitiese el solapamiento

11

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

de la ejecucin del programa con las operaciones de E/S, es decir, una forma primaria de
procesamiento segmentado.
Procesadores Segmentados

Se trata de arquitecturas monoprocesador que operan con una organizacin interna en


la que se segmenta la ejecucin de las instrucciones a fin de iniciar una (y finalizar otra) cada
ciclo de operacin. Sin embargo este objetivo lmite difcilmente llega a conseguirse debido a los
riesgos estructurales, las dependencias de datos, las bifurcaciones y las excepciones. Para
reducir al mximo el efecto de tales ineficiencias se utilizan tcnicas software como la
reordenacin esttica de instrucciones, el renombramiento de registros, y los saltos retardados; y
tcnicas hardware como el adelantamiento (forwarding), la reordenacin dinmica de
instrucciones y la prediccin dinmica de saltos.
B squ eda

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Un ida d
de
B squ eda

Un ida d
de
E m isin
de
In st r u ccion es

Un ida d de ejecu cin 1

va 1

Un ida d de ejecu cin 2

va 2

Un ida d de ejecu cin 3

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

Un ida d de ejecu cin 1

DE C

Un ida d de ejecu cin

DE C

Un ida d de ejecu cin 3

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Un ida d a r it m t ica segm en t a da

Regist r os

Un ida d a r it m t ica segm en t a da

Regist r os

Un ida d a r it m t ica segm en t a da

Multiprocesadores de Memoria Compartida


Se trata de arquitecturas compuestas por un conjunto de procesadores que acceden a
una nica memoria comn a travs de una red de interconexin. Utilizan memorias cache
locales para las que hay que resolver el problema de su coherencia con respecto a la memoria
principal y entre s. Las soluciones que se adoptan tienen un mayor o menor soporte hardware y
dependen mucho de la red de interconexin. Otro problema que plantean estas arquitecturas es
el de la sincronizacin de los diferentes procesadores cuando participan de una tarea comn.
Para ello es necesario disponer del soporte hardware en forma de instrucciones mquina del tipo
TEST&SET, TEST&AND, etc. que permiten implementar secciones crticas y otros mecanismos
de sincronizacin a nivel del sistema operativo.
P r ocesa dor
P1

P r ocesa dor
P2

P r ocesa dor
Pn

Red de in t er con exin


(bu s, r ed m u lt iet a pa , cr ossba r )

Mem or ia com n com pa r t ida

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Mem or ia
M1

Mem or ia
Mn

P r ocesa dor
P1

P r ocesa dor
Pn

Red de in t er con exin est t ica

5. Lenguajes de descripcin hardware.


Los lenguajes de descripcin hardware son lenguajes de alto nivel con una sintaxis
similar a los de programacin (C, ADA, Pascal, Modula, etc.) y una semntica que permite el
modelado y simulacin de los dispositivos hardware a diferentes niveles de abstraccin. Los
primeros lenguajes de este tipo slo pretendan servir de vehculo de comunicacin del diseo.
Se trataba de formalismos de especificacin de los dispositivos hardware desarrollados por
instituciones universitarias o por industrias electrnicas que alcanzaron escasa difusin. Pero los
actuales lenguajes han adquirido un alto grado de estandarizacin y han adoptado los nuevos
conceptos de la ingeniera software, permitiendo la verificacin de la especificacin del diseo
mediante simulacin. Se utilizan como vehculo de entrada a muchas herramientas de diseo
automtico. Revisaremos brevemente algunos de estos lenguajes
5.1. Lenguajes precursores
CDL (Computer Design Language) fue desarrollado por Yaohan Chu a comienzo de los aos
60 bajo el principio de separacin de la componente lgica y electrnica de un computador
digital. CDL refleja directamente el hardware y sus operaciones, es decir, existe una
correspondencia uno-a-uno entre los objetos y operaciones hardware (registros, RAMs, relojes,
suma, cuenta, etc.) y las construcciones del lenguaje. La primera versin del simulador CDL para
IBM 7090 estuvo disponible en 1968, y la versin tercera para Univac pocos aos ms tarde. Se
utiliz en universidades y en la industria del radar y aeronutica.
DDL
(Digital systems Design Language) se desarroll a mediados de los 60 en la
Universidad de Wisconsin con varios objetivos: precisin y concisin para facilitar la
especificacin de los diseos, potencia suficiente para modelar sistemas complejos,
independencia respecto a cualquier tecnologa o procedimiento de diseo, capacidad de
especificacin a diferentes niveles de abstraccin y, finalmente, una sintaxis y una semntica
que permitieran la documentacin jerrquica del diseo.
AHPL (A Hardware Programming Language) fue propuesto por F.J. Hill y G.R. Peterson unos meses
ms tarde que el CDL y DDL, y apareci publicado por primera vez en 1973 en la edicin original de
Digital Systems: Hardware Organization and Design. Los autores concibieron AHPL como un lenguaje
de sntesis: todo dispositivo sncrono que pudiese ser implementado en hardware deba ser
expresable en AHPL de manera tal que se pudiese traducir a una realizacin fsica siguiendo un
conjunto simple de reglas. En opinin de uno de sus autores, F.J. Hill, que particip como
miembro del grupo de trabajo que formul las especificaciones originales para VHDL, la
existencia de AHPL favoreci la incorporacin de mecanismos para permitir el proceso de
sntesis en VHDL.

15

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

ISPS

(Instruction Set Processor Specifications) con este lenguaje se di un paso importante


hacia la formalizacin del proceso de diseo a niveles de comportamiento. Adems de la
simulacin y la sntesis, ISPS se utiliz en la generacin de software, la verificacin de
programas y la evaluacin de arquitecturas. ISPS favoreci los aspectos de comportamiento
sobre los estructurales pero sin eliminarlos completamente.

TI-HDL (Texas Instruments-HDL) es un lenguaje de descripcin jerrquica del diseo,


estructurado en bloques y basado en texto, que se ha utilizado principalmente en el diseo de
circuitos integrados. Procede de antiguos lenguajes usados all por 1968, concretamente el
TIBSD (TI Boolean System Description), desarrollado como lenguaje de entrada de datos para
un sistema CAD de circuitos impresos, y Fusim (Functional Simulator), utilizado para describir
modelos de alto nivel de microprocesadores y para generar prototipos de patrones de tests.
5.2. Lenguajes actuales
Verilog es un lenguaje de descripcin hardware diseado por la compaa Cadence Design
Systems Inc., que se ha venido utilizando como lenguaje del simulador digital Cadence. El uso
de Verilog est promovido por la Open Verilog International (OVI), que public en octubre del 91
la primera versin del Hardware Description Language Reference Manual. En Verilog la unidad
de diseo fundamental es el mdulo, que describe un componente hardware con su interfaz y
contenido. Desde un punto de vista funcional, un mdulo Verilog contiene la informacin de una
entidad y su correspondiente arquitectura VHDL. Verilog no proporciona compilacin
independiente de mdulos: todos los mdulos relacionados con el mismo diseo y simulacin
deben estar en el mismo archivo.
UDL/I (Unified Design Language for Integrated circuits) es un lenguaje de descripcin
hardware que se viene desarrollando desde 1989 por la Japan Electronic Industry Development
Association, dependiente de importantes compaas japonesas tales como NTT. Una de las
caractersticas de UDL/I es que pretende ser especfico para modelar circuitos integrados. La
nica unidad de diseo existente en UDL/I es la descripcin de diseo, que comprende varias
subentidades denominadas descripciones de mdulos. Una descripcin de diseo contiene el
modelo de un circuito integrado que consta de varias subunidades o mdulos, cada uno de los
cuales est especificado por una descripcin de mdulo.
VHDL (VHSIC Hardware Description Language) es un lenguaje impulsado por el Departamento de
Defensa de los Estados Unidos dentro del programa VHSIC (Very High Speed Integrated Circuits) y
estandarizado por IEEE Computer Society. Con VHDL se puede estudiar un sistema digital a diferentes
niveles de abstraccin dentro de un nico lenguaje de programacin, acelerando considerablemente las
diferentes fases diseo y proporcionando un mejor conocimiento del mismo cuando se aborda la fase de
implementacin fsica. VHDL es un lenguaje con una semntica orientada a la simulacin. Por ello, su
principal dominio de aplicacin es el modelado de dispositivos hardware para comprobar su correccin
funcional. Sin embargo, como ilustra la siguiente figura sus reas de aplicacin son cada vez ms
numerosas, y hoy da se utiliza en la sntesis automtica, la diagnosis de fallos, la verificacin formal, el
modelado de rendimiento y la documentacin

16

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

La diagnosis de fallos en circuitos digitales se puede plantear a partir de las descripciones VHDL
de los mismos. En efecto, en lugar de identificar la parte de circuito que falla, podemos localizar la parte de
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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

S OF TWAR E

AR QU ITECTU RA
VHD L

TRAN S F EREN CIA D E REGIS TROS

LGICO
ELECTRICO
F S ICO

19

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Tema 2: Formato de las instrucciones y modos de direccionamiento


1. Formato de las instrucciones
2. Propiedades generales del direccionamiento
3. Modos de direccionamiento.
4. Soporte de los modos de direccionamiento a los lenguajes de alto nivel

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 --

(MUL, real, indirecto)


ADD

XOR

SUB

MUL

operaciones

entero -natural -real --

tipo de datos

1. Formato de las instrucciones


Las informaciones relativas a los cuatro factores anteriores se codifican en cada una de las
instrucciones siguiendo un formato preestablecido. El formato determinar la longitud en bits de las

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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)

Instruccin siguiente (IS)


CO

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.

1.1 Diseo del repertorio de instrucciones.


Los repertorios de instrucciones podemos clasificarlos atendiendo a los siguientes criterios:
A) Nmero de operandos explcitos por instruccin
a) 3 operandos explcitos

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

Reduce el tamao de la instruccin


Se pierde uno de los operandos
c) 1 operando explcito
CO

OP1 (fuente

ejemplo:

ADD B

Acumulador <Acumulador> + B

Supone que fuente 1 y destino es un registro predeterminado (acumulador)


Se pierde un operando fuente
d) 0 operandos explcitos
CO

ejemplo:

ADD

cima de pila <cima de pila> + <cima de pila - 1>

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Se trata de computadores que trabajan sobre una pila


Ejemplo:
3 operandos
ADD C, D, C
SUB A, B, A
MUL A, C, E

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

B) Forma de almacenar operandos en la CPU


a) Arquitectura de pila (HP 3000/70)
b) Arquitectura de acumulador (Motorola 6809)
c) Arquitectura de registros de propsito general (IBM 360)
Ejemplo: cdigo mquina en cada una de las tres alternativas correspondiente a la sentencia de
asignacin C := A + B
C=A+B
Pila

Acumulador

Conjunto de registros

PUSH A

LOAD

LOAD R1, A

PUSH B

ADD

ADD

ADD

STORE C

POP

R1, B

STORE C, R1

Las arquitecturas de registros de propsito general se clasifican a su vez atendiendo al nmero


mximo de operandos (2 3) que pueden tener las instrucciones de la ALU y cuantos de ellos se
pueden ubicar en memoria:
(operandos - en memoria)
(

) Arquitectura registro-registro (tambin llamada de carga-almacenamiento).


Utilizan tres operandos totales y cero en memoria. Formato de longitud
fija y codificacin simple de las instrucciones que pueden ejecutarse en un
nmero similar de ciclos. Facilitan un modelo simple de generacin de
cdigo apara el compilador. SPARC, MIPS, PowerPC

) Arquitectura registro-memoria. Utilizan dos operandos totales con uno


ubicado en la memoria. Intel 80X86, Motorola 68000

) Arquitectura memoria-memoria. Utilizan tres operandos totales con la


posibilidad de ser ubicados los tres en memoria. VAX

Cdigos de operacin de longitud fija y variable


n

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

En este caso se pueden codificar 16 instrucciones de 2 operandos: uno en registro y el otro en


memoria
2) Si queremos extender el CO se puede utilizar una de las 16 combinaciones del CO (quedaran
15 con 2 operandos), por ejemplo CO = 1111, dando la posibilidad de codificar 16 instrucciones de
1 operando en memoria. Si queremos seguir extendiendo el CO podemos utilizar CO = 1111 1111
(quedaran 15 con 1 operando) para definir instrucciones sin operandos (216 = 65.536)
En la siguiente tabla se resume el proceso descrito.
R
0000
R
0001
.
.
.
.
.
.
R
1110
1111 0000
1111 0001
.
.
.
1111 1110
1111 1111
1111 1111

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)

Otra alternativa: dedicar 2 bits para indicar si la instruccin tiene 0, 1 o 2 operandos:


2
L

2
CO

16

OP

En este caso podemos codificar los siguientes grupos de instrucciones:


L = 00 CO de 2 bits 4 instrucciones de 2 operandos
L = 01 CO de 6 bits 64 instrucciones de 1 operando
L = 10 CO de 22 bits 4.194.304 instrucciones de 0 operandos
Optimizacin del CO variable en funcin de la frecuencia de las instrucciones.
Una posibilidad a la hora de codificar las operaciones de un repertorio de instrucciones es utilizar
algn criterio de ptimo. En este sentido tenemos dos alternativas:
a) Frecuencia de aparicin en el programa optimizacin de memoria
b) Frecuencia de ejecucin en el programa optimizacin del trfico CPU-Memoria
La alternativa b) es la ms interesante en la actualidad, pues prima la velocidad de ejecucin sobre

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

la memoria .necesaria para almacenar el programa.


Para optimizar el CO se puede utilizar la codificacin de Huffman que veremos con el siguiente
Ejemplo: Supongamos las siguientes frecuencias de ejecucin de 7 tipos diferentes de
instrucciones:
Tipo de instrucciones

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

Longitud media del cdigo resultante:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

l m = f i l i = 0.53 1 + 0.25 2 + 0.12 3 + 0.003 5 + 0.003 5 + 0.02 5 + 0.02 5 =


i

1.89 _ bits < 3 _ bits

2. Propiedades generales del direccionamiento.


Resolucin
Es la menor cantidad de informacin direccionada por la arquitectura. El mnimo absoluto es un bit,
aunque esta alternativa la utilizan pocos procesadores, por ejemplo, el iAPX432 de Intel (1981)
Requiere un gran nmero de bits para expresar las direcciones de una cierta cantidad de
informacin y mucho tiempo para alinearlos correctamente. Lo ms frecuente en los procesadores
actuales es utilizar resoluciones de 1 o 2 bytes. La resolucin puede ser diferente para
instrucciones y datos aunque lo normal es que coincida.
Resolucin
Instrucciones
Datos

MC68020
16
8

VAX-11
8
8

IBM/370
16
8

B1700
1
1

B6700
48
48

iAPX432
1
8

Orden de los bytes en memoria


El concepto de endian lo introdujo Cohen para expresar la forma como se ordenan los bytes de un
escalar de varios bytes.
Modo big-endian: almacena el byte ms significativo del escalar en la direccin ms baja de
memoria
Modo little-endian: almacena el byte ms significativo del escalar en la direccin ms alta de
memoria.
Ejemplo: el hexadecimal 12 34 56 78 almacenado en la direccin de memoria 184 tendr la
siguiente organizacin en cada uno de los modos:
big-endian
184
12
185
34
186
56
187
78

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

Determinadas mquinas slo permiten accesos alineados


La falta de alineacin implica complicaciones hardware
Los programas con accesos alineados se ejecutan ms rpidamente
Para alinear datos se utiliza una red de alineacin. En el caso de la figura para acceder a una
palabra no alineada sern necesarios 2 accesos para obtener la parte alta y baja

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

32 bits

32 bits
32 bits
32 bits

a la CPU

Espacios de direcciones
En un mismo procesador pueden diferenciarse hasta 3 espacios de direcciones diferentes:
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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Permite el tratamiento de una direccin de memoria como un dato


Permite el paso por referencia de parmetros a subrutinas
Permite referenciar un espacio mayor de direcciones
CO

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

Modos con desplazamiento.


Calculan la direccin efectiva (DE) sumando al contenido de un registro el operando declarado

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

(RD1 <-- <RB>+1)


(RD2 <-- <RB>+2)
(RD1 <-- <RD1> + <RD2>)
(A<RB>+0 <-- <RD1>)

<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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Direccionamiento indexado
DE = <Registro ndice> + OPER; OPER = desplazamiento
Se utiliza para recorrer estructuras lineales como los arrays
Par facilitar su uso se suele complementar con el pre o post incremento o decremento del registro
ndice
Memoria
CO

OPER

DO

Registro Indice

Resumen de los tipos de direccionamiento


Direccionamiento

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

- Registro
Ri = OPER, DO = <Ri>, con Ri cualquier registro

Indirecto registro
- puro
DE = <Ri>, con Ri cualquier registro
Memoria
CO

OPER

Ri
DO
DE

- Indirecto registro con postincremento


DE = <Ri>;
Ri <Ri> + Inc,
CO

con Inc = 1, 2 4 bytes


Memoria

OPER

Ri

+ Inc

DO
DE

- Indirecto registro con predecremento


Ri <Ri> - Dec,
DE = <Ri>,
CO

con Dec = 1, 2 4 bytes


Memoria

OPER

Ri

- Dec

DO
DE

- Indirecto con desplazamiento (= base + desplazamiento)


DE = <Ri> + Despla
Memoria
CO

Despla

DO
DE

Ri

11

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

- Indirecto registro indexado (= base + desplazamiento indexado)


DE = <Ri> + <Rj>xEscala + Despla,
con Escala = 1, 2, 4, 8 bytes

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

- Preindexado (base + desplazamiento indexado indirecto + desplazamiento)


DE = <<Ri> + Despla1 + <Rj>xEscala> + Despla2

12

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

CO

Despla1

Despla2

+
Memoria
Ri

DIR

+
DE

Rj

DO

Escala

Relativo
- Bsico
DE = <CP> + Despla
Memoria
CO

Despla

DO
DE

CP

- Indexado con desplazamiento


DE = <CP> + <Rj>xEscala + Despla
Escala

Memoria
CO

Despla

DO
DE

Rj

CP

13

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

- Indirecto memoria postindexado


DE = <<CP> + Despla1> + <Rj>xEscala + Despla2
CO

Despla1

Despla2
Memoria

DIR

DE

CP

DO
Rj

+
Escala

- Indirecto memoria preindexado


DE = <<CP> + Despla1 + <Rj>xEscala> + despla2
CO

Despla1

Despla2

+
Memoria
CP

Rj

DIR

+
DE

DO

Escala

Modos de direccionamiento del MIPS R-2000


Inmediato
Registro
LA = R
Relativo
DE = <PC> + Despla

14

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Indirecto registro con desplazamiento (= base + desplazamiento)


DE = <Ri> + Despla

Modos de direccionamiento del Pentium II

CO

Registros de uso general


Registro base
Registro ndice
B

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

4. Soporte de los modos de direccionamiento a los lenguajes de alto nivel


Visibilidad en C
Un programa escrito en C no es ms que una coleccin de subprogramas (funciones) en
idntico nivel, dentro del programa principal (Main). Estas funciones pueden llamarse entre s, incluso
de forma recursiva. Las variables locales definidas en una funcin son visibles slo dentro de la funcin.
En cambio las variables globales se definen fuera de la funciones (en la funcin Main) y pueden ser
referenciadas desde cualquiera de ellas.
Las variables locales de una funcin se asignan dinmicamente Estudiaremos ahora los
modos de direccionamiento ms adecuados para satisfacer los requerimientos de los lenguajes de alto nivel.
Estos modos reducirn al mnimo el nmero de instrucciones requeridas para acceder a los elementos de las
diferentes estructuras de datos (array, record, etc.) que soportan estos lenguajes, es decir, para calcular sus
direcciones efectivas. Estos lenguajes presentan una estructura de bloques e incorporan el concepto de
visibilidad de las variables del programa, es decir, las reglas de acceso a las variables de cada uno de los
bloques.
, es decir, cada vez que se activa la funcin. La asignacin tiene lugar dentro de un registro de
activacin (RA) que se ubica en la pila asociada al programa. Dada la naturaleza recursiva de las
llamadas, pueden existir en la pila ms de un RA para la misma funcin (tantos como llamadas).
Supongamos el siguiente perfil de progrma C:
Main( )
{
.
.
.
... = ... fe(...) ...
.
.
.
}
fa (...)
{
.
.
.

fb (...)
{
.
.
.
... = ... fb(...) ...
.
.
.
... = ... fc(...) ...
.
.
.
}

fc (...)
{
.
.
.
... = ... fc(...) ...
.
.
.
... = ... fb(...) ..
.
.
.
}

}
La estructura de este programa sera la siguiente:

fd (...)
{
.
.
.
}
fe (...)
{
.
.
.
... = ... fc(...) ...
.
.
.
}

main

fa

fb

fc

fd

fe

Supongamos que tiene lugar la siguiente secuencia de llamadas:


main fe fc fc fb fb fc
En la pila del programa se ubican los registros de activacin correspondientes a cada una de estas
llamadas, tal como se muestra en la siguiente figura, donde se ha sombreado las variables que pueden
ser accedidas desde la tercera activacin de la funcin fc: las globales y las locales a esta tercera
llamada. Para realizar el acceso se dispone de sendos registros que apuntan a cada uno de estos RA,
el Puntero al Registro de Activacin Global (PRAG) y el Puntero al Registro de Activacin Local (PRAL)

16

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Puntero al Registro de Activacin Local

Visibilidad en Pascal
En los lenguajes de tipo Pascal un bloque puede ser un procedure o una function, y el concepto
de visibilidad adquiere una estructura anidada. Los bloques de un programa de este tipo presentan una
estructura 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

Secuencia de llamada: main Ba Bb Bb Bf Be Bh Bh

17

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

El display de un RA contiene un puntero a cada RAi visible desde RA

Acceso a variables escalares locales o globales (contenido)

RA main

Despla
PRA G

Variable g lobal

RA
(procedimiento
en ejecucin)

Despla
PRA L

Variable local

Variables locales:

DE = <PRAL> + despla direccionamiento base + desplazamiento

Variables globales:

DE = <PRAG> + despla direccionamiento base + desplazamiento

18

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Acceso a variables escalares no locales (contenido)


main

Ba

Bb

Bl

Bc

Bd

Secuencia de llamada: main Ba Ba Bb Bc Bd

RA main

RA Ba

PRAG

(1 llamada)

RA Ba

Despla 2

(2 llamada)

RA Bb
RA Bc

Ubicacin del dato accedido

Despla 1
RA Bd

display

PRAL

DE = <<PRAL> + Despla1> + Despla 2


direccionamiento base + desplazamiento indirecto + desplazamiento

19

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Acceso a variables escalares locales (direccin)

Var. referenciada

RA proc. Ejec.

Despla
Puntero local

PRAL

DE = <<PRAL> + Despla>
direccionamiento base + desplazamiento indirecto

Acceso a variables escalares no locales (direccin)


Var. referenciada

RA proc. refer.

Despla 2

Referencia a var.

Inicio RA referenc.

Despla 1
display

RA proc. Ejec.

PRAL

DE = <<<PRAL> + Despla1> + Despla 2>


direccionamiento base + desplazamiento indirecto + desplazamiento indirecto

20

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Acceso a variables de tipo array locales (contenido)

RA proc. Ejec.
1 elemento

Factor_escala (=1,2,4,8)
Despla
Indexacin

array

RX

n-simo elemento

PRAL

DE = <PRAL> + Despla + <RX>factor_escala


direccionamiento base + desplazamiento indexado

Acceso a variables de tipo array no locales (contenido)


RA proc. referen.
1 elemento

Factor_escala (=1,2,4,8)
Despla 2
Indexacin

array

RX

n-simo elemento

Despla 1

Inicio RA referenc.

display

RA proc. Ejec.

PRAL

DE = <<PRAL> + Despla 1> + Despla 2 + <RX>factor_escala


direccionamiento base + desplazamiento indirecto + desplazamiento indexado

21

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Acceso a variables de tipo array locales (direccin)


Factor_escala (=1,2,4,8)

1 elemento

Indexacin

array

RX

n-simo elemento

RA proc. Ejec.

Despla
Puntero local

PRAL

DE = <<PRAL> + Despla > + <RX>factor_escala


direccionamiento base + desplazamiento indirecto indexado

Acceso a variables de tipo record locales (contenido)


RA proc. ejec.
1 campo

Despla 1
Despla 2

record
n-simo campo

PRAL

DE = <PRAL> + Despla 1 + Despla 2


direccionamiento base + desplazamiento
Despla 1 = direccin e inicio del record
(conocido en tiempo de compilacin)
Despla 2 = posicin en record del campo accedido
(conocido en tiempo de compilacin)

22

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Acceso a variables de tipo record anidados locales (contenido)

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

DE = <PRAL> + Despla 1 + Despla 2 + Despla 23


direccionamiento base + desplazamiento
Despla 1 = direccin e inicio RR
Despla 2 = posicin en RR del campo R
Despla 3 = posicin en R del campo accedido z

(conocido en tiempo de compilacin)


(conocido en tiempo de compilacin)
(conocido en tiempo de compilacin)

Acceso a variables de tipo record locales (direccin)

Despla 2
campo accedido

record

RA proc. ejec.

Despla 1

puntero local

PRAL

DE = <<PRAL> + Despla 1> + Despla 2


direccionamiento base + desplazamiento indirecto + desplazamiento

23

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Apndice (motivacin del direccionamiento indirecto)


Consideremos un computador con una memoria de 4K palabras de 12 bits, un registro acumulador y dos bits
de condicin (Z y N)

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

DIR ECCION /OPE RAN DO

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Tema 3: Formato de los datos y clases de instrucciones


1. Tipos de datos y formatos de representacin.
2. Instrucciones que operan sobre datos.
3. Instrucciones de control del flujo de ejecucin.
4. Soporte de las instrucciones de control a las construcciones de alto nivel

1. Tipos de datos y formatos de representacin.


Nmeros naturales
Representacin binaria

N ( x n1 , x n 2 ,..., x1 , x 0 )
n1

V(N) = 2 . xi
i

i= 0

rango de representacin = [0, 2n - 1]


resolucin = 1
dificultades:
el resultado de la suma puede necesitar n+1 bit
no es posible en general la resta: habra que comprobar que el minuendo es mayor que el
sustraendo
para el producto se necesitan 2n bits
Representacin BCD(Decimal Codificado en Binario)

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

rango de representacin = [-(2n-1 - 1), 2n-1 - 1]


resolucin = 1
dificultades
doble representacin del cero
no es posible en general la resta: habra que comprobar que el minuendo es mayor que el
sustraendo
Complemento a dos

Los nmeros positivos se representan igual que en signo y magnitud


Los nmeros negativos se representan como 2n - magnitud del nmero
Ejemplo: (para n= 8 bits) X = - 50 se representa por
1 0000 0000 = 28
- 0011 0010 = 50 (magnitud de -50)
0 1100 1110 = - 50 en c2

El valor del nmero X se puede expresar en general como:


n 2

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

0 bien pesando slo las posiciones con cero (cuando el nmero es negativo) y sumando 1:
64 + 32 + 16

+ 1 + 1 = 120

Podemos calcular el c2 de un nmero binario complementando bit a bit (c1) y sumado 1:


0 1 0 0 0 0 0 1 = 65
c1 = 1 0 1 1 1 1 1 0
+
1
1 0 1 1 1 1 1 1 = -65

rango de representacin = [-2n-1 , 2n-1 - 1]


resolucin = 1
ventaja: la resta se convierte en suma del c2 del sustraendo

Complemento a uno

Los nmeros positivos se representan igual que en signo y magnitud


Los nmeros negativos se representan como 2n - magnitud del nmero - 1
El valor del nmero X se puede expresar en general como:
n 2

V ( N ) = xn1 (2 n1 + 1) + 2i xi
i =0

rango de representacin = [- 2n-1 - 1, 2n-1 - 1]


resolucin = 1
dificultades
doble representacin del cero
la resta es ms compleja que en c2

Para hallar el c1 de un nmero binario se complementa bit a bit el nmero.

Tabla de representacin de los tres sistemas para n = 4 bits


Nmero decimal Signo y magnitud
Complemento a 1 Complemento a 2
0111
0111
0111
+7
0110
0110
0110
+6
0101
0101
0101
+5
0100
0100
0100
+4
0011
0011
0011
+3
0010
0010
0010
+2
0001
0001
0001
+1
0000
0000
0000
0
-0
1000
1111
No existe
1111
1110
1001
-1
1110
1101
1010
-2
1101
1100
1011
-3
1100
1011
1100
-4
1011
1010
1101
-5
1010
1001
1110
-6
1001
1000
1111
-7
-8
no existe
No existe
1000

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Los nmeros quedaran definidos por:


976.000.000.000.000
0,0000000000000976

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.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

mantisa normalizada M = 0,1bbb...b


con b { 0, 1 }
Como el primer bit de la mantisa es siempre 1 no necesita almacenarse en el campo M, por lo que se
pueden representar mantisas con 24 bits con valores en decimal que van de:
0,5
correspondiente a la mantisa 0,100000000000000000000000
a
1 ( en realidad 1- 2 -24 ) correspondiente a la mantisa 0,111111111111111111111111

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:

V(R) = (-1)s 2 E - 127 M


con el siguiente formato para una longitud de palabra de 32 bits (1 para el signo de la mantisa, 8 para el
exponente, 23 para la magnitud de la mantisa):
31

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

corresponden a las expresiones decimales:


0,8164062 x 2 20
- 0,8164062 x 2 20
0,8164062 x 2 -20
- 0,8164062 x 2 -20

=
=
=
=

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:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

En esta grfica se aprecia la existencia de 5 regiones excluidas de dichos rangos:

regin de desbordamiento negativo


regin de desbordamiento a cero negativo
regin de desbordamiento a cero positivo
regin de desbordamiento positivo

Problemas de la representacin en coma flotante:

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

precisin simple (32 bits)


exponente
0<E<255
0<E<255
0
0
255(todos 1s)
255(todos 1s
255(todos 1s
255(todos 1s
0
0

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
) =
) =
) =
) =

+
+

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

NaN indicadores y silenciosos


Un NaN es un valor simblico codificado en formato de coma flotante. Existen dos tipos: indicadores y
silenciosos. Un NaN indicador seala una condicin de operacin no vlida siempre que aparece como
operando. Permiten representar valores de variables no inicializadas y tratamientos aritmticos no
contemplados en el estndar.
Los NaN silenciosos se propagan en la mayora de las operaciones sin producir excepciones. La siguiente
tabla indica operaciones que producen un NaN silencioso:
Operacin

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:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

a) se coloca un separador despus del primer dgito


b) el siguiente separador se coloca de modo que el fragmento entre separadores sea el
ms corto posible que no haya aparecido previamente.
El proceso contina hasta fragmentar toda la cadena.
Ejemplo: la cadena de bits
101100101001101001000
se fragmentara de la forma siguiente:
1-0-11-00-10-100-110-1001-000
2) Se enumeran los fragmentos.
1 2 3 4 5 6
7
8
9
1-0-11-00-10-100-110-1001-000
Cada fragmento es siempre la concatenacin de un fragmento prefijo aparecido con anterioridad, y de un
bit adicional, 0 1. Por ejemplo, el fragmento nmero 3, 11, es el nmero 1 seguido de un 1; el nmero 6,
100, es el 5 seguido de un 0; y as sucesivamente.
3) Se sustituye cada fragmento por el par (nmero de prefijo, bit adicional). El 0 indicar el
prefijo vaco. En nuestro ejemplo:
(0,1)-(0,0)-(1,1)-(2,0)-(1,0)-(5,0)-(3,0)-(6,1)-(4,0)
4) Se codifican en binario los nmeros de los prefijos.
En nuestro ejemplo, como aparecen siete prefijos, se necesitan tres bits para codificarlos:
(000,1)-(000,0)-(001,1)-(010,0)-(001,0)-(101,0)-(011,0)-(110,1)-(100,0)
5) Se quitan los parntesis y los separadores y obtenemos la cadena de bits comprimida:
000100000011010000101010011011011000
La descompresin se realiza siguiendo el proceso inverso y conociendo el nmero de bits de la
codificacin del prefijo, tres en nuestro ejemplo. Sabemos entonces que cada fragmento est codificado por
cuatro bits, tres para el prefijo y uno para el bit adicional:
000100000011010000101010011011011000
1) 0001-0000-0011-0100-0010-1010-0110-1101-1000
2) (000,1)-(000,0)-(001,1)-(010,0)-(001,0)-(101,0)-(011,0)-(110,1)-(100,0)
3) (0,1)-(0,0)-(1,1)-(2,0)-(1,0)-(5,0)-(3,0)-(6,1)-(4,0)
1 2 3 4 .......
4) 1-0-11-00 .......
En el ejemplo anterior la cadena resultante es ms larga que la original, en contra del propsito del
mtodo. La causa es la poca eficiencia del mtodo para cadenas muy cortas. Cuando se aplica a una cadena
muy larga, los fragmentos crecen en longitud ms rpidamente que las subcadenas de bits necesarias para
su codificacin. Por ejemplo, supongamos que una cadena de 100.000 bits se ha dividido en 1.000
fragmentos con un tamao medio de 100 bits (los primeros sern probablemente ms cortos y los ltimos
ms largos). Para codificar el prefijo solo se necesitan 10 bits (210 = 1024). Por tanto cada fragmento estar
codificado por 11 bits (los 10 del prefijo ms el bit adicional), mientras que su longitud original era de 100
bits. Es decir, el mtodo lograra comprimir el fichero de datos a un 10% de su tamao original.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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)

lo que implica que aproximadamente m 2n .


Para 1MB, que son 8.388.608 bits, tendramos 4.096 fragmentos y necesitaramos slo 12 bits
para describir el prefijo. Por tanto, necesitaramos 13 bits para describir cada fragmento o 53.248 bits para

10

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Tipos de datos en el 68000


Utiliza la alternativa big-endian para ordenar los bytes de las palabras (2 bytes) y dobles palabras (4
bytes), es decir, el byte menos significativo se almacena en la direccin ms baja. Dispone de los siguientes
tipos:
Entero con signo en c2: de 1 byte, 2 bytes y 4 bytes.
Entero sin signo: de 1 byte, 2 bytes y 4 bytes.
BCD empaquetado (2 dgitos d 4 bits en un byte)
Carece de datos en formato de coma flotante
Tipos de datos en el Pentium II
Puede trabajar con tipos de datos de 8 (byte), 16 (palabra), 32 (palabra doble) y 64 (palabra cudruple)
bits de longitud. Los tipos mayores de 1 byte no es necesario que estn alineados en memoria, el
procesador se encarga de ello si no lo estn. Utiliza la alternativa little-endian para ordenar los bytes de las
palabras, dobles palabras y cudruples palabras, es decir, el byte menos significativo se almacena en la
direccin ms baja. Admite una gran variedad de tipos:

11

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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)

2. Instrucciones que operan sobre datos.


En este apartado revisaremos las instrucciones mquina que operan sobre datos. En el siguiente
veremos las que controlan el flujo de ejecucin. Podemos clasificar las instrucciones que operan sobre
datos en los siguientes grupos:
Movimiento o transferencia de datos
Desplazamiento y rotacin
Lgicas y manipulacin de bits
Transformacin de datos
Entrada/salida
Manipulacin de direcciones
En otro apartado estudiaremos las nuevas instrucciones paralelas que operan simultneamente sobre un
conjunto de datos del mismo tipo, conocidas como SIMD (Single Instructions Multiple Data) e
introducidas por primera vez en el Pentium para acelerar las operaciones enteras de las aplicaciones
multimedia (MMX), y ampliadas en el Pentium III a las operaciones paralelas de coma flotante (SSE:
Streaming SIMD Extension), muy frecuentes en las aplicaciones visuales.
2.1 Instrucciones de movimiento o transferencia de datos

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)

MEM --> REG: carga (load)


MEM --> MEM: movimiento(move)
MEM --> PILA: insercin (push)

PILA --> REG: extraccin (pop)


PILA --> MEM: extraccin (pop)

Una instruccin de este tipo deber especificar los siguientes elementos:


Tipo de transferencia. Para especificar el tipo existen dos alternativas:
- Una instruccin genrica, con un nico CO, siendo el operando el que especifica el tipo de
movimiento. Ejemplo MOVE

- 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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Nmero de datos a mover:


- Movimiento simple. Como el ejemplo anterior
- Movimiento mltiple

Ejemplo: MC 68.X
MOVEM

Dir

Tamao Reg.

Dir Memoria

16 o 32 bits

Mscara de la lista de registros

Memoria

Registros

Reg --> Mem


Mem --> Reg

Ejemplo VAX-11
MOVEC

Long. Fuente

Direccin Fuente

Relleno

Long. Destino

Direccin Destino

Memoria

Memoria

Relleno

Long. Fuente = Long. Destino => transferencia total


Long. Fuente > Long. Destino => transferencia parcial: finaliza cuando se agota el destino
Long. Fuente < Long. Destino => transferencia total: se completa con el carcter de relleno
2.2 Instrucciones de desplazamiento y rotacin

Una instruccin de este tipo deber especificar los siguientes elementos:


Tipo de operacin: desplazamiento aritmtico, lgico, rotacin (especificado en CO)
Cuenta: nmero de posiciones (normalmente 1 bit, especificado en CO)
Direccin: izquierda, derecha (especificado en CO o en el signo de Cuenta)
Tipo de dato: normalmente su longitud

Desplazamientos aritmticos

desplazamiento aritmtico derecha

desplazamiento aritmtico izquierda

Desplazamientos lgicos

13

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

0
desplazamiento lgico derecha

desplazamiento lgico izquierda

Rotaciones

rotacin derecha

rotacin izquierda

2.3 Instrucciones lgicas y de manipulacin de bits

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

2.5 Instrucciones de transformacin de datos

Traduccin: traducen valores de una zona de memoria utilizando una tabla de correspondencia.

Conversin: operan sobre el formato de los datos para cambiar la representacin.

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:

Inicio de la operacin: START I/O

Prueba del estado: TEST I/O

Bifurcacin sobre el estado: BNR (Branch Not Ready)

Entrada: IN que carga en el procesador un dato de un dispositivo perifrico

Salida: OUT que lo enva a un dispositivo perifrico.

2.7 Instrucciones de manipulacin de direcciones

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)

2.8 Instrucciones que operan sobre datos del Pentium II

MOV
PUSH
PUSHA
MOVSX
MOVS
LODS

Movimiento o transferencia de datos


Transferencia entre registros, o entre registro y memoria
Insercin del operando en la pila
Insercin de todos los registros en la pila
Transfiere un byte a una palabra, o una palabra a una doble palabra con extensin del
signo
Mueven un byte, palabra o doble palabra de una cadena indexada
Carga un byte, palabra o doble palabra de una cadena

15

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Lgicas y manipulacin de bits


Conjuncin lgica de los operandos
BitTes&Set utilizada para primitivas de sincronismo en multiproceso
Identifica el primer bit a 1 de una palabra o doble palabra y almacena su nmero de
posicin en un registro
Pone un byte a cero o a uno dependiendo de algn bit del registro de estado

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

2.9 Instrucciones que operan sobre datos del 68000

(Ver bibliografa de Laboratorio de Estructura de Computadores)


2.10 Instrucciones paralelas SIMD (Single Instruction Multiple Data)

Se trata de instrucciones muy optmizadas para realizar operaciones multimedia. Fueron


introducidas en el 96 en la microarquitectura P6 de la familia IA-32 como tecnologa MMX del
Pentium. Estas instrucciones operan sobre los datos siguiendo un modo SIMD(Single Instruction
Multiple Data), es decir, realizando la misma operacin (single instruction) en paralelo sobre mltiples
secuencias de datos, consiguiendo una mejora de velocidad sobre la alternativa secuencial del orden
de 2 a 8 veces. Las ventajas de estas extensiones SIMD se haban
probado con xito en los
repertorios de otros procesadores, por ejemplo, en el SPARC de Sun Microsystems con el nombre de
VIS (Visual Instruction Set) y PA-RISC de Hewlett-Packard con el nombre de conjunto de
instrucciones MAX-2.
Los programas multimedia operan sobre seales muestreadas de vdeo o audio
representadas por grandes vectores o matrices de datos escalares relativamente pequeos (8 a 16
bits) o incluso 32 bits para seales 3D
Tipos de datos
Los diferentes medios de una aplicacin multimedia suelen utilizar el siguiente nmero de bits para
codificar sus informaciones bsicas:
Grficos y vdeos: utilizan 8 bits para cada punto (escala de grises) o componente de color.
Audio: utiliza 16 bits para cada valor muestreado de la seal.
Grficos 3D: pueden utilizar hasta 32 bits por punto.

16

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

2 dobles palabras empaquetadas


1 doble palabra

1 doble palabra

1 cudruple palabras empaquetada


Q

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

Repertorio de instrucciones MMX


Formato CSO [<tipo de datos>] <registros MMX>
CSO = Cdigo Simblico de Operacin
Tipo de datos = B, W, D Q

17

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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:
+

1111 0000 0000 0000


0011 0000 0000 0000

rebose --> 1

0010 0000 0000 0000

resultado en aritmtica con truncamiento

1111 1111 1111 1111 resultado en aritmtica con saturacin


La aritmtica con saturacin se utiliza, por ejemplo, cuando se suman dos nmeros que
representan intensidad de imagen (nivel de negro., por ejemplo, o de un color base) y no se quiere
que el resultado sea menos negro (menos intenso en el caso de color base) que la suma de las
imgenes originales. Las instrucciones de este grupo son las siguientes:

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Las instrucciones de este grupo son las siguientes:


Instrucciones de Comparacin
PCMPEQ [B, W, D] mmi, mmj
PCMPGT [B, W, D]

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

Si slo se quiere desempaquetar elementos de 16 bits en elementos de 32 bits se ejecuta la


instruccin UNPACK con un operando de todos 0s. El resultado es 2 palabras de 32 bits con 0s en
las posiciones ms significativas:
mmi
0

mmj
a3 a2

a1

a1 a0

mmi
a0

19

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Las instrucciones de este grupo son las siguientes:


Instrucciones de Conversin
PACKUSWB mmi, mmj
PACKSS [WB, DW] mmi, mmj
PUNPCKH [BW, WD, DQ] mmi, mmj
PUNPCKL [BW, WD, DQ] mmi, mmj

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

Ejemplo 1. Codificacin MMX de un bucle iterativo


for i = 0
if a[i] =
Salida[i]
Salida[i]

to 3
color then
= c[i] else
= a[i]

20

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

El programa MMX que implementa el proceso iterativo es el siguiente:


MOVQ
MOVQ
MOVQ
MOVQ
PCMPEQW
PAND
PANDN
POR

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

Ejemplo 2. Transposicin de matrices


T

a3 a 2 a1 a 0
d 3 c3 b3 a3
b b b b

3 2 1 0 = d 2 c 2 b2 a 2
c3 c 2 c1c0
d1c1b1 a1

d 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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

El programa MMX que implementa el proceso de transposicin es el siguiente:


MOVQ
MOVQ
MOVQ
MOVQ
PUNPCKLWD
PUNPCKLWD
MOVQ
PUNPCKLDQ
PUNPCKHDQ

mm1, fila1
mm2, fila2
mm3, fila3
mm4, fila4
mm1, mm2
mm3, mm4
mm5, mm1
mm1, mm3
mm5, mm3

;carga la primera fila de la matriz


;carga la segunda fila de la matriz
;carga la tercera fila de la matriz
;carga la cuarta fila de la matriz
;desempaqueta palabras orden inf. de filas 1 & 2, mm1=[b1,a1,b0,a0]
;desempaqueta palabras orden inf. de filas 3 & 4, mm3=[d1,c1,d0,c0]
;copia mm1 en mm5
;desempaqueta dobles palabras orden inferior -> mm1=[d0,c0,b0,a0]
;desempaqueta dobles palabras orden superior -> mm1=[d1,c1,b1,a1]

las otras 2 filas [d3,c3,b3,a3] y [d4,c4,b4,a4] se generan de forma anloga.


Ejemplo 3:
Funcin de desvanecimiento gradual de una imagen B y aparicin simultanea de otra imagen A
Las dos imgenes A y B se combinan en un proceso que efecta sobre cada par de pixels homlogos
la media ponderada por un factor de desvanecimiento fade que ir variando de 0 a 1, y su
complementario (1-fade), que lo har de 1 a 0
Pixel_resultante = Pixel_A * fade + Pixel_B*(1 - fade)

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 =

Pixel_A * fade + Pixel_B - Pixel_B*fade =


(Pixel_A - Pixel_B) * fade + Pixel_B

22

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Luego hay que restar al Pixel_A el valor del Pixel_B, multiplicar el resultado por fade y sumar
finalmente el valor del Pixel_B. A estas operaciones hay que 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

El programa MMX que implementa este proceso es el siguiente:


PXOR
mm7, mm7
;pone a cero mm7
MOVQ
mm3, valor_fade
;carga en mm3 el valor de fade replicado 4 veces
MOVD
mm0, imagenA
;carga en mm0 la intensidad de 4 pixels de la imagen A
MOVD
mm1, imagenB
;carga en mm1 la intensidad de 4 pixels de la imagen B
PUNPCKLBW
mm0, mm7
;desempaqueta a 16 bits los 4 pixels de mm0
PUNPCKLBW
mm1, mm7
;desempaqueta a 16 bits los 4 pixels de mm1
PSUBW
mm0, mm1
;resta la intensidad de la imagen B de la de A
PMULHW
mm0, mm3
;multiplica el resultado anterior por el valor de fade
PADDDW
mm0, mm1
;suma el resultado anterior a la imagen B
PACKUSWB
mm0, mm7
;empaqueta en bytes los 4 resultados de 16 bits

3. Instrucciones de control del flujo de ejecucin.


El orden de procesamiento de las instrucciones viene determinado por el avance del contador de
programa, que lo hace de forma secuencial con todas las instrucciones salvo con las de los siguientes
grupos:

Bifurcacin condicional (e incondicional)


Bifurcacin a subrutinas

23

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Este grupo de instrucciones juega un triple papel en las posibilidades expresivas y computacionales del
repertorio:

Toma de decisiones en funcin de resultados previamente calculados. Las instrucciones de


bifurcacin condicional cumplen este papel en el 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.

3.1 Instrucciones de bifurcacin condicional

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

a) Implcita: la condicin se genera como efecto lateral de la ejecucin de una


instruccin de manipulacin de datos (ADD, SUB, LOAD, etc.)
b) Explcita: existen instrucciones especficas de comparacin o test que slo
afectan a las condiciones (CMP, TST, etc.)
Seleccin

a) Simple: afecta a un slo bit del registro de condiciones (Z, N, C, etc.)


b) Compuesta: afecta a una combinacin lgica de condiciones simples (C+Z, etc.)
simples
nemotcnico
CC (carry clear)
CS (carry set)
NE (not equal)
EQ (equal)
VC (overflow clear)
VS (overflow set)
PL (plus)
MI (minus)

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Uso

a) Con almacenamiento de la condicin en un registro de estado o condicin: una 1


instruccin de gestin de datos o comparacin genera la condicin que se
almacena en un registro de estado de la mquina, y una 2 instruccin
selecciona la condicin y bifurca en caso que sea cierta (True)
b) Con almacenamiento de la condicin en un registro general: una 1 instruccin de
gestin de datos o comparacin genera la condicin que se almacena en un
registro general de la mquina que debe especificarse en la misma, y una 2
instruccin selecciona la condicin y bifurca en caso que sea cierta (True)
c) Sin almacenamiento de la condicin: una nica instruccin genera, selecciona la
condicin y bifurca en caso que sea cierta (BRE R1, R2, DIR : salta a DIR si
<R1> = <R2>)
Especificacin de la direccin
direccionamiento directo (Jump)
direccionamiento relativo (Branch)
direccionamiento implcito (Skip: salta una instruccin si se cumple la condicin))
3.2 Subrutinas

Supongamos que en diferentes puntos de un programa se realiza la operacin de elevar al cuadrado


un nmero. El cdigo simblico (MC68000) de la operacin sera el siguiente:
MOVE.W
MULS
MOVE,W

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Cuatro problemas hay que resolver en el mecanismo de una subrutina (cerrada):

Controlar la direccin de vuelta a la instruccin siguiente a la que realiz la llamada

Organizar el paso de parmetros

Ubicar las variables locales de la subrutina

Preservar el contexto del programa

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

2) Utilizacin de una posicin de memoria de la subrutina


Esta alternativa exige que antes de bifurcar a la subrutina se ponga la direccin de vuelta en una
posicin de memoria perteneciente a la subrutina (por ejemplo, la primera). El retorno se realiza con un
salto incondicional e indirecto sobre esta posicin.
Prog. Principal

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

3) Utilizacin de una pila (stack)


Inmediatamente antes de realizar la bifurcacin a la subrutina se coloca la direccin de retorno en
la pila. Lo ltimo que realiza la subrutina es recuperar esta direccin de retorno y llevarla al contador de
programa. Esta alternativa permite el anidamiento y la recursin porque resuelve el orden de los retornos
con el orden de insercin y extraccin que impone la Pila. Se vuelve a la instruccin siguiente a la ltima
llamada porque de la pila siempre se extrae el ltimo retorno almacenado.
En el 68000 existen dos instrucciones que realizan las dos acciones descritas:
JSR

D1

bifurca a D1 almacenando previamente la direccin de la instruccin siguiente en la Pila


RTS
lleva el ltimo retorno introducido en la Pila al PC.
Prog. Principal

Subrutina 1

Subrutina 2

Sub1
dir

Sub2

Subrutina 3
Sub3

JSR Sub1
JSR Sub2

JSR Sub3

dir1

dir2

RTS

RTS

RTS

La evolucin de la Pila en las secuencias de llamadas y vueltas sera la siguiente:


Pila antes de
la llamada a
sub1

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

La estructura del cdigo para el 68000 sera la siguiente:


cuadrado

MOVE.W
MULS
MOVE.W
RTS

N, D0
D0, D0
D0, N

......

cuadrado

siguiente1

JSR
.....
JSR
.....

cuadrado

siguiente2
......

28

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

3.2.2 Paso de parmetros

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

La evolucin de la Pila en el proceso de llamada y vuelta de subrutina sera la siguiente:


Pila antes
del paso 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

Preservacin del contexto

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Prog. Principal

Subrutina
Sub

Preservacin
del contexto

Paso de
parmetros
(PUSH)
JSR Sub
dir

Restauracin
del contexto

Liberacin
de parmetros

RTS

En este caso la evolucin de la Pila sera la siguiente:


Pila antes
del paso de
parmetros

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

Variables locales de la subrutina

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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:

parmetros reales de la llamada a la subrutina,


direccin de retorno de la subrutina,

31

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

puntero del registro de activacin del subprograma padre


zona de variables locales.

El puntero al registro de activacin actual se almacena en un registro de direcciones, que normalmente es el


registro A6. El puntero de pila (SP) es el registro A7 y el puntero a las variables globales A5.
SP

A7

PRAL

A6

PRAG

A5

Variables locales
Puntero al RA padre
Direccin de retorno
Parmetros

Variables globales

La instruccin LINK sirve para reservar la memoria correspondiente a un registro de activacin y


actualizar el puntero al mismo, es decir, para asignar y enlazar el registro de activacin. La instruccin
UNLIK deshace el enlace y devuelve la memoria.
La instruccin LINK tiene el siguiente formato:
LINK An, #desplazamiento
An se usar como puntero al registro de activacin, y el desplazamiento es un nmero entero
negativo, cuya magnitud es el nmero de bytes que ocupan las variables locales. Su semntica es la
siguiente:
An --> -(SP); SP --> An; SP + desplazamiento --> SP
Es decir:
1.
2.
3.

Guarda el registro en la pila.


Copia el contenido del puntero de pila en el registro.
Suma el nmero negativo al puntero de pila, decrementando el puntero de pila un nmero de bytes
igual al que ocupan las variables locales.

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

Copia el contenido del registro en el puntero de pila.


Saca un palabra larga de la pila y la almacena en el registro.

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Sin embargo, en el 8088 y 8086 la subrutina se iniciaba con la siguiente secuencia de instrucciones:
PUSH EBP
MOV EBP, ESP
SUB ESP, espacio_para_variables_locales
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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

4.2 Construcciones iterativas

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Tema 4: Rendimiento del procesador.


1. Medidas del rendimiento de un computador
2. Influencia en el rendimiento de las alternativas de diseo.
3. Influencia de los compiladores de lenguajes de alto nivel.
4. Procesadores RISC y CISC.

1. Medidas del rendimiento de un computador


Cuando se quieren comparar diferentes procesadores es necesario establecer el criterio de medida que
permita cuantificar los resultados de la comparacin. En este sentido existen dos extremos que aclarar
previamente: la unidad de medida y el patrn de medida. El primero se refiere a la mtrica utilizada para
cuantificar la comparacin. Y el segundo al objetivo mismo de la comparacin.
El tiempo es la unidad de medida por excelencia cuando se comparan varios procesadores, aunque no
siempre coincidan los puntos de vista de los diferentes observadores. As, el usuario de un procesador puede decir
que el procesador A es mejor que el procesador B cuando A ejecuta su programa en menor tiempo que B. En
cambio el responsable de un centro de clculo entender que A es mejor que B si es capaz de ejecutar mayor
nmero de trabajos por unidad de tiempo. El primero estar interesado en el tiempo de respuesta (response time)
del procesador mientras que el segundo lo estar en la productividad (throughput). Pero en ambos casos la clave
es el tiempo: el procesador que realiza la misma cantidad de trabajo en el menor tiempo posible ser el ms rpido,
la diferencia estriba en si medimos una tarea (tiempo de respuesta) o muchas (productividad).
El patrn de medida ms significativo es el conjunto de programas reales que se ejecutan en los
procesadores. Sin embargo aqu surge de nuevo y con ms intensidad la diversidad de puntos de vista. En efecto,
el usuario de un editor de texto querr medir el rendimiento de un procesador respecto a la eficiencia para ejecutar
su programa, que posiblemente no coincida con el punto de vista del usuario de un programa de diseo grfico.
Fijar de la forma ms objetiva posible los patrones o programas respecto a los cuales se mida el rendimiento de un
procesador ser pues una tarea polmica y siempre cuestionada por la comunidad de interesados en los resultados
de la medida.
1.1 Tiempo de ejecucin
El tiempo que tarda un programa en ser ejecutado por un computador puede ser difcil de medir, debido a
los Sistemas Operativos Multitarea y a los dispositivos de E/S, que tienen tiempos de respuesta que son
independientes de la frecuencia de reloj del ordenador. Por ello es necesario diferenciar entre el tiempo que tarda
una CPU en ejecutar el cdigo de un programa, el tiempo que utiliza el S.O. para realizar sus tareas, y el tiempo
necesario para acceder a los dispositivos de E/S.
El tiempo de ejecucin de un programa lo dividiremos en las siguientes componentes:
Tiempo de respuesta
Tiempo de CPU
A su vez, el tiempo de CPU lo dividimos en:
Tiempo de CPU utilizado por el usuario.
Tiempo de CPU utilizado por el S.O.

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:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Tiempo de CPU utilizado por el usuario. Es el tiempo que la CPU utiliza para ejecutar el programa del
usuario. No se tiene en cuenta el tiempo de espera debido a la E/S o el tiempo utilizado para ejecutar otros
programas

Tiempo de CPU utilizado por el S.O. Es el tiempo que el S.O. emplea para realizar su 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 =

Nmero _ de _ ciclos _ de _ reloj _ de _ la _ CPU


Fc

donde Fc = Frecuencia_de_reloj = 1/Tc


Adems del nmero de ciclos de reloj que necesita la ejecucin de un programa, tambin se puede medir el
nmero de instrucciones NI ejecutadas, y podremos calcular el nmero medio de Ciclos de reloj Por Instruccin o
CPI como:
CPI =

Nmero _ de _ ciclos _ de _ reloj _ de _ la _ CPU


NI

por lo que el tiempo de CPU podemos expresarlo como:


Tiempo_de_CPU = NI CPI Tc.
o bien:
Tiempo _ de _ CPU =

NI CPI
Fc

NI: depende del compilador y la arquitectura utilizada, y se expresa en instrucciones/programa

CPI: depende de la arquitectura y estructura (organizacin) de la mquina, y se expresa en ciclos de


reloj/instruccin

Tc: Depende de la estructura y la tecnologa de la mquina, y se expresa en segundos/ciclo de reloj

En determinadas situaciones de diseo puede ser til calcular el nmero total de ciclos de reloj de la CPU como:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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 %

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Tc_B/ Tc_A = 1.25 ==>

Tc_B = 1.25 Tc_A

NI_B = 0.8 NI_A


Tiempo de CPU_A = NI_A CPI_A Tc_A
Tiempo de CPU_B = NI_B CPI_B Tc_B
Tiempo de CPU_B = (0. 8 NI_A ) CPI_B ( 1.25 Tc_ A )
Tiempo de CPU_B = (0.8 1.25) NI_A * CPI_B Tc_A.
CPI_A = (NI_salto_A /NI_A) CPI_salto + (NI_resto_A/NI_A) CPI_resto =
(20/100) 2 + (80/100)1 = 0.2 2 + 0.8 1 = 1.2
CPI_B = (NI_salto_B /NI_B) CPI_salto + (NI_resto_B/NI_B) CPI_resto =
(20/80) 2 + (60/80)1 = 0.252 + 0.751 = 1.25
Luego la alternativa de diseo correspondiente a la CPU A sera ms rpida. La ganancia de velocidad de la
alternativa A sobre la B valdr:
Tiempo de CPU_A = 1.2 NI_A Tc_A.
Tiempo de CPU_B = 1.25 NI_A Tc_A
Tiempo de CPU_B 1.25
=
= 1.0416
Tiempo de CPU_A 1.2

1.2 Otros parmetros de rendimiento

MIPS (Millones de Instrucciones Por Segundo)


NI

MIPS =

Tiempo _de _ejecucin 10


Tiempo _ de _ ejecucin =

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

Varan entre programas ejecutados en el mismo computador

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 =

Tiempo de ejecucin en la mquina de referencia


MIPS refeerencia
Tiempo de ejecucin en la mquina a medir

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

MIPSrefeerencia = 1 (MIPS del VAX-11/780)

MFLOPS (Millones de operaciones en punto FLOtante Por Segundo)

MFLOPS =

Nmero de operaciones en coma flotante de un programa


Tiempo de ejecucin 10 6

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

1.3 Ganancia de velocidad (speedup): Ley de Amdahl


Para calcular el aumento de rendimiento que puede obtenerse al mejorar alguna parte de un computador
se utiliza la Ley de Amdahl: La mejora obtenida en el rendimiento global de un computador al utilizar algn
modo de ejecucin ms rpido est limitada por la fraccin de tiempo que se puede utilizar ese modo ms rpido.
La ganancia de velocidad global de un sistema se define por el siguiente cociente:
gv global =

Tiempo _ de _ ejecucin _ sin _ mejora( Tsin )


Tiempo _ de _ ejecucin _ con _ mejora( Tcon )

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

gvmejora = 10; fm = 0.4 ==> gvglobal =


lim gvglobal =

1
(1 0.4)

1
(1 0.4) +

0.4
10

1
= 1.56
0.64

= 1.666 (mxima ganancia para velocidad del disco infinita)

gvmejora -->

1.4 Rendimiento medio armnico


Sean P1, P2, ..., Pi,...Pm un conjunto de programas que representan modos de funcionamiento de una carga de
trabajo. Por ejemplo, P1, puede representar el modo de funcionamiento entero, P2 el modo real, etc.
las velocidades de ejecucin en instrucciones/segundo de los programas anteriores, y t1,
Sean r1, r2, ..., ri,... rm
t2, ... , ti,... tm los tiempos de ejecucin medios por instruccin en segundos/instruccin: ti = 1/ri
Se definen los siguientes parmetros:
Tiempo de ejecucin medio aritmtico
1 m
1 m 1
Ta = t i =
m i =1
m i =1 ri

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Velocidad de ejecucin media armnica


1
m
Rh =
= m
Ta
1
r
i =1 i
Tiempo de ejecucin medio ponderado
m f
Ta* = i con f1, f2, ... fi, ...fm los pesos de los programas P1, P2, ..., Pi,...Pm;
i =1 ri

fi = 1
i =1

Velocidad de ejecucin media armnica ponderada


1
1
R*h = * = m
f
Ta
ri
i =1 i

Velocidad de ejecucin media aritmtica


1 m
R a = ri
m i =1
Velocidad de ejecucin media aritmtica ponderada
m

R a = f i * ri
i =1

Problema cuando se promedian velocidades en lugar de tiempos


P1 ejecuta 10.000 instrucciones en 5 segundos => r1 = 2.000 instrucciones/segundo
P2 ejecuta 10.000 instrucciones en 2 segundos => r2 = 5.000 instrucciones/segundo
P1

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

Ta = 1/2(5/10.000 + 2/10.000) = 7/20.000 => Rh = 1/Ta =20.000/7 =2.857,14


Si con esta velocidad media armnica calculamos las instrucciones ejecutadas en 7 segundos =
2.857,14 * 7 = 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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Cul es el computador ms rpido?


Los MIPS da cada procesador para cada programa valdrn:
MIPS
Programa
P1
P2
P3
P4

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

Tiempos de ejecucin medios aritmticos


Ta(A) = 1/4*(1/100+1/0,1+1/0,2+1)
Ta(B) = 1/4*(1/10+1+1/0,1+1/0,125)
Ta(C) = 1/4*(1/5+1/5+1/2+1)

= 16,01/4
= 4,002
= 19,1/4
= 4,775
= 1,9/4 = 0,475

Velocidades de ejecucin medias armnicas


Rh(A) = 1/ Ta (A) = 0,25
Rh(B) = 1/ Ta (B) = 0,21
Rh(C) = 1/ Ta (C) = 2,12
Luego el mejor computador (ms rpido) es C, seguido de A, y seguido de B

Velocidad de ejecucin media geomtrica


m

R g = Ri1 / m
i =1

Velocidad de ejecucin media geomtrica ponderada


m

R g* = Ri f i
i =1

Se utiliza con medidas de rendimiento normalizadas con respecto a una mquina de referencia.

1.5 Patrones de medida (Benchmarks)


Para evaluar el rendimiento de un computador podemos utilizar diferentes tcnicas:
Modelos analticos (matemticos) de la mquina
Modelos de simulacin (algortmicos) de la mquina
La mquina real
Las dos primeras alternativas se utilizan cuando la mquina no est disponible. Los modelos analticos tienen
limitado su mbito de utilizacin por la dificultad de expresar en forma de ecuaciones matemticas el
comportamiento detallado de la mquina y su carga de trabajo. Se utilizan en fases muy tempranas de diseo para
realizar estimaciones generales del rendimiento.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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,...)

Patrones sintticos (synthetic benchmarks): Cdigo artificial no perteneciente a ningn programa de


usuario y que se utiliza para determinar perfiles de ejecucin. (Whetstone, Dhrystone)

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

matrices indefinidas simtricas


matrices triangulares
matrices tridiagonales
descomposicin de Cholesky
descomposicin QR
actualizacin de las descomposiciones QR y Cholesky
descomposicin valores singulares

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

(6.0) -Zp -Wd-68


(6.0) -Zp -Wd-68
(6.0) -Zp -Wd-68
(6.0) -Zp -Wd-68
5.0 -Zp -Wd-e68
5.0 -Zp -Wd-e68
1.0 level 129

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

f77sx 040 R2.2 -pi*:*


f77sx 040 R2.2 -pi*:*
CSOS 1.0 level 129

368
368
327

f77sx 020 R1.13 -pi*:*


f77sx 020 R1.13 -pi*:*
CF77 4.0 -Zp -Wd-e68
FORTRAN77 EX/VP V11L10
CF77 4.0 -Zp -Wd-e68
FORTRAN77EX/VP V12L20
CF77 5.0 -Zp -Wd-e68
FORTRAN77 EX/VP V12L10
CSOS 1.0 level 129

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

SPEC: (System Performance and Evaluation Cooperative)


SPEC es una sociedad sin nimo de lucro cuya misin es establecer, mantener y distribuir un conjunto
estandarizado de benchmarks que se pueden aplicar a las ltimas generaciones de procesadores. Se han
sucedido ya 4 generaciones de benchmarks: SPEC89, SPEC92, SPEC95 y SPEC2000. En lo que sigue nos
limitaremos a la ltima, que es la nica en vigor.

SPEC2000
SPEC CPU2000
Los 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:

gzip: programa de compresin de datos que utiliza el algoritmo de Lempel-Ziv (LZ77).

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.

gcc: compilador de C que genera cdigo para el procesdor Motorola 88100.

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

bzip2: basado en la versin 0.1 de bzipb.

twolf: paquete de ubicacin (placement) y conexionado (routing) en el proceso de diseo de


circuitos integrados basados en celdas standard. Utiliza el algoritmo de simulated annealing.

SPECffp2000
Lo integran los siguientes programas:

wupwise: cromodinmica cuntica

swim: modelado del agua superficial

mgrid: resolutor multi-malla: campo potencial 3D

applu: ecuaciones diferenciales parciales elpticas/parablicas

mesa: librera grfica 3D

galgel: dinmica de fluidos

art: reconocimiento de imgenes/redes neuronales

equake: simulacin de propagacin de ondas ssmicas

facerec: procesamiento de imagen: reconocimiento del rostro

ammp: qumica computacional

lucas: teora de nmeros/prueba de nmeros primos

fma3d: simulacin de choques por elementos finitos

sixtrack: diseo de aceleradores de fsica nuclear de alta energa

apsi: meteorologa: distribucin de contaminantes

12

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Tiempo en una UltraSPARC10 con


procesador UltraSPARCIIi, 300
MHz y 256 MB de memoria
= 100 SPECint2000

CINT2000 Result

Copyright 1999-2002 Standard Performance Evaluation Corporation

Intel Corporation
Intel D850MD motherboard (2.0A GHz, Pentium 4 processor)
SPEC license #
13

Benchmark

Tested by: Intel Corporation


Reference
Time

Base
Runtime

Base
Ratio

Test date: Nov-2001

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:

Software Avail: Oct-2001

722
SPECint2000

Vendor:
Model Name:

Hardware Avail: Jan-2002

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

CINT2000 Result
Copyright 1999-2000 Standard Performance Evaluation Corporation

Intel Corporation
Intel VC820 (1.0 GHz Pentium III)
SPEC license #
13

Benchmark

Tested by: Intel Corporation

Reference
Time

Base
Runtime

Base
Ratio

SPECint2000 =
410
SPECint_base2000 =407

Test date: Mar-2000

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

Hardware Avail: Mar-2000

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

CFP2000 Result
Copyright 1999-2002 Standard Performance Evaluation Corporation
Intel Corporation
Intel D850EMV2 motherboard (2.0A GHz, Pentium 4 processor)
SPEC license #
13

Tested by: Intel Corporation


Reference
Time

Benchmark

Base
Runtime

Base
Ratio

SPECfp2000 =
SPECfp_base2000 =

Test date: May-2002

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:

Software Avail: Apr-2002

Ratio

168.wupwise

SPECfp_base2000

Hardware Avail: May-2002

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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 (Transaction Processing Performance Council)


TPC es un consorcio de 47 fabricantes de software y hardware entre los que se encuentran Compaq, Digital,
IBM, NCR, Sun, Informix, Intel, Microsoft y Oracle dedicado al diseo de benchmarks para la medida de
rendimiento de los sistemas informticos. Estos benchmarks analizan la mayora de los aspectos del sistema en
relacin con el procesamiento de transacciones, es decir, accesos de consulta y actualizacin a bases de datos.
Tiene el inconveniente de la cantidad de tiempo que requieren las pruebas (meses) haciendo que su coste sea
elevado (millones de pesetas). Los benchmarks TPC-A , TPC-B y TPC-C ya estn en desuso. TPC-D fue
sustituido en abril de 1999 por TPC-H y TPC-R.

TPC-H: es un benchmark de soporte a la decisin. Consta de un conjunto preguntas (queries)


especficas, orientadas a la actividad comercial.

TPC-R: es similar a TPC-H pero permite optimizaciones adicionales basadas en el conocimiento de las
preguntas.

Adems, TPC ha introducido un benchmark para medir las transacciones en la WEB:

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Base de Datos
La base de datos de TPC-H y TPC-R utiliza un esquema en la 3 forma normal y responde al diagrama 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:

Construccin de la base de datos


Ejecucin de 22 preguntas de solo-lectura en modo monousuario y multiusuario
Ejecucin de 2 funciones de refresco.

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Test de Potencia

tiempo

Test de Capacidad (throughput)


S1

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Throughput @ Size =

S 22 3600
SF
TS

Ts:tiempo de respuesta de la ejecucin multi flujo


S: nmero de flujos
3600: segundos (= 1 hora)
22: nmero de preguntas por flujo

La mtrica de rendimiento compuesta (QphH para TPC-H y QphR para TPC-R) se calcula como:

QphH @ Size, QphR @ Size = Power @ Size Throughput @ Size


TPC-H y TPC-R tambin definen una mtrica precio/rendimiento como la divisin del precio total del sistema
por el resultado de la mtrica compuesta.
100 GB Results
Rank

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

IBM DB2 UDB Turbolinux 7


7.2
Servers

02/01/02

10/31/01

IBM DB2 UDB


EEE 7.2

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

IBM DB2 UDB


7.2

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Server
6

IBM
RS/6000 SP 12,866
550

649 US $

08/15/00

IBM DB2 UDB


7.1

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

IBM DB2 UDB


EEE 7.2

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

PowerEdge 6600/1.6 GHz Xeon


4,452 41 US $
MP

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

NCR Teradata V2R3.0

08/23/99

WorldMark 5200

21,254

607 US $

08/31/00

NCR Teradata V2R4.0

03/06/00

21

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

2. Influencia en el rendimiento de las alternativas de diseo


Revisaremos en este apartado las alternativas de diseo de los repertorios de instrucciones (ISA)
estudiadas en los temas anteriores con el objeto de seleccionar aquellas que aportan mayor rendimiento al
procesador. En muchos casos las alternativas se contemplan junto con datos reales de su presencia en el cdigo
mquina que generan los compiladores para programas reales. El resultado ser la caracterizacin de un repertorio
(ISA) que definir las propiedades generales de los procesadores de tipo RISC. Nosotros proyectaremos estas
propiedades sobre un procesador hipottico denominado DLX, que es un compendio de las principales
caractersticas de los actuales procesadores RISC: MIPS, Power PC, Precision Architecture, SPARC y Alpha.

2.1 Tipo de elementos de memoria en la CPU


Tres alternativas:
Tipo de mquina
Ventajas
Pila
Acumulador
Instrucciones cortas

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)

2.2 Referencias a memoria en instrucciones ALU


Tres alternativas:
Tipo de mquina
Ventajas
Registro-Registro
Ninguna referencia a Memoria
Codificacin fija => formato simple
Generacin de cdigo simple
Registro-Memoria
Menor nmero de instrucciones

Inconvenientes
Mayor nmero de instrucciones
por programa

Mayor trfico con Memoria

22

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Memoria-Memoria

Muchos tipos de direccionamiento


Nnmero mnimo de instrucciones
por programa

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

2.3 Orden de ubicacin de los datos


Dos alternativas:
Seleccin basada en
big-endian
motivos de compatibilidad
litle-endian
Conclusin
Es indiferente desde el punto de vista del rendimiento. Sern motivos de compatibilidad con otros
procesadores los que determinen una eleccin

2.4 Alineamiento de datos


Dos alternativas:
acceso alineado
acceso no alineado

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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%

Frecuencia de los modos de direccionamiento

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:

Direccionamientos registro + desplazamiento y el inmediato


Tamaos de los desplazamientos de 12 a 16 bits
Tamao del dato inmediato de 8 a 16 bits
La supresin de los modos complejos no afectan decididamente al rendimiento

2.5 Datos operando


La siguiente figura muestra el porcentaje de referencias en los benchmarks anteriores a los objetos de
datos mas usuales: byte, media palabra, palabra y doble palabra. Se desprende que los accesos a datos de longitud
palabra o doble palabra dominan sobre los dems. Si a ello aadimos la necesidad de acceder al elemento mnimo
que define la resolucin del direccionamiento, as como el soporte del tipo carcter, es decir, el byte; y la
existencia en la mayora de los procesadores de operaciones hardware en punto flotante, llegamos a las siguientes
Conclusiones
enteros de 16 y 32 bits
flotantes de 64 bits
caracteres de 8 bits

24

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

2.8 Sentencias de salto condicional


En la siguiente figura tenemos el porcentaje de aparicin de los tres tipos de sentencias de ruptura de
secuencia. Como se puede observar las bifurcaciones condicionales ocupan el primer lugar (un 75%), por lo que
resulta importante disear de forma eficiente el mecanismo de generacin de condiciones y salto sobre el valor de
las mismas.

25

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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%

Frecuencia de un salto de este tipo

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%

Frecuencia de tipos de com paraciones en saltos

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

bits del desplazamiento

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

2.9 Llamadas a procedimientos (subrutinas)


Aunque las instrucciones de llamada a procedimientos no son tan frecuentes como las de bifurcacin
condicional, su consumo de tiempo en los LAN es elevado debido a la gestin de los registros de activacin (RA)

26

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

que deben de realizar. Resulta, pues, conveniente optimizar la ejecucin de estas instrucciones. Del anlisis de los
datos se deducen los siguientes hechos:

Ms del 98% de las llamadas utilizan menos de 6 parmetros


Ms del 92% de las llamadas utilizan menos de 6 variables locales
La variacin del nivel de anidamiento en la que se mueve un programa se mantiene relativamente pequea a
lo largo de una secuencia de llamadas/retorno, como se muestra en la siguiente figura:
tiempo en unidades de llamada/retorno

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

registros fsicos de la mquina

r0

r1

ri

rn

Ventana de registros visibles

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

3. Influencia de los compiladores de lenguajes de alto nivel


Las prestaciones de los actuales computadores al ejecutar un programa dependen significativamente del
compilador que se utilice. Cuando se disea el repertorio de instrucciones se tiene en mente en todo momento la
tecnologa de diseo de compiladores. Las decisiones arquitectnicas afectan directamente a la complejidad de
diseo de un buen compilador
Un compilador consta de una serie de etapas, las cuales transforman representaciones abstractas de alto
nivel, en representaciones de ms bajo nivel, hasta llegar al repertorio de instrucciones. Un compilador busca en
primer lugar la exactitud de la traduccin (mantenimiento de la semntica del programa en la transformacin), en
segundo lugar la velocidad del cdigo generado, en tercer lugar el tamao del cdigo, en cuarto lugar la velocidad
del compilador, y en quinto lugar el soporte a la depuracin. Desde el punto de vista del rendimiento que ahora
nos ocupa, la velocidad del cdigo generado es el factor a optimizar

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).

Optimizaciones locales: afectan a fragmentos de cdigo lineal (sin bifurcaciones)


Eliminacin de subexpresiones comunes
Propagacin de constantes

29

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Reduccin del tamao de la pila en la evaluacin de expresiones reorganizando su estructura

Optimizaciones globales: afectan al programa completo, son ms complejas de implementar.


Optimizacin de bucles
Eliminacin de subexpresiones comunes de alcance global (incluyendo saltos)
Propagacin de copias: sustituye todas las instancias de una variable asignada.

Optimizacin del uso de registros: es una de las que reporta mayor incremento de rendimiento. La
estudiaremos con ms detalle a continuacin.

Optimizaciones dependientes de la mquina: Aprovechan el conocimiento de las arquitecturas especficas.


Multiplicacin por una constante y sustitucin por sumas y desplazamientos
Eleccin del desplazamiento ms corto en los saltos

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.

3.1 Optimizacin de registros


El uso optimizado de los registros de una mquina es responsabilidad del compilador cuya misin es
mantener en registros ( y no en memoria) los operandos necesarios para el mayor nmero posible de clculos,
minimizando las operaciones de carga/almacenamiento de registros que requieren el acceso a memoria
El proceso de asignacin ptima de registros se realiza en dos fase:
1) Diseo del grafo de interferencias entre las variables del programa:
nodos: las variables
arcos: entre variables que estn activas simultneamente en el programa
2) Coloreado del grafo
Se intenta colorear el grafo con n colores, siendo n el n de registros disponibles en la mquina. A los nodos no
coloreados se le asignan posiciones de memoria y se utilizan instrucciones de carga/almacenamiento.
Como se sabe este es un problema NP-duro que requiere el uso de heursticas muy elaboradas para acortar el
tiempo de proceso.

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

R1
V1

V2

V3

V4

V5

R2

V6
V1

V2

V3

V4

R3

R1

V5
R3

V6
Memoria

1. Procesadores RISC y CISC


Caractersticas comparativas
CISC(Complex Instruction Set Computers)
Arquitectura RM y MM
Diseadas sin tener en cuenta la verdadera demanda
de los programas
Objetivo: dar soporte arquitectnico a las funciones
requeridas por los LANs
Muchas
operaciones
bsicas
y
tipos
de
direccionamiento complejos
Instrucciones largas y complejas con formatos muy
diversos ==> decodificacin compleja (lenta)
Pocas instrucciones por programa ==> elevado
nmero de ciclos por instruccin (CPI)
Muchos tipos de datos ==> interfaz con memoria
compleja
Nmero limitado de registros de propsito general
==> mucho almacenamiento temporal en memoria
Baja ortogonalidad en las instrucciones ==> muchas
excepciones para el compilador

RISC( Reduced Instruction Set Computers)


Arquitectura RR (carga/almacenamiento)
Diseadas a partir de las mediciones practicadas en los
programas a partir de los 80
Objetivo: dar soporte eficiente a los casos frecuentes

Pocas operaciones bsicas y tipos de direccionamiento


simples
Instrucciones de formato simple (tamao filo) ==>
decodificacin simple (rpida)
Muchas instrucciones por programa ==> reducido
nmero de ciclos por instruccin (CPI)
Slo los tipos de datos bsicos ==> interfaz con
memoria sencilla
Nmero elevado de registros ==> uso eficiente por el
compilador para almacenamiento temporal
Alto grado de ortogonalidad en las instrucciones ==>
mucha regularidad para el compilador

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Modelo secuencial
instruccin 1

E
I

instruccin 2

instruccin 3
1

10

11

12

13

14

15 ciclos

Modelo segmentado lineal


Los primeros RISC tenan un modelo de ejecucin segmentado lineal en el que todas las instrucciones pasan por
las mismas etapas y en cada ciclo entra una nueva instruccin a ejecutar.
instruccin 1

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Antidependencia WAR (Write After Read)


S1 --/ S2

S1
.
.
.
S2
Ejemplo:

...:=...X...

X :=...
Mul r1, r2, r3
Add r2, r4, r5

Dependencia de salida WAW (Write After Write)


S1 O S2

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

Mul r1, r2, r3


Jz zproc
Sub r4, r1, r1
.
.
.
Load r1, x

Dependencias de recursos(estructurales)
Producidas al tratar de usar recursos compartidos

34

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Ejemplo: DLX
Arquitectura de 32 bits
32 registros de uso general (GPR) de 32 bits. R0 siempre contiene 0
Memoria direccionable por byte en modo big-endian
Instrucciones de longitud fija de 32 bits y alineadas
Un solo modo de direccionamiento: registro + desplazamiento (16)
Datos 8, 16 y 32 bits (enteros)
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

Saltos condicionales, incondicionales y a subrutina

Tipo R
(registro)

11

Operacin

rs1

rs2

rd

Funcin

Operaciones aritmtico-lgicas

rd rs1 Funcin rs2

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

INSTRUCCIONES DE CONTROL DE FLUJO


Semntica
J (Salto)
PC nombre
JAL (Salto y enlace)
R31 PC + 4; PC nombre
JR (Salto registro)
PC R3
BEQZ (Bifurcacin si igual cero)
IF (R4 == 0) PC nombre
BNEZ (Bifurcacin si no igual cero)
IF (R4 != 0) PC nombre

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

SH (Almacenar media palabra)


SB (Almacenar byte)

M[502+R2]16 R316..31
M[41+R3]8 R224..31

SH 502(R2), R3
SB 41(R3), R2

Sntesis de otros modos de direccionamiento y operaciones


Instruccin aparente
Instruccin real
LW R2, <despl. de 16 bits>
Dir. Directo (16 bits)
LW R2, <despl. de 16 bits> (R0)
LW R2, <despl. de 32 bits>
Dir. Directo (32bits)
LW R1, <16 bits altos del despl.> (R0)
LW R2, <16 bits bajos del despl.> (R1)
LW R2, <despl. de 32 bits> (R4)
LW R1, <16 bits altos del despl.> (R0)
Dir. Base+Desplazamiento (32 bits)
ADDU R1, R1, R4
LW R2, <16 bits bajos del despl.> (R1)
Carga de un registro con datos inmediatos
ADDI R1, R0, #8
R1 8
Transferencia entre registros
ADD R1,R0,R2
R1 R2

Eficiencia de los procesadores RISC


Comparacin entre el VAX y el DLX utilizando 5 programas del SPEC92 (compress, eqntott, espresso, gcc, li)
Se representan las siguientes relaciones:
relacin (ratio) del nmero de instrucciones ejecutadas
relacin (ratio) de CPIs
relacin (ratio) de rendimiento medido en ciclos de reloj
Discusin:
el DLX ejecuta aproximadamente el doble de instrucciones que el VAX
el CPI del VAX es aproximadamente 6 veces que el del DLX
Conclusin:
el DLX tiene aproximadamente el triple de rendimiento que el VAX

4
ratio de rendimiento

3,5

3,5
3

2,5

2,5

ratio de instrucciones ejecutadas

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Tema 5: Organizacin de la memoria: memoria principal.


1. Caractersticas generales de las memorias.
2. Jerarqua de las unidades de memoria de un computador.
3. Memoria principal: organizacin.
4. Memoria entrelazada.

1. Caractersticas generales de las memorias


Las memorias se pueden clasificar atendiendo a diferentes criterios. Revisaremos en los
apartados siguientes los ms significativos:
Mtodo de acceso
Acceso aleatorio (RAM): acceso directo y tiempo de acceso constante e independiente de
la posicin.
Acceso secuencial (SAM): tiempo de acceso dependiente de la posicin.
Acceso directo (DAM): acceso directo a un sector con tiempo de acceso dependiente de la
posicin, y acceso secuencial dentro del sector.
Asociativas CAM): acceso por contenido
Soporte fsico
Semiconductor
Magnticas
Opticas
Magneto-pticas
Alterabilidad
RAM: lectura y escritura
ROM (Read 0nly Memory): Son memorias de slo lectura. Existen diferentes variantes:
ROM programadas por mscara, cuya informacin se escribe en el proceso de
fabricacin y no se puede modificar.
PROM, o ROM programable una sola vez. Utilizan una matriz de diodos cuya unin
se puede destruir aplicando sobre ella una sobretensin.
EPROM (Erasable PROM) o RPROM (Reprogramable ROM), cuyo contenido puede
borrarse mediante rayos ultravioletas para volverlas a escribir.
EAROM (Electrically Alterable ROM) o EEROM (Electrically Erasable ROM),
son
memorias que estn entre las RAM y las ROM ya que su contenido se puede volver a
escribir por medios elctricos. Se diferencian de las RAM en que no son voltiles.
Memoria FLASH. Utilizan tecnologa de borrado elctrico al igual que las EEPROM,
pueden borrarse enteras en unos cuantos segundos, mucho ms rpido que las
EPROM.
Volatilidad con la fuente de energa
Voltiles: necesitan la fuente de energa para mantener la informacin.
No voltiles: mantienen la informacin sin aporte de energa.
Duracin de la informacin
Estticas: el contenido permanece inalterable mientras estn polarizadas.
Dinmicas: el contenido slo dura un corto perodo de tiempo, por lo que es necesario
refrescarlo (reescribirlo) peridicamente.
Proceso de lectura
Lectura destructiva: necesitan reescritura despus de una lectura.
Lectura no destructiva
1

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Cintas, CD-ROM, etc.

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

Este mecanismo de migracin entre niveles es efectivo gracias al principio de localidad


referencial que manifiestan los programas:
espacial
temporal
2

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

3.1 Organizacin interna de la memoria.


Las celdas de memoria se disponen en el interior de un chip atendiendo a dos
organizaciones principales: la organizacin por palabras, tambin denominada 2D, y la
organizacin por bits, tambin denominada 2 D o 3D.
Organizacin 2D
Es la organizacin ms sencilla que responde al esquema mostrado en la siguiente
figura:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Matriz de celdas

direccin

2n

2n X m celdas

Seleccin
n

Control

SC
R/W

m
datos
entrada

datos
salida

Las celdas forman una matriz de 2n filas y m columnas, siendo 2n el nmero de


palabras del chip y m el nmero de bits de cada palabra. Cada fila es seleccionada por la
decodificacin de una configuracin diferente de los n bits de direccin.
Esta organizacin tiene el inconveniente que el selector (decodificador) de palabras crece
exponencialmente con el tamao de la memoria. Igual le ocurre al nmero de entradas (fan-in)
de las puertas OR que generan la salida de datos.
Ejemplo
En la siguiente figura se muestra la organizacin 2D de un chip de memoria con 4 palabras de 4
bits:
De0

De1

De2

De3
R/W

A0

A1

3
2
DEC 1
0

Ds0

Ds1

Ds2

Ds3

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

3.2 Diseo de memorias


Cuando se ha de disear una memoria principal cuyas dimensiones (nmero de bits y
nmero de palabras) exceden a las de un chip, se tienen que disponer varios chips en una
placa de circuito impreso para alcanzar las dimensiones requeridas. Para mayor claridad
trataremos independientemente cada una de las dimensiones.
a) Ampliacin del nmero de bits de la palabra de memoria
Se trata de formar una memoria de 2n * (m * k) bits a partir de chips de 2n * m bits

SC

SC

n
2n * m * k bits

2n * m bits

R/W

R/W
m

mk

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

El esquema general se muestra en la siguiente figura. Simplemente se disponen en paralelo k chips


de 2n * m bits al que llegaran las mismas lneas de direccin y control. Cada chip aportara m lneas
de datos a la palabra de la memoria total.
SC

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

Ejemplo: Diseo de una memoria de 1K x 8 bits a partir de mdulos (chips) de 1K x 2 bits;


A0
A1
A9

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

b) Ampliacin del nmero de palabras de memoria


Se trata de formar una memoria de 2n * m* N bits a partir de chips de 2n * m bit, es decir,
aumentar el nmero de palabras manteniendo la misma longitud de palabra.

SC

SC

n+k
2n * m bits

2n * N * m bits
R/W

R/W

El esquema general se muestra en la siguiente figura. La nueva memoria tendr n + k


lneas de direccin. Se disponen N=2k chips en paralelo a los que se llevan las mismas m lneas
de datos, las mismas n lneas de direccin menos significativas y la misma lnea de
lectura/escritura (R/W). Las k lneas de direccin ms significativas se decodifican para activar
con cada salida del decodificador el selector de chip (SC) de cada uno de los N=2k chips.

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Ejemplo: Diseo de una memoria de 4K x 8 bits con mdulos de 1K x 8 bits;

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

c) Ampliacin de la longitud y el nmero de palabras de memoria


En este caso ampliaramos en primer lugar el nmero de lneas de datos (longitud de
palabra) y con los bloques resultantes disearamos una memoria con mayor nmero de
palabras.

SC

SC

n+k
2n * m bits

2n * N * m * k bits
R/W

R/W
m

m*k

3.3 Ubicacin en el espacio de direcciones.


Dado un espacio de direcciones dn-1, dn-2,...,d1, d0 y una memoria de capacidad 2m
palabras(m n)se trata de hallar la funcin lgica de seleccin (SC) que ubique a la memoria en
un segmento de direcciones consecutivas Di,...Dj, as como las seales locales de direccin de la
memoria.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Debe cumplirse que Dj Di + 1 = 2m


Bu s de dir ecciones

Dir ecciones loca les

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)

Ejemplo: Ubicar una memoria de 8 palabras en un espacio de 4 lneas de direccin


(d3,d2,d1,d0).

10

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Ubicacin 1: a partir de la direccin 5 (0101)


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 0

11 1

10 1

d2

d1

d3 d2 d0 d3 d2 d1 d3 d1 d0 d3 d2

Ubicacin 2: a partir de la direccin 4 (0100)

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Ubicacin 3: a partir de la direccin 0 (0000)


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 1

01 1

11 0

10 0

d2

d1

d3

Ubicacin 4: a partir de la direccin 8 (1000)

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

Conclusin: la funcin de seleccin es ms simple cuanto ms alineado se encuentre el bloque


de memoria en el espacio de direcciones. La mxima alineacin la tendremos cuando se cumpla
que:
direccin inicial mod 2n = 0
Es decir, el resto de dividir la direccin inicial por el tamao de bloque es igual a 0.
12

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Caso de mdulos con ms de un selector


Se simplifica la lgica global de seleccin, pero hay que descomponer la funcin en un producto.
Ejemplo: ubicacin 2 (anterior)
funcin de seleccin: SC = d2 d3 + d2 d3
que en forma de producto resulta:
SC = (d2 + d3) (d2 + d3)
ld2

RAM

ld1

23 = 8
pa la bbr a s

da t os

ld0
SC1

SC2

d3
d2

d3
d2

Decodificacin parcial y total


Cuando se generan las funciones de seleccin de varios bloques de memoria o puertos de E/S
que han de ubicarse en el espacio de direcciones tiene que evitarse siempre que una direccin sea
asignada a ms de una posicin de memoria o registro de E/S. En caso contrario el resultado de las
operaciones de lectura/escritura puede resultar incierto. Sin embargo, no es necesario que a una posicin
de memoria o registro le corresponda slo una direccin. En algunos casos, para simplificar la
decodificacin, y siempre que no se vaya a utilizar totalmente el espacio disponible, se puede realizar una
decodificacin parcial.
Ejemplo:
Ubicacin en un espacio de direcciones de 12 lneas d11, d10,...,d1, d0 (212 = 4.086 = 4K) de un bloque
de RAM de 2K y un puerto de E/S de 4 registros.
d10

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

R0
R1
R2
R3

800
801
8o2
803

804
805
806
807

808
809
80A
80B

80C
80D
80D
80F

...
...
...
...

Decodificacin en placa o en bus


Decodificacin en placa
A0

RAM
da t os

A0

A12

2 13 = 8K
pa la bbr a s
SC

A13
A14
A15

A15

Decodificacin en bus (back plane)

A0

A0

RAM
da t os

A12

2 13 = 8K
pa la bbr a s
SC

A12
A13
DE C
A14
A15

Disposicin de los mdulos de memoria

SIMM (Single In-line Memory Module).


Un SIMM tpico consta de varios chips de DRAM instalados en una pequea placa de
circuito impreso (PCB) que se fija verticalmente a travs de un conector a la placa del
sistema. Los SIMMs disponen de varios formatos y nmero de contactos. Una de las ventajas
de la memoria SIMM es la posibilidad de instalar gran cantidad de memoria en un rea
14

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

reducida. Algunos SIMMs de 72 contactos contienen 20 ms chips de DRAM; 4 de estos


SIMMs contienen, pues, 80 ms chips de DRAM. Ocupan un rea de 58 cm2 , mientras
que si los chips se instalaran horizontalmente en la placa del sistema ocuparan 135 cm2.

DIMM (Dual In-line Memory Module).


Los mdulos de memoria DIMM, al igual que los SIMMs, se instalan verticalmente en los
conectores de expansin. La diferencia principal estriba en que en los SIMMs los contactos
de cada fila se unen con los contactos correspondientes de la fila opuesta para formar un
solo contacto elctrico; mientras que en los DIMMs los contactos opuestos permanecen
elctricamente aislados para formar dos contactos independientes.

3.4 Deteccin y correccin de errores.


Cdigos detectores de errores
Para la deteccin de errores simples en dispositivo de memoria se suelen utilizar los bits de
paridad. Es decir, se ampla en 1 la longitud de palabra para almacenar en las operaciones de
escritura la paridad total (par o impar) de la palabra. En las operaciones de lectura se
comprueba si se mantiene la paridad convenida. Las detecciones de fallos de la memoria se
suelen traducir en excepciones (interrupciones) del sistema.

Cdigos correctores de errores (Hamming)


Permite la correccin de un error simple. El dato a transmitir de m bits de longitud se ampla
con k bits de paridad, suficientes para codificar la posicin de un posible bit errneo en el
mensaje completo de m + k bits. Es decir, deber cumplirse que 2k 1 m + k.
N de bits del
dato
8
16
32
64
128
256

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

El sistema de memoria deber generar en la escritura los bits de paridad Ci para


almacenarlos junto a los bits de datos
Supongamos que el dato escrito es: d8 d7 d6 d5 d4 d3 d2 d1 = 1001 1101

Los bits de paridad para el cdigo de Hamming valdrn:

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

Para detectar la existencia de un error simple y su posicin (para poderlo corregir)


comparamos (Comparador COMP) los bits de paridad generados en la lectura, Ci con los
almacenados en la escritura, Ci:
Comporador COMP:
C8
C4
C2
C1

=
=
=
=

C8
C4
C2
C1

C8
C4
C2
C1

=
=
=
=

0
1
1
1

1
1
1
0

=
=
=
=

1
0
0
1

Si el resultado de la comparacin es C8 C4 C2 C1 = 0 0 0 0 significa que no se ha


producido error. Si se ha producido un error, los Ci codificarn su posicin.
En nuestro ejemplo el resultado de la comparacin vale
17

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

C8 C4 C2 C1 = 1 0 0 1 = 9 (decimal) el bit m9 del mensaje ha fallado, es decir el bit de


datos d5
Para corregir el error decodificamos su posicin, es decir, los Ci (decodificador DEC) con lo que
disponemos de una lnea individual para cada posible posicin de error.
Con cada una de estas lneas podemos controlar la inversin o no de la correspondiente lnea de
datos di leda de memoria segn que se haya producido o no error en dicha lnea. Para la inversin
controlada de estas lneas utilizamos una etapa de puertas XOR.
En la siguiente figura aparece el esquema completo de la memoria tolerante a un fallo simple
y el proceso de correccin del fallo que hemos supuesto en el ejemplo
d1
d2
d3
d4
d5
d6
d7
d8

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Entrelazado de orden superior


Mp = 2n palabras
Se divide Mp en 2m mdulos de 2n-m palabras

m bits

(n m) bits

Mdulo

Direccin dentro del mdulo

En tre lazado de orde n s u pe rior

Mdulo M0

Mdulo M1

Mdulo Mk

R. Datos

R. Datos

R. Datos

D
E
C

Ejemplo: Para n = 5 y m = 2 tendramos una distribucin de direcciones de manera que las


consecutivas irn en el mismo mdulo:

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Entrelazado de orden inferior

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

Ejemplo: Para n = 5 y m = 2 el entrelazado de orden inferior producira una distribucin de


direcciones de manera que las consecutivas irn mdulos diferentes:

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

5.1 Memoria entrelazada con organizacin S


La organizacin S (Sencilla) utiliza entrelazado de orden inferior, accediendo
simultneamente, con la misma direccin local, a la misma palabra de cada uno de los mdulos
(n m ) bit s

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

(p1,M0) (p1,M1)...... (p1,M2 -1)

(p1,M0) (p1,M1)...... (p1,M2 -1)

tiempo

22

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

5.2 Memoria entrelazada con organizacin C


Org a n i z a c i n C

D
E
C

Con t r ola dor


De
Mem or ia

Dir eccin Con t r ol

Mdu lo M0

Dir eccin

Con t r ol

Mdu lo M1

Dir eccin

Con t r ol

Mdu lo Mk

23

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Tema 6: Memoria Cach.


1. Principios bsicos de funcionamiento de la memoria cach.
2. Elementos de diseo.
3. Factores de rendimiento de la memoria cach.
4. Ejemplos.

1. Principios bsicos de funcionamiento de la memoria cach


La velocidad de la memoria se ha distanciado progresivamente de la velocidad de los procesadores. En la
figura siguiente se muestran las grficas de la evolucin experimentada por el rendimiento de las CPUs y las
memoria DRAM (soporte de la memoria principal de los computadores actuales) en los ltimos aos. Las curvas
muestran que el rendimiento de la CPU aument un 35% anual desde 1980 hasta 1987; y un 55% anual a partir de
ese ao. En cambio la memoria ha mantenido un crecimiento sostenido del 7% anual desde 1980 hasta la fecha.
Esto significa que si se mantiene la tendencia, el diferencial de rendimiento no slo se mantendr sino que
aumentar en el futuro. Para equilibrar esta diferencia se viene utilizando una solucin arquitectnica: la memoria
cach
100.000

CPU

10.000

55%

1000

Diferencia
progresiva

100

Memoria
(DRAM)

10

35%

7%

0.1
1980

1987

2000

Evolucin de la mejora de rendimiento de la CPU y memoria DRAM


64 KB (DRAM)

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.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

m marcos de bloque o lneas


2n palabras
K palabras/bloque
M = 2n/K bloques >> m

El funcionamiento de la memoria cach se puede resumir en el diagrama de flujo de la siguiente figura. En


l se describe el proceso de traduccin de la direccin fsica procedente de la CPU (en el supuesto que el procesador
no disponga de memoria virtual o est desactivado) en el dato ubicado en la posicin de memoria determinada por
dicha direccin:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Mc <-- CPU(DF)

Recibe la
Direccin Fsica
(DF) de la CPU

no

DF bloque
en la cache?

(fallo)

Acceso a Mp para obtener


el bloque que contiene DF

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)

CPU <-- <DF>

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.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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)

Cachs independientes para datos e instrucciones: frente a cachs unificadas.

2.1 Funcin de correspondencia


Existen tres funciones de correspondencia para definir la posible ubicacin de un bloque de memoria
principal (Mp) en la memoria cach (Mc): directa, asociativa y asociativa por conjuntos. En el primer caso un
bloque de Mp slo puede ubicarse en una lnea de la cach, aquella que coincide con el bloque cuando
superponemos Mc sobre Mp respetando fronteras de Mc, es decir, sobre espacios de Mp que son mltiplos del
tamao de Mc. En la correspondencia asociativa un bloque puede ubicarse en cualquier lnea de Mc. Finalmente, la
correspondencia asociativa por conjuntos es un compromiso entre las dos anteriores.
Mp

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

2.1.1 Correspondencia directa


En la correspondencia directa el bloque Bj de Mp se puede ubicar slo en el marco de bloque MBi que cumple la
siguiente relacin i = j mod m, donde m es el nmero total de lneas que tiene la cach. En la tabla siguiente se
especifica el conjunto de bloques que se pueden ubicar en una lnea de Mc:

Bloques de Mp

m, 2m, ... , 2s-1m


m+1, 2m+1,..., 2s-1m+1
......
m-1, 2m-1, 3m-1,..., 2sm-1

0,
1,

Marcos de bloque de Mc

0
1
...
m-1

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Interpretacin de una direccin fsica en correspondencia directa:


s

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Ejemplo: para los tres tipos de correspondencia utilizaremos los siguientes datos:

Tamao de bloque K = 4 bytes = 22 => w = 2


Tamao de Mc = 64 KBytes = 216 Bytes = 214 marcos de bloque => r = 14
Tamao de Mp = 16 MBytes = 224 Bytes = 222 bloques => s = 22

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:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

2.1.3 Correspondencia asociativa por conjuntos


En la correspondencia asociativa por conjuntos las lneas de Mc se divide en v=2d conjuntos con k
lneas/conjunto o vas cada uno. Se cumple que el nmero total de marcos de bloque (lneas) que tiene la cach m =
v*k. Un bloque Bj de Mp se puede ubicar slo en el conjunto Ci de Mc que cumple la siguiente relacin i = j mod
v.
Interpretacin de una direccin fsica en correspondencia asociativa por conjuntos:
s

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

k = 2 => v = m/k = 2r/2 = 214/2 = 213 => d = 13


w=2
s = 22 => s -d = 9

10

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Si k = 1 ==> m = v ==> asociativa por conjuntos de 1 va = directa


Si v = 1 ==> m = k ==> asociativa por conjuntos de m vas = asociativa

11

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

2.2 Algoritmos de sustitucin


Como hemos visto, el espacio de ubicacin de un bloque en Mc depende de la funcin de correspondencia. La
correspondencia directa reduce el espacio a un marco de bloque, por lo que no queda alternativa de sustitucin
cuando hay que ubicar un nuevo bloque. En las correspondencias asociativa y asociativa por conjuntos hay que
decidir qu bloque sustituir. En la primera la eleccin se tiene que realizar sobre cualquier bloque presente en Mc,
mientras que en la segunda se reduce al conjunto nico donde puede ubicarse el nuevo bloque. Las polticas de
reemplazamiento ms utilizadas son cuatro:
1.

Aleatoria: se escoge un bloque al azar

2.

LRU(Least Recently Used)


Se sustituye el bloque que hace ms tiempo que no ha sido referenciado
Algoritmo: se asocian contadores a los marcos de bloque y
Si se referencia MBi
MBk : contador(MBk) contador(MBi) ==> contador(MBk) := contado(MBk) + 1
contador(MBi) = 0
Cuando se produce un fallo se sustituye el MBi : contador(MBi) = MAXIMO

3.

FIFO (First In First Out)

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.

Se sustituye aquel bloque que ha estado ms tiempo en la cach (independientemente de sus


referencias)
Se puede implementar con una cola

LFU(Least Frequently Used)

Se sustituye aquel bloque que ha experimentado menos referencias


Se puede implementar asociando un contador a cada marco de bloque

2.3 Poltica de escritura


Determina la forma de actualizar Mp cuando se realizan operaciones de escritura. Hay que diferenciar dos
casos: cuando la posicin de memoria sobre la que se va a escribir est en Mc (acierto) y cuando no lo est (fallo).
1) Frente a aciertos en la cach: dos alternativas:

Escritura directa o inmediata (write through)

Todas las operaciones de escritura se realizan en Mc y Mp


Inconveniente: genera un trfico importante a Mp
Solucin: utilizacin de un buffer de escritura (alpha 21064)

Buffer
de
escritura

Mp

12

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Postescritura (copy back)

Las actualizaciones se hacen slo en Mc


Se utiliza un bit de actualizacin asociado a cada marco de bloque para indicar la escritura del
marco en Mp cuando es sustituido por la poltica de reemplazamiento
Inconveniente: inconsistencia temporal entre Mc y Mp ==> complicacin del acceso de la E/S a
memoria que debe realizarse a travs de Mc.

2) Frente a fallos en la cach

Asignacin en escritura (write allocate)

El bloque se ubica en Mc cuando ocurre el fallo de escritura y a continuacin se opera como en un


acierto de escritura, es decir, con wirte through o copy back

No asignacin en escritura (No write allocate)

El bloque se modifica en Mp sin cargarse en Mc

2.4 Poltica de bsqueda


Determina las condiciones que tienen que darse para buscar un bloque de Mp y llevarlo a una lnea de Mc.
Existen dos alternativas principales:
1) Por demanda
Se lleva un bloque a Mc cuando se referencia desde la CPU alguna palabra del bloque y ste no se
encuentra en Mc
2) Anticipativa (prebsqueda)

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

Clasificacin de los fallos cach


Los fallos de la cach se pueden clasificar en tres tipos:

Forzosos: producidos por el primer acceso a un bloque

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.

3. Factores que determinan el rendimiento de la memoria cach.


El tiempo de acceso a memoria durante la ejecucin de un programa ser :

Tacceso = Na * Tc + Nf * Tp

(1)

donde:

Na es el nmero de referencias con acierto


Nf es el nmero de referencias con fallo
Tc es el tiempo de acceso a una palabra de Mc
Tp es el tiempo de acceso a un bloque de Mp
13

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

El tiempo de acceso medio durante la ejecucin del programa valdr:

Tacceso_medio = Tacceso/ Nr = Ta*Tc + Tf*Tp


donde:

Ta = Na/Nr es la tasa de aciertos


Tf = Na/Nr es la tasa de fallos
Nr es el nmero total de referencias a memoria
El tiempo de acceso a un bloque de Mp constituye la componente principal del tiempo total de penalizacin
de un fallo. En la siguiente expresin hemos considerado ambos trminos equivalentes:

Tacceso_medio = Tacierto + Tf * Penalizacin_fallo

(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:

Tacceso = Nr * Tc + Nf * Tp ==> Tacceso_medio = Tacceso/ Nr = Tc + Tf*Tp (3)


De las expresiones (2) (3) podemos inducir que para mejorar el rendimiento de una cach, podemos actuar sobre
tres trminos, dando lugar a tres tipos de optimizaciones:
1.
2.
3.

Reduccin de la tasa de fallos, Tf


Reduccin de la penalizacin de los fallos, Penalizacin_fallo
Reduccin del tiempo de acierto, Tacierto

3.1 Reduccin de la tasa de fallos


La tasa de fallos podemos reducirla con las siguientes alternativas:
a) Aumento del tamao del bloque

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

Al aumentar la asociatividad se incrementa el ciclo de reloj y por tanto Tacierto


c) Utilizacin de una cach de vctimas
14

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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)

Ante un fallo se comprueba si el bloque est en la cach de vctima antes de acudir a Mp

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

Analicemos el rendimiento de una Mc pseudoasociativa:

Tiempo_acceso_mediopseudo = Tiempo_aciertopseudo + Tasa_fallospseudo *Penalizacin_fallospseudo


15

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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
-

Tiempo_acceso_mediopseudo = 1 + (0,098 - 0,076)*2 + 0,076*50 = 4,844


Tiempo_acceso_mediodirecta 1 + 0,098*50 = 5,90 > 4,844
e) Prebsqueda de instrucciones y datos

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

Experimentalmente se ha comprobado que un buffer de prebsqueda simple elimina el 25 % de los fallos de


una cach de datos con correspondencia directa de 4 KB

f) Prebsqueda controlada por el compilador

16

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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]

1 + 100 = 101 fallos


a[1][0]
a[1][1]

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]

3*100/2 = 150 fallos

El nmero total de fallos ser, pues, de 251.

Utilizando prebsqueda el compilador puede transformar el programa en el siguiente:

for (j = 0; j < 100; j = j + 1)


prefetch (b[j+6][0]);
prefetch (a[0][j+6]);
a[0][j] = b[j][0] * b[j+1][0];
for (i = 1; i < 3; i = i + 1)
for (j = 0; j < 100; j = j + 1)
prefetch (a[i][j+6]);
a[i][j] = b[j][0] * b[j+1][0];

Se ha descompuesto el bucle en dos, el primero (iteracin para i = 0) prebusca a partir de b[6][0] y a[0][6]:

18

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Se ha elegido el valor 6 para el nmero de iteraciones que se buscan por adelantado.


En el segundo bucle slo se prebusca a[1][6]... a[1][99], a[2][6]... a[2][99] puesto que todo el array b[i][j]
ya ha sido prebuscado en el primer bucle y se halla en Mc. E el nmero de fallos en estas dos iteraciones de i ser
2*3 = 6. Luego en total solo se producen 15 fallos. El costo de evitar 236 fallos de cachs es ejecutar 400
instrucciones de prebsqueda.
g) Optimizaciones del compilador
Las optimizaciones consisten en transformaciones del cdigo fuente del programa realizadas en tiempo de
compilacin con el objetivo de aumentar la localidad espacial y/o temporal del programa, y consiguientemente
reducir la tasa de fallos. Entre las transformaciones ms importantes estudiaremos las siguientes:

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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];

for (i = 0; i < 100; i = i + 1)


for (j = 0; j < 100; j = j + 1)
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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

La transformacin mejora la localidad espacial.

Descomposicin en bloques

Reduce la tasa de fallos aumentando la localidad temporal


En lugar de operar sobre filas o columnas completas de un array los algoritmos de descomposicin en
bloques operan sobre submatrices o bloques
El objetivo es maximizar los accesos a los datos cargados en la cach antes de ser reemplazados

Ejemplo: multiplicacin de matrices


for (i = 1; i < N; i = i + 1)
for (j = 0; j < N; j = j + 1)
{ r = 0;
for (k = 0; k < N; k = k + 1){
r = r + Y[i][k] *Z[k][j];};
X[i][j] = r;
};

21

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

X00

X01

X02

X03

X04

X05

Y00

Y01

Y02

Y03

Y04

Y05

Z00

Z01

Z02

Z03

Z04

Z05

X10

X11

X12

X03

X14

X15

Y10

Y11

Y12

Y13

Y14

Y15

Z10

Z11

Z12

Z13

Z14

Z15

X20

X21

X22

X23

X24

X25

Y20

Y21

Y22

Y23

Y24

Y25

Z20

Z21

Z22

Z23

Z24

Z25

X30

X31

X32

X33

X34

X35

Y30

Y31

Y32

Y33

Y34

Y35

Z30

Z31

Z32

Z33

Z34

Z35

X40

X41

X42

X43

X44

X45

Y40

Y41

Y42

Y43

Y44

Y45

Z40

Z41

Z42

Z43

Z44

Z45

X50

X51

X52

X53

X 54

X55

Y50

Y51

Y52

Y53

Y 54 Y55

Z50

Z51

Z52

Z53

Z54

Z55

Programa transformado:
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

3.2 Reduccin de la penalizacin de fallos


a) Prioridad a los fallos de lectura frente a los de escritura
Con una cach de escritura directa (writre throuhg) la mejora de rendimiento ms importante proviene del
uso de un buffer de escritura de tamao apropiado. Sin embargo, esto complica los accesos a memoria debido a que
el buffer puede contener el valor actualizado (escrito) de una posicin que se necesita en un fallo de lectura.
Ejemplo: Supongamos que una Mc de correspondencia directa y escritura directa hace corresponder los
bloques en los que se encuentran las direcciones 512 y 1024 sobre la misma lnea de Mc. Supongamos que se
ejecuta el siguiente programa:
(1)
(2)
(3)

M[512] <-- <R3>


R1 <-- M[1024]
R2 <-- M[512]

// escritura sobre M[512]


// lectura de M[1024]
// lectura de M[512]

22

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Mc

Buffer de Escritura

Mp

512
<R3>

3
512 / 1024
2
1024

Cuando se ejecuta (1) se lleva <R3> al buffer de escritura y a la 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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

bits de validez de los subloques

etiqueta

lnea

palabra

etiqueta

subbloque1

subbloque2

subloque3

subloque4

Comparado

c) Utilizacin de un segundo nivel de cach


Como los fallos se sirven leyendo bloques de Mp, una alternativa para disminuir la penalizacin por fallo
consiste en disminuir el tiempo de acceso a Mp utilizando el mismo mecanismo cach, es decir, utilizando una
cach intermedia o de segundo nivel (L2) entre Mc (L1) y Mp.
CPU

Mc (L1)

Mc (L2)

Mp

Tiempo_acceso_medio = Tiempo_acierto N1 + Tasa_fallos N1 * Penalizacin_fallos N1


Penalizacin_fallosN1 = Tiempo_acierto N2 + Tasa_fallos N2 * Penalizacin_fallos N2
Cuando tenemos varios niveles de cachs hay que diferenciar entre la tasa de fallos local y la global:

Tasa_fallos_local = n de fallos / n de accesos a la cach


Tasa_fallos_global = n de fallos / n total de accesos realizados por la CPU
En general se cumple:

24

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Tasa_fallos_local Tasa_fallos_global
Y en particular:

Tasa_fallos_localN1 = Tasa_fallos_globalN1
Tasa_fallos_localN2 > Tasa_fallos_globalN2
Ejemplo:
1000 referencias a un sistema de cah de dos niveles
40 fallos se producen en N1
20 fallos se producen en N2
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%)

3.3 Reduccin del tiempo de acierto


El tiempo de acierto podemos optimizarlo (minimizarlo) actuando sobre tres factores:
a) Cachs pequeas y simples

El hardware pequeo acelera la comparacin de etiquetas y por tanto el tiempo de acierto

Tambin hace posible su incorporacin al chip de la CPU, eliminando el conexionado externo y por tanto
el tiempo de acceso desde la CPU

b) Evitar traduccin de direcciones durante la indexacin de las cachs

Utilizacin de direcciones virtuales en las cachs

c) Escrituras segmentadas para rpidos aciertos de escritura


Los aciertos de lectura son ms rpidos que los de escritura, entre otros motivos porque en los primeros se
puede leer el dato de Mc al tiempo que se comprueba si su etiqueta coincide con la de la direccin fsica. Si no
coincide se ignora el dato ledo. Esto no es posible en las escrituras, pero s podemos simultanear la escritura de un
dato con la comparacin de la etiqueta del siguiente. Es decir, segmentar (pipe-line) la escritura sobre Mc. De esta
forma se aceleran los aciertos de escritura.

25

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Tema 7: Memoria Virtual.


1. Gestin de memoria.
2. Memoria virtual.
3. Memoria virtual paginada.
4. Memoria virtual segmentada.
5. Ejemplos

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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).

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

CPU
Nmero de Pgina Virtual (NPV)

Desplaz. Pgina (DP)

Direccin Virtual (DV)

v
Memoria virtual
Pgina 0

Reg. Base Tabla de Paginas

Pgina 1

Sumador

Pgina 2

Tabla de Pginas
Pgina 3
Pgina 4

control pv 0
control pv 1

pag. f sica f-1


pag. f sica 2

control pv 2

pag. f sica 1

control pv v-2

pag. f sica 0

control pv v-1

pag. en disco

ACIERTO

Direccin Fsica (DF)

Pgina 5

Nmero de Pgina Fsica (NPF)

2v

Desplaz. Pgina (DP)

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

3. Memoria virtual paginada


El mecanismo de traduccin de DV a DF que acabamos de describir corresponde a
un sistema de memoria virtual paginada. En l el espacio virtual (y fsico) se divide en
pginas de igual tamao. Veremos en el apartado siguiente otra alternativa en la que la MV
se divide en segmentos de longitud variable, dando lugar a la memoria virtual segmentada.
Las entradas de la TP de una MV paginada, adems del NPF contiene unos bits de control,
de los que hemos mencionado el bit de presencia P.
Como se muestra en la siguiente figura, existen otros bits que controlan los derechos
de acceso a la pgina: lectura (R), escritura (W) y ejecucin (X), este ltimo slo para
pginas de cdigo. Tambin suele existir un bit que indica si la pgina ha sido modificada
(datos) y necesita escribirse en disco cuando sea sustituida. En general, los dems bits de
control dependen de cada procesador.
Entrada de la tabla de pginas con correspondencia directa
P
RWX
Direccin de Pgina Fsica
P=
bit de presencia (de la pgina en memoria fsica)
RWX = derechos de acceso de lectura, escritura y ejecucin

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

parte de su tabla de pginas, incluyendo el elemento correspondiente a la pgina


actualmente en ejecucin, debe estar en la memoria principal.
3.1 Tablas de pginas de varios niveles
Algunos procesadores hacen uso de un esquema de dos o ms niveles para organizar
las tablas de pginas. En este esquema, hay una pgina de directorio de nivel 1 en la que
cada elemento apunta a una tabla de pginas de nivel 2, y as sucesivamente. En la
siguiente figura se muestra una TP organizada en tres niveles: N1, N2 y N3. Tpicamente, la
longitud mxima de una tabla de pginas se restringe al tamao de una pgina.

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

3.2 Tabla de pginas invertida HASH


Esta alternativa elimina de la TP las entradas que no apuntan a una pgina de la
memoria fsica, reduciendo las entradas a nmero igual al de pginas de la memoria fsica.
El campo NPV de la DV se hace corresponder sobre una tabla de dispersin (tabla
hash) mediante una funcin de dispersin sencilla. La tabla de dispersin incluye un
puntero a una TP invertida, que contiene los elementos de la TP. Existe un elemento en la
tabla de dispersin y en la tabla de pginas invertida para cada pgina de memoria fsica,
en vez de para cada pgina de memoria virtual.
Se necesita, pues, una zona fija de la memoria fsica para las
independientemente del nmero de programas o pginas virtuales que se admitan.

tablas,

Puesto que ms de una DV puede apuntar al mismo elemento de la pgina de


dispersin, se utiliza una tcnica de encadenamiento para solucionar este problema. La
5

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

3.3 Buffer de traduccin anticipada (TLB)


En principio toda referencia a memoria virtual requiere dos accesos a la memoria
fsica: uno para acceder al elemento de la TP, y otro para acceder a la memoria fsica. Por
tanto, un esquema de memoria virtual como el que acabamos de estudiar duplicara el
tiempo de acceso a memoria.
Para evitar este inconveniente los esquemas de memoria virtual utilizan una cache
especial para los elementos de la TP, llamada usualmente buffer de traduccin anticipada
(TLB, Translation Lookaside Buffer).
El TLB funciona lo mismo que una memoria cache, y contiene aquellas entradas de
la TP a las que se han accedido recientemente. Por el principio de localidad temporal, la
mayora de las referencias a memoria correspondern a posiciones incluidas en pginas
recientemente utilizadas. Por ese motivo, la mayora de las referencias involucran a
entradas de la TP presentes en el TLB. Normalmente el TLB utiliza una correspondencia
totalmente asociativa, por lo que una entrada de la TP puede ubicarse en cualquier posicin
del TLB

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

RWX

NPV

DP

Buffer de traduccin anticipada (TLB)

RWX

NPV

Memoria
Asociativa

NPF

Fallo de pgina

Violacin de acceso

NPF

DP

Direccin Fsica

3.4 Interaccin entre la memoria virtual y la memoria cache


La memoria virtual debe interactuar con la memoria cache (no con la cache que
implementa el TLB, sino con la cache de la memoria principal).
Para traducir una DV el sistema de memoria consulta el TLB para comprobar si la
entrada de la TP se encuentra en l. Si es as, se genera la direccin real (fsica),
combinando el NPF con el DP. Si no, se accede a la TP en busca del elemento
correspondiente. Una vez que se ha generado la direccin fsica, compuesta por una
etiqueta y un nmero de conjunto, se consulta la cache para ver si el bloque que contiene la
palabra referenciada se encuentra en dicho conjunto. Si es as, se enva al procesador. Si
no, se produce un fallo de cache y se busca la palabra en memoria principal.
Por tanto, la direccin virtual debe pasar primero por el TLB antes de que la
direccin fsica pueda acceder a la cache, lo que alarga el tiempo de acierto. Este
mecanismo se puede acelerar utilizando dos alternativas:
1. Acceder en paralelo (simultneamente) al TLB para buscar el NPF y al directorio
de la cache para buscar el bloque.
2. Utilizar caches con direcciones virtuales

La primera alternativa requiere que la longitud del campo de desplazamiento DP de


la DV (igual al DP de la DF) sea mayor o igual que los campos de conjunto y palabra del
formato de la DF para la cache, tal como se muestra en la siguiente figura. De esta forma
ser posible realizar en paralelo la bsqueda en el TLB del NPF que se corresponde con la
7

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

etiqueta, y en el directorio de la cache el n de bloque (lnea), que junto a la palabra dentro


del bloque, se corresponde con el DP, del que se dispone desde el instante que se genera la
DV, pues no requiere traduccin.
N PV

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

3.6 Polticas de bsqueda (fetch)

Prebsqueda (anloga a la utilizada en memoria cache)

Bsqueda por demanda (anloga a la utilizada en memoria cache)

Polticas de sustitucin (replacement)

Aleatoria
9

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

FIFO (First In First Out)


Se sustituye la pgina que lleva ms tiempo residente en memoria. Utiliza una cola FIFO
y hace un uso pobre de la localidad temporal

Reloj (FINUFO: First In Not Used First Out)


Es una mejora de la FIFO en la que tambin se chequea si una pgina ha sido
referenciada, haciendo mejor uso de la localidad temporal. Para implementar esta
poltica se mantiene una cola como en la FIFO, pero circular, con un puntero a la ltima
pgina sustituida, y un flag asociado a cada pgina para anotar que ha sido
referenciada.

LRU (Least Recently Used)


Anloga a la utilizada en memoria cache

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.

4. Memoria virtual segmentada


Mientras que la paginacin es transparente para el programador, y le proporciona
un espacio de direcciones mayor, la segmentacin es normalmente visible para el
programador, y proporciona una forma lgica de organizar los programas y los datos, y
asociarle los privilegios y atributos de proteccin.
La segmentacin permite que el programador vea la memoria constituida por
mltiples espacios de direcciones o segmentos. Los segmentos tienen un tamao variable,
dinmico. Usualmente, el programador o el sistema operativo asignar programas y datos a
segmentos distintos. Puede haber segmentos de programa distintos para varios tipos de
programas, y tambin distintos segmentos de datos. Se pueden asignar a cada segmento
derechos de acceso y uso. Las direcciones virtuales estarn constituidas en este caso por un
nmero de segmento (NS) y un desplazamiento dentro del segmento (DP). El proceso de
traduccin de direccin virtual a fsica es anlogo al de la memoria virtual paginada, con la
diferencia que ahora tenemos una tabla de segmentos (TS) cuyas entradas (denominadas
tambin descriptores de segmento) contienen, adems de los bits de control y la direccin
real del segmento, la longitud L del mismo, ya que los segmentos tienen longitud variable.
En la siguiente figura hemos representado esquemticamente el proceso de traduccin.

10

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Tipo acceso
RWX

Direccin Virtual
Nmero Segmento(NS)

Desplaz. (DP)

Tabla de segmentos (TS)


Reg. Tabla Segmentos

P RWX L Dir.Real Seg

P = bit de presencia
L = Longitud del segmento

Dir. Real Seg.

Desplaz.(DP)

Direccin Fsica

Esta organizacin tiene ciertas ventajas para el programador, frente a un espacio de


direcciones no segmentado:

Simplifica la gestin de estructuras variables de datos. Si el programador no conoce


a priori el tamao que puede llegar a tener una estructura de datos particular, no es
necesario que lo presuponga. A la estructura de datos se le asigna su propio
segmento, y el sistema operativo lo expandir o lo reducir segn sea necesario.

Permite modificar los programas y recompilarlos independientemente, sin que sea


necesario volver a enlazar y cargar el conjunto entero de programas. De nuevo, esto
se consigue utilizando varios segmentos.

Permite que varios procesos compartan segmentos. Un programador puede situar un


programa correspondiente a una utilidad o una tabla de datos de inters en un
segmento, que puede ser direccionado por otros procesos.

Se facilita la proteccin. Puesto que un segmento se construye para contener un


conjunto de programas o datos bien definido, el programador o el administrador del
sistema puede asignar privilegios de acceso de forma adecuada.

4.2 Polticas de ubicacin (placement) para memorias segmentadas


Se identifican los huecos de memoria principal por su tamao(longitud) y direccin
inicial, y se renen en una lista. La poltica de ubicacin determinar la ordenacin previa
de la lista. Una vez que se decide el hueco donde se ubica el segmento, se actualiza la lista
de huecos con el que se acaba de crear (a no ser que el segmento mida exactamente igual
que el hueco de memoria utilizado). Si no se puede encontrar un hueco apropiado para el
segmento, interviene la poltica de sustitucin. Las tres polticas de ubicacin de segmentos
ms utilizadas son las siguientes:

Mejor ajuste (best fit)


11

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

La lista de huecos se mantiene ordenada en orden creciente de tamao y se ubica el


segmento en el primer hueco con capacidad suficiente para albergarlo.

Peor ajuste (worst fit)


La lista de huecos se mantiene ordenada en orden decreciente de tamao y se ubica el
segmento en el primer hueco con capacidad suficiente para albergarlo.

Primer ajuste (first fit)


La lista de huecos se mantiene ordenada en orden creciente de las direcciones iniciales
de los huecos, y se ubica el segmento en el primer hueco con capacidad suficiente para
albergarlo. Con esta poltica, cuando transcurre un cierto tiempo, se acumulan un
nmero elevado de huecos pequeos prximos a la cabeza de la lista, penalizando las
bsquedas. Esto se puede evitar adelantando cclicamente, despus de cada bsqueda
un hueco la posicin inicial de la lista.

4.3 Memoria con segmentos paginados


Como vimos en el apartado anterior, la segmentacin presenta una serie de
propiedades ventajosas para el programador, sin embargo, la paginacin proporciona una
forma ms eficiente de gestionar el espacio de memoria. Para combinar las ventajas de
ambas, algunos sistemas permiten una combinacin de ambas, es decir, un sistema virtual
con segmentos paginados. El mecanismo de traduccin de DVs a DFs no es ms que la
composicin del mecanismo de la memoria segmentada y el de la paginada, tal como se
muestra en la siguiente figura:

Tipo acceso
RWX

Direccin Virtual
N Segmento

N Pgina

DP

Tabla de segmentos
Reg. Tabla Segmentos

Tabla de Paginas del Segmento


P RWX L Dir.Real Seg

P NPF
P = bit de presencia
L = Longitud del segmento

NPF

DP

Direccin Fsica

12

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

5. Ejemplo de sistema de memoria virtual: procesador Pentium II


El Pentium II dispone de un sistema de gestin de memoria virtual con posibilidad
de segmentacin y paginacin. Los dos mecanismos se pueden activar o desactivar con
independencia, dando pues lugar a cuatro formas de funcionamiento del sistema de
memoria:
1) Memoria no segmentada no paginada: la direccin virtual coincide con la direccin fsica.
Esta alternativa resulta til cuando el procesador se utiliza como controlador de sistemas
empotrados.
2) Memoria paginada no segmentada: la memoria constituye un espacio lineal de
direcciones paginado. La proteccin y la gestin de memoria se realizan a travs de la
paginacin.
3) Memoria segmentada no paginada: la memoria constituye un conjunto de espacios de
direcciones virtuales (lgicas). Esta alternativa presenta la ventaja frente a la paginacin en
que proporciona, si es necesario, mecanismos de proteccin a nivel de byte. Adems,
garantiza que la tabla de segmentos se encuentra ubicada en el procesador cuando el
segmento est en memoria. Por ello, la segmentacin sin pginas da lugar a tiempos de
acceso predecibles.
4) Memoria segmentada paginada: se utilizan simultneamente los dos mecanismos, la
segmentacin para definir particiones lgicas de memoria en el control de acceso, y la
paginacin u para gestionar la asignacin de memoria dentro de las particiones.
5.1 Mecanismo de segmentacin
Cuando se activa la segmentacin una direccin virtual (llamada direccin lgica en la
terminologa de Intel) consta de una referencia al segmento de 16 bits y un desplazamiento
de 32 bits. Dos bits de la referencia al segmento se utilizan para el mecanismo de
proteccin, y los 14 bits restantes para especificar al segmento en cuestin (16K
segmentos). Con una memoria segmentada, el espacio de memoria virtual total que ve el
usuario es 246 = 64 Terabytes (TBytes). El espacio de direcciones fsicas utiliza direcciones
de 32 bits, con una capacidad mxima de 4 GBytes.
Existen dos formas de proteccin asociadas a cada segmento: el nivel de privilegio y
el atributo de acceso.
Hay cuatro niveles de privilegio, desde el ms protegido (nivel 0), al menos protegido
(nivel 3). El nivel de privilegio asociado a un segmento de datos constituye su clasificacin;
mientras que el nivel de privilegio asociado a un segmento de programa constituye su
acreditacin (clearance). Un programa en ejecucin puede acceder a un segmento de datos
slo si su nivel de acreditacin es menor (tiene mayor privilegio) o igual (igual privilegio) que
el nivel de privilegio del segmento de datos.
La forma de utilizar los niveles de privilegio depende del diseo del sistema
operativo. Lo usual es que el nivel de privilegio 1 lo utilice la mayor parte del sistema
operativo, y el nivel 0 una pequea parte del mismo, la dedicada a la gestin de memoria,
la proteccin y el control del acceso. Esto deja dos niveles para las aplicaciones. En muchos
sistemas, las aplicaciones utilizan el nivel 3, dejndose sin utilizar el nivel 2. Los
aplicaciones que implementan sus propios mecanismos de seguridad, como los sistemas de
gestin de bases de datos, suelen utilizar el nivel 2. Adems de regular el acceso a los
segmentos de datos, el mecanismo de privilegio limita el uso de ciertas instrucciones. Por
ejemplo, las instrucciones que utilizan los registros de gestin de memoria, slo pueden
ejecutarse desde el nivel 0; y las instrucciones de E/S slo pueden ejecutarse en el nivel
13

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

determinado por el sistema operativo, que suele ser el nivel 1. El atributo de acceso al
segmento de datos especifica si se permiten accesos de lectura/ escritura o 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

El selector de segmentos consta de los siguientes campos:

TI: Indica si la traduccin va a utilizar la tabla de segmento global o local.


Nmero de segmento: se utiliza como ndice en la tabla de segmentos.
RPL: Indica el nivel de privilegio del acceso.

Cada elemento de la tabla de segmentos consta de 64 bits, como muestra la siguiente


figura:
32

Base(8bits)

G D/B Lmite P DPL S


Base (16 bits)

Tipo

Base(8 bits)
Lmite (16 bits)

Descriptor
de
segmento

Los campos son los siguientes:

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)

5.2 Mecanismo de paginacin


Cuando se activa la paginacin los programas utilizan directamente direcciones
lineales. El mecanismo de paginacin del Pentium II utiliza una tabla de pginas de dos
niveles. El primero es un directorio de pginas, que contiene hasta 1.024 elementos. Esto
divide los 4 GBytes del espacio lineal de memoria en 1.024 grupos de pginas, cada grupo
14

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

Direccin lgica (virtual)

Segmento

Desplazamiento

Direccin lineal

Dir

Pgina

Desplaz.

Tabla de
segmentos
Directorio
de pginas

Segmentacin

Paginacin

Tabla de
pginas

Direccin
fsica

Memoria
principal

15

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Tema 8: Organizacin de la Entrada/salida


1. Funciones implicadas en las operaciones de e/s.
2. Estructura del sistema de e/s: mdulos de e/s y controladores
3. Mecanismos bsicos de e/s: sincronizacin
4. E/S controlada por programa
5. E/S serie y paralela
1. Funciones implicadas en las operaciones de entrada/salida
Para que un computador pueda ejecutar un programa debe ser ubicado previamente en la memoria,
junto con los datos sobre los que opera, y para ello debe existir una unidad funcional de entrada de informacin
capaz de escribir en la memoria desde el exterior. Anlogamente, para conocer los resultados de la ejecucin de
los programas, los usuarios debern poder leer el contenido de la memoria a travs de otra unidad de salida de
datos. La unidad de Entrada/Salida (E/S) soporta estas funciones, realizando las comunicaciones del
computador (memoria) con el mundo exterior (perifricos). Los dispositivos perifricos que se pueden conectar
a un computador se suelen clasificar en tres grandes grupos:
a)

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:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Aunque la velocidad de transferencia de los dispositivos de presentacin de datos ha sido


tradicionalmente lenta comparada con la de los dispositivos de almacenamiento, en los ltimos tiempos la
situacin est cambiando. Cada vez ms, los computadores se utilizan para manejar documentos multimedia
que constan de grficos, vdeos y voz. La siguiente tabla presenta algunos parmetros de transferencia para los
dispositivos modernos de E/S multimedia:
Medio
Grficos
Vdeo
Voz

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).

El procesamiento de la voz es tambin elevado porque exige la creacin o el reconocimiento de varios


fonemas en tiempo real. De hecho es el medio que ms capacidad de procesamiento requiere debido a
que presenta el mayor grado de intolerancia por retrasos en el usuario.

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:

Identificacin nica del dispositivo por parte de la CPU


Capacidad de envo y recepcin de datos
Sincronizacin de la transmisin, exigida por la diferencia de velocidad de los dispositivos de E/S con
la CPU

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:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Espacios de direcciones independientes (Memoria y E/S)


Las unidades de E/S se ubican en un espacio de direcciones diferente al de memoria. La interaccin entre CPU
y unidad de E/S se realiza a travs de instrucciones especficas de E/S. La separacin de espacios de
direcciones puede soportarse con un bus nico de uso compartido entre Memoria y E/S en funcin del estado
de una lnea de control MEM/IO:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

bus del sistema


Lnea MEM/IO

CPU

Memoria

Unidad
de E/S 1

Unidad
de E/S n

Pero el desdoblamiento de espacios de direcciones puede responder a la existencia de dos buses


independientes, uno para memoria (bus del sistema) y otro para E/S:
bus de memoria

CPU

Memoria
bus de E/S

Unidad
de E/S 1

Unidad
de E/S 2

Unidad
de E/S n

Funcionalmente son equivalentes, pero desde el punto de vista de la codificacin de programas


difieren en el uso de las instrucciones. En el caso de E/S asignada en memoria se utilizan instrucciones de
referencia a memoria, mientras que para E/S aislada existe un grupo particular de instrucciones para realizar
esta funcin. Los dos ejemplos siguientes muestran ambas alternativas:
E/S programada asignada en memoria
200
LOAD
#1
STORE
517
202
LOAD
517
BPL
202
LOAD
516
E/S programada aislada
200
START I/O
5
201
TEST I/O
5
BNR
201
IN
5

/ AC <-- #1
/ M[517] <-- <AC>
/ AC <-- M[517]
/ Bifurca si N=0
/ AC <-- M[516]

/ Bifurca si dispositivo no disponible

2. Estructura del sistema de E/S: mdulos de e/s y controladores de dispositivos


Las diferencias existentes entre los dispositivos perifricos han hecho que la unidad de E/S de un
computador se organice en torno a dos tipos de elementos, unos que soportan las caractersticas comunes a
todos los dispositivos (mdulos de E/S) y otros especficos para cada perifrico que son los controladores de
dispositivo:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

8259
82
59

Mdulo de E/S

DISCO

Controlador de dispositivo

2.1 Mdulos de E/S


Un mdulo de E/S permite que el procesador gestione una amplia gama de dispositivos perifricos de
una forma similar, ocultando los detalles concretos de temporizacin, formatos de datos y principios fsicos de
funcionamiento. El mdulo de E/S se conecta con el procesador a travs de un conjunto de lneas de datos,
direccin y control (un bus). Los datos que se transfieren se almacenan temporalmente en un registro de datos.
El estado del mdulo se refleja en los bits de un registro de estado. El registro de control permite configurar y
programar diferentes funciones en el mdulo. Estos dos registros (estado y control) pueden unificarse en uno
slo en mdulos simples. Un mdulo de E/S dispone de la lgica especfica para su conexin con uno o ms
dispositivos perifricos. En la siguiente figura se muestra la estructura general de un mdulo de E/S:
Datos
Lneas
de Datos

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.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

2.2 Controlador de dispositivo (perifrico)


La estructura del controlador de un dispositivo tendr que adaptarse en cada caso a las peculiaridades
especficas del perifrico. Unos tendrn que actuar sobre elementos electromecnicos (impresoras de lnea),
otros sobre elementos pticos (CD-ROM), o magnticos (discos), etc. Sin entrar en las singularidades de cada
uno, podemos decir que los controladores de dispositivos perifricos presentan una estructura general como la
representada en la siguiente figura:
Estado
(hacia el mdulo de E/S)

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Dato --> bus de datos


"1" --> dato vlido

"1" = capacitacin
"0" = descapacitacin
"Z" = alta impedancia

bus de datos --> perifrico


"1" --> dato aceptado

0 --> dato vlido


"Z" --> bus de datos
"0" --> dato aceptado
(listo para aceptar una
nueva operacin)

Entrada

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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" --> peticin dato

"1" = capacitacin
"0" = descapacitacin
"Z" = alta impedancia

Dato --> bus de datos


"1" --> dato vlido

bus de datos--> Mdulo E/S


0 --> peticin dato
"0" --> dato vlido
(listo para aceptar una
nueva operacin)

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

3. Mecanismos bsicos de e/s: sincronizacin


Las diferencias de velocidad entre la CPU y los perifricos de E/S, y lo que es ms importante, la no
previsibilidad del tiempo de respuesta de estos ltimos, hace necesario un mecanismo de sincronismo que
permita coordinar adecuadamente las transferencias de datos entre ambas unidades. Existen dos mecanismos
bsicos para sincronizar las operaciones de E/S con las de la CPU:
a) Sincronizacin por programa
b) Sincronizacin por interrupcin
El comportamiento de cada uno de estos mecanismos se resume en los dos siguientes organigramas:

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

E/S por interrupcin

4. E/S controlada por programa


La sincronizacin por programa (E/S programada) es la ms sencilla de implementar en un computador,
sin embargo, presenta algunos inconvenientes:

Prdida de tiempo: el computador no realiza trabajo til en el bucle de espera


Impide la realizacin de tareas peridicas, como la exigida por el refresco de una pantalla
Dificultades para atender varios perifricos

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Ejemplos de E/S controlada por programa


Determinemos el porcentaje de tiempo de ocupacin de CPU de tres dispositivos que se conectan a un
procesador mediante E/S programada: un ratn, un disco flexible y un disco duro. Supondremos que el nmero
de ciclos que requiere la operacin completa de E/S sobre el dispositivo es de 400, y que el procesador trabaja
a 500 MHz. Se supone que se puede ejecutar la consulta del estado del dispositivo con la frecuencia necesaria
para que no se pierda ningn dato, y que los dispositivos estn potencialmente siempre ocupados.
1. El ratn debe ser ledo 30 veces por segundo para asegurar que no se pierde ningn movimiento
2. El disco flexible transfiere datos al procesador en unidades de 16 bits, a una velocidad de 50KB/seg. No
debe perderse ningn dato.
3. El disco duro transfiere datos en bloques de 4 palabras, y puede transferir a una velocidad de 4MB/seg. No
debe perderse ningn dato.
Ratn:
Ciclos de reloj por segundo para la lectura = 30 X 400 = 12.000 ciclos por segundo
Porcentaje de ciclos de procesador consumidos en la lectura = 12 x 103 / 500 x 103 = 0,002 %
El resultado muestra que se podra utilizar E/S programada con el ratn, sin un impacto significativo en el
rendimiento del procesador
Disco flexible

10

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

La frecuencia a la que debe realizarse la lectura ser: 50KB/seg / 2 byte/acceso por encuesta =
25 K acceso por lectura/ seg.
Ciclos por segundo para la lectura = 25K x 400
Porcentaje de ciclos de procesador consumidos en la lectura = 25 x 1000 x 400 / 500 x 106 = 2 %
Este tiempo es importante, pero se puede tolerar en un sistema de gama baja.
Disco duro
Hay que realizar lectura del dispositivo a una frecuencia que coincida con el ritmo al que 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

5. E/S serie y paralelo


La conexin entre el mdulo de E/S y el dispositivo perifrico se puede realizar en forma serie o
paralela. La E/S serie utiliza una nica lnea de transmisin, y se emplea cuando mdulo de E/S y dispositivo
perifrico estn a una distancia media o larga y el costo del medio de transmisin resulta importante. La
transmisin tiene lugar haciendo que la lnea adquiera sucesivamente a lo largo del tiempo el estado de cada
uno de los bits constitutivos del mensaje. El tiempo asignado a cada bit determina la velocidad de transmisin
en bits/segundo o baudios.

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

5.1 E/S serie


Existen dos mtodos para sincronizar las transmisiones en la E/S serie:
Asncrona, que no utiliza reloj (de ah su nombre) y que se resincroniza peridicamente con el dispositivo
receptor al inicio de cada byte transmitido
Sncrona, que transmite simultneamente la seal de datos junto con el reloj de sincronizacin

11

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

E/S serie asncrona


En este tipo de E/S no existe un reloj comn entre el emisor (mdulo de E/S) y el receptor
(dispositivo), aunque ambos utilizan seales locales de reloj para generar (emisor) y muestrear (receptor) la
informacin, seales con valores de frecuencia nominalmente iguales. El estado de reposo de la lnea de
tranmisin serie es en alta. El emisor comienza la transmisin con un bit de start de valor 0 cuyo flanco
negativo detecta el receptor como inicio de una transmisin. A partir de ese momento el emisor transmite en
forma serie los bits de datos de su registro de salida (que es un registro de desplazamiento) a una frecuencia
marcada por su reloj local (reloj emisor). El receptor muestrea la lnea con una frecuencia nominalmente igual a
la del emisor sobre su registro de entrada (que es otro registro de desplazamiento). Como ambos relojes son
fsicamente diferente, no se evita que con el tiempo se vaya desplazando uno respecto al otro, con el risgo que
si los bits transmitidos son muchos el receptor los muestree incorrectamente. Sin embargo, como emisor y
receptor se resincronizan con el bit de start del siguiente caracter transmitido, y slo se tranmite un caracter
cada vez, estos deslizamientos no producen error.
1

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

R. desplazamiento (R)
10100100

reloj
receptor

E/S serie sncrona


La E/S serie sncrona utiliza una seal de transmisin que codifica conjuntamente la seal de
informacin y el reloj. Por ejemplo, el cdigo de Manchester, que se muestra en la siguiente figura, utiliza una
codificacin por transiciones, de tal manera que el 0 se codifica como una transicin positiva y el 1 como una
transicin negativa. De esta forma en un intervalo bit existe al menos un cambio en la seal, con lo que se
puede extraer la seal del reloj.
1

Codificacin
por nivel

Codificacin
Manchester
Reloj
decodificado

Ejemplo de mdulo de E/S serie: ACIA (Asynchronous Communicatios Interface Adapter)

E/S paralela
Ejemplo de mdulo de E/S paralelo: VIA (Versatil Interface Adapter)

13

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

1. E/S por interrupcin: gestin de interrupciones


En la E/S programada el procesador tiene que esperar un tiempo considerable a que el mdulo de E/S est
preparado para realizar la operacin. El procesador espera comprobando repetidamente el estado del mdulo de E/S,
degradndose significativamente el rendimiento de la CPU. Para evitar este inconveniente se introdujo el sistema de
interrupciones en los procesadores.
Bsicamente una interrupcin viene determinada por la ocurrencia de una seal externa que provoca la
bifurcacin a una direccin especifica de memoria, interrumpiendo momentneamente la ejecucin del programa. A
partir de esa direccin se encuentra la rutina de tratamiento que se encarga de realizar la operacin de E/S
propiamente dicha, devolviendo despus el control al punto interrumpido del programa.
Programa principal
I1
I2
.
.
.Ii
Ii+1
.

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.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Registro de Estado (RE)


I

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

lnea de interrupcin (INT)

RE

(3) La CPU finaliza la ejecucin de la instruccin en curso.


(4) La CPU salva automticamente el estado en la pila, es decir, el contador de programa (PC) y el registro de estado
(RE):

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

(7) La CPU ejecuta la rutina de tratamiento de la interrupcin que realiza lo siguiente:

Salva en la pila los registros a utilizar


Realiza la operacin de Entrada/Salida
Restaura desde la pila los registros utilizados

(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:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

2. Tipos de sistemas de interrupciones: prioridades


Clasificaremos las interrupciones atendiendo a dos criterios independientes: la fuente que produce la interrupcin, y el
modo de obtener la direccin de la rutina de tratamiento o vector de interrupcin.
a) Atendiendo a la fuente que produce la interrupcin:

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 software: producidas por la ejecucin de instrucciones de la CPU.

b) Atendiendo al modo de obtener el vector de interrupcin:

Interrupciones autovectorizadas: el vector de interrupcin es fijo, una posicin de memoria asociada a la lnea de
interrupcin.

Interrupciones vectorizadas: el vector de interrupcin o parte de l lo suministra el propio perifrico cuando se le


reconoce la interrupcin.
El mtodo usual de obtener la direccin de la rutina de tratamiento de la interrupcin en ambos casos es a travs
de la tabla de vectores de interrupcin, tabla que contiene las direcciones de las rutinas de tratamiento de cada
interrupcin.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

2.1 Interrupciones autovectorizadas


Disponen de una lnea nica de peticin interrupcin a la que se pueden conectar ms de un dispositivo
perifrico, efectundose en el punto de conexin la funcin lgica OR. El vector de interrupcin para esta lnea ocupa
una posicin fija de la tabla de vectores de interrupcin. Cuando uno o ms de los dispositivo perifricos conectados a
la lnea genera una seal de interrupcin, la CPU debe identificar por software el dispositivo causante de la
interrupcin, y en caso de ser varios, establecer el orden de prioridad entre ellos. La identificacin se realiza
consultando los registros de estado locales de cada mdulo de E/S.
lnea nica de interrupcin
INT

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.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

+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:

Leer estado de E/S 1

Programa

INT
activo

Rutina de tratamiento E/S 1

Eliminar fuente
de interrupcin

interrupcin
Leer estado de E/S n

RTI

INT
activo

RTI

Rutina de tratamiento E/S n

Eliminar fuente
de interrupcin

RTI

2.2 Interrupciones vectorizadas:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Disponen de dos lneas de interrupcin, una de peticin y otra de reconocimiento.


El vector de interrupcin es generado por el dispositivo que produce la interrupcin.
Utiliza un mecanismo de daisy chaining en la transmisin de la seal de reconocimiento.

lnea de peticin de interrupcin

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

El proceso de interrupcin se desarrolla en los siguientes pasos:


1.
2.
3.
4.
5.

El dispositivo de E/S genera la peticin de interrupcin activando INT.


La CPU la reconoce activando RINT.
Los dispositivos de E/S que reciben RINT y no han interrumpido, la transmiten al siguiente elemento de la
cadena.
El dispositivo de E/S que recibe RINT y ha realizado la peticin coloca el vector de interrupcin n en el bus
de datos.
A partir del vector n la CPU bifurca a la rutina de tratamiento correspondiente al dispositivo.

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

En ocasiones, cada lnea de interrupcin tiene su propia seal de reconocimiento:

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.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

3. Enmascaramiento de interrupciones
El sistema de interrupciones de un procesador dispone en general de la posibilidad de ser inhibido, es decir,
impedir que las interrupciones sean atendidas por la CPU. Esta posibilidad hay que utilizarla en determinadas
ocasiones en las que por 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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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:

Si INTi = 0 nivel capacitado

INT0

INT1

INT2

Si INTi = 1 nivel descapacitado

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

La evolucin consiguiente de la pila y el estado de la CPU (CP y RE) ser el siguiente:

10

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

Ejemplos de sistemas de interrupciones


Estudiaremos en este apartado de forma general los sistemas de interrupciones de dos micrprocesadores, uno de 8
bits, el MC 6809, y otro de 16, el MC 68000. Con el primero estudiaremos la forma de multiplicar una lnea de
interrupcin autovectorizada en varias, tambin autovectorizadas, utilizando un dispositivo hardware. Con el segundo
veremos un sistema de interrupciones ms complejo en el que coexisten las interrupciones autovectorizadas y
vectorizadas.

6.1 Sistema de interrupciones del microprocesador MC 6809


El MC 6809 dispone de las siguientes lneas de interrupcin:
Lnea
IRQ
FIRQ
NMI
RESET

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

La tabla de transformacin de direcciones sera, pus, la siguiente:


Direccin entrada
A16....A4 A3 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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

6.2 Sistema de interrupciones del microprocesador MC 68000


En el MC 68000 las interrupciones se generalizan al concepto de excepcin, que incluye las interrupciones
hardware de E/S propiamente dichas, las producidas por eventos internos en la CPU, y las producidas por software.
Lneas de interrupcin
Las excepciones de E/S llegan a la CPU en forma codificada a travs de tres lneas externas: IPL2, IPL1,
IPL0, que codifican la ausencia de excepcin (111), y 7 niveles con prioridad (000 el ms prioritario y 110 el menos
prioritario).
VP A

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Tabla de vectores de excepcin


Asignacin
RESET (CP inicial)
RESET (SP inicial)
error del bus
direccin no existente
instruccin ilegal
divisin por cero
instruccin CHK (entero fuera de rango)

autovector nivel 1
autovector nivel 2
autovector nivel 3
autovector nivel 4
autovector nivel 5
autovector nivel 6
autovector nivel 7

192 vectores de excepcin de usuario

Ejemplo de conexin de perifricos


Para finalizar veamos el esquema completo de conexin de perifricos al sistema de excepcin del MC 68000.
Se han conectado tres perifrico de forma encadenada (daisy chain) a la lnea vectorizada de nivel 3.

15

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Tema 10: E/S de alta velocidad


1. E/S por acceso directo a memoria (DMA): motivacin
2. Estructura y funcionamiento de un controlador de DMA
3. Procesadores de e/s: tipos y estructura.
4. Programas de operacin de los procesadores de e/s.

1. E/S por acceso directo a memoria (DMA): motivacin


La E/S por interrupciones ocupa menos tiempo de CPU que la E/S controlada por
programa. Sin embargo, con cualquiera de las dos alternativas las transferencias de datos deben
pasar a travs de la CPU. Esto significa que la velocidad de las transferencias est limitada por la
velocidad a la que la CPU atiende el dispositivo perifrico, ya que tiene que gestionarlas ejecutando
una serie de instrucciones. En la E/S controlada por programa la CPU est dedicada
exclusivamente a la E/S, transfiriendo los datos a relativa velocidad, pero al precio de dedicarse a
ello a tiempo completo. Las interrupciones liberan en buena medida a la CPU de la gestin de las
transferencias, a costa de disminuir su velocidad, pues la rutina de servicio de las interrupciones
contiene por lo general instrucciones ajenas a la propia transferencia. Ambos procedimientos
manifiestan, pues, ciertas limitaciones que afectan a la actividad de la CPU y la velocidad de
transferencia.
Para poner de manifiesto de forma cuantitativa las limitaciones de la E/S programada y por
interrupcin, consideremos los dos siguientes supuestos:
Supuesto 1: conexin de un perifrico lento, una impresora lser. La CPU opera a 200 Mhz.
y su CPI vale 2. La impresora opera a 20 pginas/minuto, con 3.000 caracteres (bytes) por pgina.
Se trata de imprimir un bloque de 10 Kbytes ubicado en la memoria.

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

salvar contexto, 2 para comprobar el estado y bifurcar, 1 para la transferencia, 3 para restaurar
contexto, y 1 para retorno de 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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Por tanto, cuando se tienen que transferir grandes cantidades de datos y a una elevada
velocidad, es necesario disponer de una 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

2. Estructura y funcionamiento de un controlador de DMA


Para gestionar las transferencias de informacin, un controlador de DMA dispone de 3
registros: datos, direccin y contador de palabras.
El registro de direccin almacena la direccin de la siguiente palabra a transmitir,
incrementndose de forma automtica despus de cada transferencia. El contador de palabras
almacena el nmero de palabras que quedan por transmitir y tambin se decrementa
automticamente despus de cada transferencia. La lgica de control comprueba el contenido del
contador de palabras y finaliza la operacin cuando alcanza el valor 0. Un decodificador se
encargar de identificar la direccin de memoria asignada al DMA. La CPU debe enviar, pues, la
siguiente informacin al DMA cuando quiera realizar una operacin de E/S:

El sentido de la operacin de E/S: lectura o escritura


La direccin del perifrico
La posicin de memoria donde comienza el bloque a leer o escribir
El nmero de palabras que componen el bloque

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Alm a cen a m ien t o

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

5. Si el contenido del contador de palabras es 0, el controlador de DMA renuncia al control


del bus del sistema y enva una seal de interrupcin a la CPU.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

El DMA, se puede configurar de diferentes formas:

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.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

bus del sistema

CPU

DMA

Memoria
bus de E/S

E/S

E/S

E/S

3. Procesadores de E/S: tipos y estructura.


Como hemos visto en los 2 temas anteriores y en los primeros apartados de este tema, la
E/S de los computadores ha experimentado una continua evolucin. Comenz con la E/S
controlada por programa. Le sigui la introduccin de las interrupciones para evitar que la CPU
malgastase su tiempo esperando la realizacin de las operaciones de E/S, aumentando el
rendimiento global del sistema. Posteriormente se introduce en el controlador de E/S la capacidad
para acceder directamente a memoria a travs del DMA. De esta forma se pueden transferir
bloques de datos a/desde memoria sin intervencin de la CPU, excepto al comienzo y al final de la
transferencia.
Pero este proceso de evolucin de la E/S no termina en el DMA. En el paso siguiente se
potencia la capacidad del controlador de E/S hasta convertirlo en un procesador con un conjunto
de instrucciones especializadas en operaciones de E/S. La CPU traduce las operaciones de E/S en
rdenes dirigidas al procesador de E/S (PE/S) para que ejecute un programa de E/S residente en
memoria. El PE/S ejecuta ese programa sin la intervencin de la CPU y slo se interrumpe cuando
se ha ejecutado la secuencia completa. A los procesadores de E/S se les suele denominar tambin
con el nombre de canales de E/S. No obstante los dos trminos se emplean de forma indistinta.

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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:

El perifrico (o perifricos) que interviene en la operacin de E/S.


Las zonas de memoria utilizadas en la transferencia
Las acciones a realizar si se producen ciertas condiciones de error durante la transferencia.

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

Las comunicaciones entre la CPU y el procesador de E/S a lo largo de la ejecucin de una


operacin de E/S podemos resumirlas en el siguiente esquema:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

3.1 Tipos de procesadores de E/S o canales


Existen tres tipos de PE/S o canales:

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

conectados al canal. Esto les permite operar en forma multiplexada sobre varios dispositivos de
E/S.

Ca n a l
Mu lt iplexor

Con t r ola dor


E /S

Con t r ola dor


E /S

Con t r ola dor


E /S

Con t r ola dor


E /S

En la siguiente figura aparece la organizacin interna de un canal multiplexor. Los


parmetros correspondientes a la operacin de cada dispositivo se ubican en posiciones fijas de la
memoria principal. Cuando el canal direcciona un dispositivo particular, busca previamente los
parmetros en memoria y los lleva a los registros de uno de los subcanales. Cuando el dispositivo
se desconecta, los valores actualizados se llevan de nuevo a memoria. El nmero de subcanales
disponibles en el sistema determina el nmero mximo de operaciones de E/S que pueden
mantenerse simultneamente.

10

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Con t rola dor


E /S

Canal multiplexado por bloques


Este tipo de canal combina las caractersticas de los canales multiplexores con las de los
selectores. Permite la multiplexacin de varias operaciones de E/S de alta velocidad, bloque por
bloque. Las ventajas obtenidas a travs del empleo de canales multiplexados por bloques, en
comparacin con las de los canales selectores, surgen de la naturaleza de la operacin de
dispositivos de E/S tales como discos y cintas magnticas. Una operacin comn con una unidad
de disco puede requerir la siguiente secuencia de comandos:
Localizacin de pista(mover la cabeza de lectura/escritura a una pista dada).
Bsqueda de un sector especfico.
Inicio de la lectura de los datos contenidos en el sector.

11

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Debido al considerable retraso mecnico involucrado en las primeras dos operaciones, no es


adecuado mantener ocupado el canal durante esta secuencia, lo que sera el caso con un canal
selector. Un canal multiplexor por bloques puede enviar a la unidad de disco la orden de
localizacin de pista y despus desconectarse para dar servicio a otros dispositivos de E/S. Cuando
se completa la operacin de localizacin de pista, el canal se vuelve a conectar, enva la orden de
bsqueda del sector y se desconecta de nuevo. Al terminar la bsqueda de sector, el canal inicia la
transferencia del sector y permanece conectado hasta que finaliza la operacin. El uso de un canal
multiplexor por bloques da como resultado una mejora importante en la productividad, en
comparacin con los canales selectores.
4. Programas de operacin de los procesadores de E/S.
En un DMA simple los parmetros relacionados con las transferencias de datos se cargan
en los registros correspondientes utilizando instrucciones de E/S. En mquinas grandes que
utilizan canales de E/S, esto se sustituye por el concepto de programa de canal. El canal, como se
ha dicho antes, es un pequeo procesador que tiene acceso a la memoria principal. Es capaz de
ejecutar un conjunto limitado de instrucciones, conocidas como comandos de canal. Estos
comandos especifican aquellos parmetros que el canal necesita para controlar los dispositivos de
E/S y realizar operaciones de transferencia de datos. Un programa de canal es una secuencia de
estos comandos almacenada en la memoria principal. La CPU inicia una operacin de E/S con la
emisin de una orden especial al canal que hace que el canal empiece a buscar en memoria y
ejecutar los comandos que constituyen el programa de canal.
El programa de canal consta de una serie de palabras de comando de canal (CCW: channel
command words) cuyo formato simplificado aparece en la siguiente figura:
Oper a cin Dir eccin del da t o F la gs

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Memoria principal

4500

Cinta magntica

CCW1

80 bytes

80 bytes
registro
30 bytes

CCW2

4700

50 bytes

50 bytes

Inicio y control de los programas de canal


Hemos visto como se utilizan los programas de canal para realizar operaciones de E/S.
Estos programas residen en la memoria principal del computador y se ejecutan en el canal. Vamos
a examinar ahora la forma en que la CPU inicia y supervisa las operaciones de E/S, es decir, el
programa de canal. En el IBM S/370 existen cuatro instrucciones mquina que la CPU puede
utilizar para estos fines. Son las siguientes:
START I/O

Inicia una operacin de E/S. El campo de direccin de la instruccin se


emplea para especificar el canal y el dispositivo de E/S que participa en la
operacin.

HALT I/O

Finaliza la operacin del canal.

TEST CHANNEL

Prueba el estado del canal.

TEST I/O

Prueba el estado del canal, el subcanal y el dispositivo de E/S.

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

La CAW debe cargarse, pues, en la posicin 72 antes de la ejecucin de la instruccin


START E/S. El dispositivo indica su disponibilidad para participar en la operacin de E/S
devolviendo su direccin al canal. A partir de este momento el dispositivo permanece conectado al
canal hasta que finaliza la operacin de E/S. Establecida la disponibilidad del dispositivo, el canal
enva una seal a la CPU. En este momento finaliza la instruccin START E/S, y la CPU deja de
ocuparse de la operacin de E/S. Al finalizar la instruccin de START E/S, el canal comienza a
ejecutar el programa de canal.

16

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Tema 11: Dispositivos perifricos y buses de comunicacin.


1. Dispositivos perifricos y controladores asociados
2. Buses de comunicacin: sncronos y asncronos
3. Arbitraje de acceso a los buses
4. Buses normalizados

1. Dispositivos perifricos y controladores asociados


Estudiaremos en este apartado los principios de funcionamiento de los principales dispositivos perifricos que se
conectan a un computador as como la estructura lgica de los correspondientes controladores.
1.1 Discos magnticos
Los discos magnticos se conectan al computador como dispositivos perifricos, aunque muchos forman parte de la
jerarqua de memoria del computador. Un dispositivo de discos magnticos est constituido por una o ms superficies
circulares recubiertas por un material ferromagntico sobre el que se puede grabar informacin alterando el sentido de la
magnetizacin de pequeas reas de su superficie. El conjunto de superficies gira por la accin de un motor. La
informacin se escribe y lee a travs de un conjunto de cabezas (una por superficie) que se mueve radialmente de forma
solidaria por la accin de un motor paso-a-paso, tal como se muestra en la siguiente figura:

Cab eza d e
lect u r a y
escr it u r a
Su p er ficie
m agn t ica
Mot or
pas o-a-pas o

Mot or
de gir o

1.1.1. Grabacin de informacin sobre superficies magnticas

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

1.1.2. Mtodos de codificacin sobre superficies magnticas

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

6) Codificacin en fase (PE: phase encoding).


El 1 se representa por un cambio y el 0 por el cambio contrario. Estos cambios se realizan en el centro de la celda. Para
poderse detectar dos ceros o dos unos seguidos, es necesario efectuar tambin un cambio al comienzo del segundo.
7) Modulacin de frecuencia (FM: frequency modulation).
Es la codificacin ms sencilla, consiste en la grabacin de un cambio de flujo para cada uno, y el
omitir el cambio de flujo para cada cero. Es decir, siempre se produce un cambio al comienzo de la celda, en
el centro se producir un nuevo cambio de magnetizacin si y slo si se graba un 1. Este procedimiento se
puede realizar con una electrnica de control relativamente simple, pero tiene el inconveniente de que
cada bit de datos consume dos cambios de flujo, limitando mucho la capacidad del disco
8) Coeficiente de pulso (PR: pulse ratio).

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

1.1.3. Formato de grabacin

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:

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Ga p (17 byt es)

Sect or i

ID

.................................

Ga p (41 yt es)

30 sect or es

Da t os (41 byt es)

Ga p (20 byt es)

iden t ifica dor


Sin cr o

Byt es

N pist a

Byt es

N ca beza

N sect or

CRC (er r or es)

Sin cr o

Da t os

512

CRC (er r or es)

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Un parmetro a tener en cuenta en el funcionamiento de un disco es el tiempo medio entre fallos,

MTBF (Mean Time Between Failures), que se mide en horas (15000, 20000, 30000..). Cuanto mayor sea

este parmetro mayor ser la fiabilidad del disco.

1.1.4. Comprobacin de Redundancia Cclica (CRC)

Los cdigos de comprobacin de redundancia cclica (CRC) se utilizan fundamentalmente en dispositivos de


tratamiento serie de la informacin. El emisor genera a partir de un mensaje de k-bits que se quiere transmitir una
secuencia de n-bits, denominada secuencia de comprobacin (FCS: frame check sequence), que concatena con el anterior
para formar el mensaje realmente transmitido, con n+k bits. El FCS se elige de manera que el mensaje transmitido sea
divisible por algn nmero predeterminado. El receptor dividir el mensaje recibido por ese nmero, y si el resto de la
divisin es cero significa que no ha habido errores en la transmisin.
Aritmtica
La aritmtica que se utiliza en las operaciones CRC es mdulo 2, de acuerdo con las reglas de la teora de campos
algebraicos. Es decir, no existen acarreos para la suma ni prstamos para la resta. Tanto la suma como la resta resultan pues
idnticas a una O-exclusiva:
Suma
1111101
+ 0101001
---------1010100

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.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Ejemplo
Emisor
Mensaje original a transmitir
Patrn
FCS

M = 1010001101 (10 bits)


P = 110101 (6 bits)
R = resto de la divisin de 2nM entre P

2nM = 25M = 101000110 00000


1101010110 Q
--------------P 110101
101000110100000 2nM
110101
-----111011
110101
-----111010
110101
-----111110
110101
-----101100
110101
-----110010
110101
-----01110 R
El resto se suma a 2nM para formar T
T = 2nM + R = 101000110 01110
Que es el mensaje o trama que se transmite
Receptor
Si no hay errores el receptor recibe el mensaje transmitido por el emisor y calcula el resto de la divisin
por P:
1101010110 Q
--------------P 110101
101000110101110 2nM
110101
-----111011
110101
-----111010
110101
-----111110
110101
-----101111
110101
-----110101
110101
-----0 R
Como el resto es cero se sabe que no ha habido errores.

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Representacin de los errores


Si se produce un error en la transmisin de un bit del mensaje significa que si en origen vala 0 en
destino vale 1, y viceversa. Por tanto la representacin de cualquier error (simple o mltiple) podemos
hacerla con una cadena de bits E de longitud igual al mensaje transmitido, con valor 1 en aquellas
posiciones de bit en las que se haya producido un error. El mensaje recibido Tr tendr pues la siguiente
expresin en trminos del mensaje transmitido T y el error producido E :
Tr = T E
Si T = 11000111 y se ha producido un error en el tercer bit por la derecha, es decir, E = 00000100,
entonces Tr = (11000111) ( 00000100 ) = 11000011
Evidentemente el receptor fallar en la deteccin de un error si y solo si Tr es divisible por P, lo
que equivale a decir que E sea divisible por P.
Interpretacin polinmica de de los cdigos CRC
Los patrones de bits podemos representarlos como polinomios de una variable annima X con
coeficientes 0 1. Los coeficientes correspondern con los bits de la configuracin binaria del patrn.
As, si M = 110011, M(X) = X5 + X4 + X + 1. Las operaciones aritmticas siguen realizndose en
mdulo 2. El polinomio correspondiente al mensaje que se transmite en cdigo CRC vendr dado por:
T(X) = XnM(X) + R(X) donde R(X) es el resto de la divisin de XnM(X) entre P(X),
es decir:
XnM(X) / P(X) = Q(X) + R(X) / P(X)
Errores
Al recibir el mensaje Tr(X) el receptor lo divide por P(X).
Error simple: si ha habido un error en un solo bit, E(X) = Xi donde i determina la posicin del error. Si
P(X) contiene el factor X+1, E(X) nunca ser divisible por P(X), por lo que detectarn los errores
simples.
Errores dobles: en este caso E(X) = Xi +Xj, donde i > j. Esto tambin se puede escribir como E(X) = Xj
(Xi-j + 1). Si suponemos que P(X) no es divisible entre X, una condicin suficiente para detectar todos
los errores dobles es que P(X) no sea divisor exacto de (Xk + 1) para ningn k hasta el valor mximo de
i j, es decir, hasta la longitud mxima del mensaje. Se conocen polinomios sencillos de bajo grado que
dan proteccin a mensajes largos. Por ejemplo, X15 + X14 + 1 no dividir exactamente a (Xk + 1) para
ningn valor de k < 32.768.
Errores en rfaga: un error en rfaga comienza y finaliza en 1, y entre ambos 1s hay 0s y 1s. Para un
error en rfaga de longitud k, el polinomio tendr la forma: Xi(Xk-1 + +), donde i determina la
distancia a la que se encuentra la rfaga desde el extremo derecho del mensaje recibido. Si P(X)
contiene un trmino X0, no tendr a Xi como factor, por lo que, si el grado de (Xk-1 + +) es menor que
el grado de P(X), el residuo nunca puede ser cero. Si la longitud de la rfaga es r+1, el residuo de la
divisin entre P(X) ser cero si y solo si la rfaga es idntica a P(X). Por la definicin de rfaga, el
primero y ltimo bits deben ser 1, as que el que sean iguales o no depende de los r 1 bits
intermedios. Si se consideran igualmente probables todas las combinaciones, la probabilidad de que se
acepte como vlido el mensaje recibido de de 1/2r-1

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Polinomios generadores estndar


CRC-12

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

El divisor tendr la siguiente forma:

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

1.1.5. Parmetros de rendimiento de un disco magntico

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Acceso a la primera pista = Ts + Tr + Tt(1 pista)


Ts = 20 ms
Bytes / pista = 512*32 = 16.384
Tiempo / pista = 16.384 / 1000.000 = 0,016384 s.
Tr = 0,016384 / 2 = 0,008192 = 8,192 ms
Tt(1 pista) = 0,016384 s. = 16,384 ms
Acceso a la primera pista = Ts + Tr + Tt(1 pista) = 45 ms.
Acceso a las restantes 7 pistas = 7 * (Tr + Tt(1 pista) ) = 7*(8,192 + 16,384 = 7 * 25 = 220 ms.
2 Acceso aleatorio
Acceso a un sector = Ts + Tr + Tt(1 sector) = 20 + 8,3 + 512/1000000 = 28,8 ms.
Acceso a 256 sectores = 256 * 28,8 = 7.372 ms
Existen una serie de tcnicas que permiten aminorar los accesos a disco as como acelerar las
transferencias de datos entre el sistema y el dispositivo. Una de las ms conocidas es la utilizacin de
memorias intermedias, buffers o cachs.
Buffer de Pista: Es una memoria incluida en el controlador del disco, que almacena el contenido de una
pista completa. As cuando se hace una peticin de lectura de una pista, esta se puede leer de una sola vez,
enviando la informacin a la CPU.
Cachs de Disco: Pueden estar dentro del propio disco duro, en tarjetas especiales o bien a travs de
programas utilizando la memoria central. La gestin de esta memoria es completamente transparente y
consiste en almacenar en ella los datos ms pedidos por la CPU y retirar de ella aquellos no solicitados en
un determinado tiempo.
1.1.6. Dispositivo floppy

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

128 bytes de datos

CRC

ndice

12

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Estructura y funcionamiento del controlador de dispositivo


La estructura del controlador del floppy disk se representa en la siguiente figura:

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

Regist ro de Despla za m ien to

R. de Com pen sa cin y Sa lida

Consta de los siguientes elementos:


Registro de pista contiene el nmero de pista sobre el que se encuentra en cada momento la cabeza.
Registro de estado codifica la informacin de estado del dispositivo: disponible,.
Registro de Ordenes almacena la orden recibida por la unidad de E/S. Entre otras dispone de las siguientes:

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

R.Da t os n de pist a

<R.Da tos> : <R.P ist 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

1.2 Discos pticos


Se trata de dispositivos para el almacenamiento de informacin cuya lectura se realiza por medios pticos. Existen
diferentes tipos, siendo los ms importantes el CD-ROM (Compact Disc ROM) y el WORM(Write Once, Read Many
times).
1.2.1. CD-ROM
La informacin se almacena en forma de hoyos (pits) y salientes (bumps), grabados mecnicamente sobre un
substrato de aluminio brillante, y son ledos por medio de un lser que se refleja con diferente direccin en los hoyos que
en los salientes.

0,5 micras
1,6 micras

Etiqueta
Capa protectora
Capa aluminio

Base de
policarbonato transparente

El proceso de escritura (grabacin) sigue los siguientes pasos:

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Del molde original se obtienen varios discos denominados matrices, que son copias en negativo de los discos
definitivos.
Con las matrices se obtiene la capa de aluminio de CD-ROM.
Finalmente se 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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

01 0001 0000 0000


00 0001 0001 0000
00 0100 0010 0000
00 1001 0000 0000
.................

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

Un sector queda representado por 98 tramas


Bits de canal de un sector = 588 bits/trama * 98 tramas/sector = 57.624 bits
Luego los
2.048 bytes = 16.388 bits de datos de usuario
ocupan
2.352 bytes = 18.816 bits de datos lgicos
y
57.624 bits fsicos de canal.
1.2.2. DVD (Digital Versatil Discs)
Constan de varias capas de informacin sobre una misma cara del disco separadas por materiales
que permiten el acceso selectivo a cada capa por medio de lseres con diferentes propiedades de reflexin.

Base de
Base de

1.2.3. WORM (Write Once, Read Many times)

16

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

1.3 Discos magnetopticos o WMRA (Write Many, Read Always)


Proceso de escritura:

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

campo magntico externo

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

1.4 Monitores de tubo de rayos catdicos (CRT)


Existen dos tipos de monitores basados en tubos de rayos catdicos, los caligrficos y los de barrido o raster. Los
primeros generan la imagen haciendo que un haz de electrones trace sobre la superficie fosforescente de la pantalla la
forma de la figura que se quiere visualizar. Los de barrido componen la imagen sobre un conjunto de lneas paralelas
horizontales, inhibiendo o no el haz en el momento que pasa por los diferentes puntos de la pantalla.
1.4.1. Principios de funcionamiento
En la siguiente figura se han representado los componentes principales de un monitor monocromo (blanco y
negro) de tubo de rayos catdicos (CRT) que utiliza la tcnica de barrido. El componente bsico es el tubo de rayos
catdicos que incluye un can que produce un haz de electrones. Cuando los electrones pasan a travs del campo
magntico producido por la bobina de deflexin montada en el cuello del tubo, sufren una desviacin en funcin del valor
del campo magntico. Cuando los electrones alcanzan la superficie interna del tubo, cubierta de una capa de material
fosforescente, se ilumina el punto de incidencia.
La pantalla mantiene la imagen refrescndola peridicamente a una frecuencia suficiente para la persistencia de la
retina. La tcnica de barrido utilizada por la mayora de los monitores es anloga a la utilizada por los aparatos de
televisin. Las seales que actan sobre la bobina de deflexin son generadas por dos osciladores, uno actuando sobre la
componente horizontal y el otro sobre la vertical. Los osciladores son sincronizados por seales externas, HSYNC para la
sincronizacin horizontal, y VSYNC para la vertical, despus se amplifican antes de entrar en la bobina. La seal de VIDEO
controla la intensidad del haz de electrones, y por tanto la iluminacin de los puntos de la imagen sobre la pantalla.

18

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Algo equivalente ocurre para el sincronismo vertical:

intervalo de boorrado vertical

pulsos de VIDEO y HSYNC


hor

VSYNC

21

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

1.4.2. Generacin de caracteres


Para entender el funcionamiento de la lgica de temporizacin y control de la pantalla en el proceso
de visualizacin, consideraremos en primer lugar el caso aislado de generacin de un carcter, la Z, que
constituye el primer carcter de una lnea almacenada entre las direcciones dir_ini y dir_fin en la RAM de
refresco.
La codificacin en mapa de bits de todos los caracteres visualizables se halla en una memoria
ROM, denominada Generador de Caracteres. En dir_ini se encuentra en realidad la codificacin ASCII de
la Z, que se utilizar como puntero (direccin) al inicio de la zona de la ROM donde comienza la
codificacin en mapa de bits de la Z.
HSYNC
VSYNC

LOGICA DE TEMPORIZACION Y CONTROL


dir_refresco

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

dir_refresco dir_ini

dir_ lnea

REGISTRO DESPLAZAMIENTO ROM[RAM[dir_refresco] + dir_lnea]

Despla. Derecha REGISTRO DESPLAZAMIENTO 8 posiciones

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

ESTA ES UNA LINEA...

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

contadores va dividiendo la frecuencia del Reloj en los valores adecuados al recorrido de cada contador, que se
corresponden con la 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

ESTA ES UNA LINEA...

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

1.5 Pantallas de cristal lquido


El cristal lquido de tipo twisted nematic, inventado por Schald y Helfrich y mostrado por Fergason en 1971, representa la
primera aplicacin con xito de los cristales lquidos. Se basa en la regulacin del paso de luz polarizada mediante cristal
lquido sometido a una tensin elctrica.
Cuando la luz no polarizada pasa a travs de un filtro polarizador, slo se transmite un plano de polarizacin. Si se utilizan
dos filtros polarizadores juntos, la transmisin de la luz depender de su orientacin relativa. Por ejemplo, cuando los
polarizadores se disponen de forma que sus planos de polarizacin son perpendiculares entre s, la luz se bloquea. Pero
cuando el segundo filtro, llamado analizador, es paralelo al primero, la luz que pasa por el primer filtro pasa tambin a
travs del segundo.

24

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

luz no polarizada

polarizador

luz polarizada

analizador

luz bloqueada

luz no polarizada

polarizador

luz polarizada

analizador

Luz polarizada

Una celda de cristal lquido twisted nematic est compuesta por:

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

1.5.2 Impresora de chorro de tinta


La impresora de chorro de tinta utiliza un principio de funcionamiento anlogo a las pantallas
caligrficas de rayos catdicos. Controla la desviacin elctrica que experimenta un chorro de tinta
ionizada para dibujar sobre el papel la forma deseada. En este caso la informacin de la forma a dibujar se
traduce en una diferente ionizacin del chorro de tinta para que se desve de la forma adecuada cuando
pasa por unos electrodos a potencial fijo en su camino hacia el papel. La ionizacin de la tinta se produce
en un electrodo de carga que se controla con la seal del carcter a imprimir.
La impresora dispone de un dispositivo para recoger la tinta no utilizada y devolverla al circuito de
alimentacin de la cabeza que emite el chorro.
Las impresoras de inyeccin de tinta pueden producir texto e imgenes de alta calidad en blanco y
negro o color.

deflexin
vertical

electrodo
de carga

0 - 200 V

papel
3 kV

Control
bomba

Tinta

seal
forma
carcter

tinta no
utilizada

Filtro

27

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

1.5.3 Impresora lser


El principio de funcionamiento de la impresora lser se asemeja al de la pantalla de barrido de
rayos catdicos. La imagen elctrica a imprimir la forma un rayo lser sobre un cilindro recubierto de un
material fotoconductor giratorio cuya superficie se corresponde con la de la pgina impresa. El lser opera
generatriz tras generatriz. Cada generatriz del cilindro se corresponde con una lnea de puntos de la
pgina. La imagen elctrica se transforma en imagen real por la aplicacin de un polvo de carbn
denominado toner. El cilindro impregnado de toner se transfiere a la pgina de papel con la ayuda del
calor y la presin.
Rayo Laser
Espejo
octogonal
rotatorio

Modulador

Emisor de
Laser

Rodillo de
arrastre

Toner

Cilindro
giratorio

Ratn

fotodetector

Contador
Y

Contador
X

fotodetector

28

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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:

Lneas de Direcciones: determinan la unidad que hace de slave en la transferencia

Lneas de Datos: transportan los datos de la transferencia.

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:

Peticin del bus


Cesin del bus
Ocupacin del bus

29

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

CPU

Memoria

E/S

direcciones, datos

control

arbitraje

Las lneas de un bus podemos tambin clasificarlas en funcin de su direccionalidad:

Lneas unidireccionales
Emisor simple
control tri-state

Emisor mltiple

colector abierto

Lneas bidireccionales

30

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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:

Ancho de banda: velocidad de transferencia medida en Mb/s


Anchura del bus: nmero de lneas que lo componen
Ancho de datos: nmero de lneas de datos
Capacidad de conexin: nmero de unidades conectadas al bus

2.2 Protocolos de transferencia


2.2.1 Sncronos

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

lectura
datos/direccion
es

dato

direccin

reconocimiento
dato disponible

Tiempo de acceso a memoria

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

direccin --> datos/direccin


Activar peticin lectura
reconocimiento = 0

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

direccin <-- datos/direccin


Activar reconocimiento
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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Reloj

Direccin

Datos
Espera
Escritura
asncrona

Escritura
sncrona

Lectura
sncrona

Lectura
asncrona

2.2.4 Ciclo partido

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

3.2 Protocolo de encadenamiento (daisy chaining) de tres seales


Utiliza una lnea ms que el protocolo anterior, la lnea de ocupacin. Adems, la lnea de peticin
no es encadenada sino compartida por todos los masters a travs de una entrada al rbitro con capacidad
de O-cableada.
Cuando un master toma el control del bus activa la lnea de ocupacin. El rbitro slo activa la
lnea de concesin cuando recibe una peticin y la lnea de ocupacin est desactivada. Como en el caso
anterior, si un master recibe la concesin y no ha solicitado el bus, transmite la seal al siguiente master.
Un master toma el control del bus si tiene una peticin local pendiente, la lnea de ocupacin est
desactivada y recibe el flanco de subida de la seal de concesin.
concesin

M1

M2

Mn

peticin
ARBITRO
ocupacin

BUS

3.3 Protocolo de encadenamiento (daisy chaining) de cuatro seales


Este protocolo permite simultanear el uso del bus por un master con el proceso de arbitraje para la seleccin del
master siguiente. De esta forma, cuando el primer master abandona el bus, no se pierde tiempo en el arbitraje para el
siguiente porque ya se ha hecho, pasando directamente el master seleccionado a realizar su transaccin, al tiempo que se

35

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

3.4 Protocolo con concesin por encuesta (polling)


Este protocolo sustituye la lnea encadenada de concesin del bus por un conjunto de lneas que
permiten acceder de forma selectiva a la direccin asignada cada master sobre estas lneas.

log2n

M1

M2

Mn

concesin
ARBITRO

peticin
ocupacin

BUS

36

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

3.5 Protocolo con seales independientes


Tambin denominado en estrella, utiliza una lnea de concesin especfica para cada lnea de peticin
independiente. Esta alternativa tienen la ventaja que el rbitro puede aplicar distintos algoritmos de decisin en caso de
peticiones simultaneas (FIFO, prioridad fija, prioridad variable). Adems, los retardos de propagacin de las seales son
pequeos en comparacin con las anteriores alternativas.
Tiene la desventaja del nmero elevado de lneas de arbitraje (una por posible master). El nmero de master
queda limitado al nmero de lneas existentes.

M1

M2

Mn

concesin-1
peticin-1
ARBITRO
concesin-2
peticin-2
concesin-n
peticin-n

BUS

3.6 Protocolo distribuido


En estos protocolos la responsabilidad del arbitraje no reside una unidad independiente sino que se
distribuye por los diferentes masters conectados al 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

Arbitro-i concede el bus al master Mi activando Gi si:

Mi ha activado su lnea de peticin de bus Ri,


La lnea de ocupacin est desactivada.
La lnea de entrada de prioridad Pi-1 est activada

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Procesador

Bus del sistema (nico)

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

bus del sistema

Adaptador
de bus

Bus de E/S o bus de expansin

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

bus del sistema

Adaptador
de bus

Bus de alta velocidad

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

Nivel de temporizacin o sincronismo, que especifica el protocolo de transferencia empleado

Nivel de arbitraje, especifica el protocolo de arbitraje que utiliza el bus.

5.1 Bus PCI (Peripheral Component Interconnect)


El bus PCI es un bus de ancho de banda elevado e independiente del procesador. El estndar actual permite el uso de
hasta 64 lneas de datos a 66 MHz, para una velocidad de transferencia de 528 MBytes/s, o 4,224 Gbps. El PCI est
diseado para permitir una cierta variedad de configuraciones basadas en microprocesadores, incluyendo sistemas con uno
o varios procesadores. Utiliza temporzacin sncrona y un esquema de arbitraje centralizado.
5.1.1 Estructura

El bus PCI puede configurarse como un bus de 32 o 64 bits. La siguiente tabla define las lneas ms importantes
obligatorias en el PCI:
CLK (reloj)

Seal de reloj que es muestreada en el flanco de subida.

RST# (reset)

Hace que todos los registros y seales especficas del PCI pasen al estado inicial.

Seales de direcciones y datos


AD[31:0]

Incluye 32 lneas para datos y direcciones multiplexadas en el tiempo.

C/BE[3:0]#

Se utilizan para interpretar y validar las lneas de datos y direcciones.

Seales de control de interfaz


FRAME#

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#

Seal de slave preparado (Target Ready). La activa el slave al principio de la transferencia, y la


desactiva cuando no puede completar la transferencia en un solo ciclo de reloj

DEVSEL#

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

5.1.3 Transferencia de datos

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:

activando FRAME, que permanece activa hasta la ltima fase de datos

situando la direccin de inicio en el bus de direcciones

situando la orden de lectura en las lneas C/BE.

b)

El slave reconoce su direccin en las lneas AD al comienzo del ciclo de reloj 2.

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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)

Al mismo tiempo, el rbitro activa GNT-A para ceder el acceso al bus a A.

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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:

Detectar la conexin de nuevos dispositivos al sistema .


Detectar la desconexin de dispositivos previamente conectados,
Enumerar y configurar los dispositivos conectados al sistema.
Administrar y controlar el flujo de datos entre el host y los dispositivos USB.
Administrar y controlar las transferencias sncronas y asncronas de informacin.
Recoger y resumir estadsticas de actividad y estado de los elementos del sistema.
Proporcionar energa elctrica a algunos dispositivos del computador (teclado, ratn, etc.).

Un puerto serie es capaz de transmitir hasta 112,5 KB/s y un puerto paralelo entre 600KB/s y 15MB/s, sin embargo la
velocidad de transferencia de un puerto USB est entre 1,5MB/s y 12MB/s. El FIREWIRE (IEEE 1394), maneja
transferencias entre 100MB/s y 400MB/s, que permite conectar hasta 63 dispositivos y un cable de 4.5 metros por
dispositivo, permitiendo al igual que el USB la 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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

En la siguiente figura aparece un diagrama de bloques de un microcontrolador USB:


DPO

D MO
Tra n s c e iv e r

S IE
(Ser ia l Bu s
In t er fa ce E n gin e)

F IU
(F u n ct ion
In t er fa ce U n it )
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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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.

USB permite dos tipos ms de transferencias de datos:


Control
Es un tipo de comunicacin exclusivamente entre el host y el dispositivo que permite configurar este ltimo. Sus
paquetes de datos son de 8, 16, 32 o 64 bytes, dependiendo de la velocidad del dispositivo que se pretende controlar.
Interrupcin
Este tipo de comunicacin est disponible para aquellos dispositivos que demandan mover muy poca informacin
y con poca frecuencia. Su paquete de datos tiene las mismas dimensiones que el de las transmisiones de control.

5.3 Bus SCSI (Small Computer System Iterface)


El bus SCSI se utiliza en ordenadores personales y en muchas estaciones de trabajo. Se trata de una interfaz
paralela, con 8, 16 o 32 lneas de datos. Cada dispositivo SCSI tiene dos conectores, uno de entrada y otro de salida,
conectndose en cadena (daisy chain). Todos los dispositivos funcionan independientemente, y pueden intercambiar datos
entre ellos, igual que con el computador. Por ejemplo, un disco duro puede guardar su contenido en una cinta sin que tenga
que intervenir el procesador. Los datos se transfieren mediante paquetes, que componen un mensaje.

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Orden: el dispositivo solicita una orden de informacin al iniciador.


Datos: el dispositivo solicita la transferencia de un dato hacia el iniciador (entrada de datos, Data In) o viceversa
(salida de datos, Data Out).
Estado: el dispositivo solicita la informacin de estado desde al iniciador.
Mensaje: el dispositivo solicita la transferencia de uno o ms mensajes desde el iniciador (entrada de mensaje,
Message In) o viceversa (salida de mensaje, Message Out).
La siguiente figura ilustra el orden en que se producen las fases del bus SCSI:
Condicin de
encendido o
inicio

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

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

Estructura de Computadores, Facultad de Informtica, UCM, Curso 04-05

Error detectado en el iniciador


Abortar
Transferencia sncrona de datos

49

También podría gustarte