MAN30 Fundamentos Computadores
MAN30 Fundamentos Computadores
MAN30 Fundamentos Computadores
FUNDAMENTOS DE
LOS COMPUTADORES
Universidad de Malaga
Los autores
Publicaciones y Divulgacin Cientfica. Universidad de Mlaga.
I.S.B.N.: 84-7496-855-0
Depsito Legal: MA-141/2006
Indice de Figuras IX
Prefacio XIII
i
ii FUNDAMENTOS DE LOS COMPUTADORES
2.3.5. C
odigos de operacion . . . . . . . . . . . . . . . . . . . . 33
2.3.6. Tipos de instrucciones . . . . . . . . . . . . . . . . . . . 33
Relaci
on de Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Ap
endices 209
C. C
odigos completos para el i8086 223
C.1. C
odigos completos . . . . . . . . . . . . . . . . . . . . . . . . . 223
E. Soluci
on a las relaciones de problemas 249
E.1. Representacion de la Informaci on . . . . . . . . . . . . . . . . . 249
E.2. Procesador Central . . . . . . . . . . . . . . . . . . . . . . . . . 257
E.3. Secci
on de Control . . . . . . . . . . . . . . . . . . . . . . . . . 264
E.4. Secci
on de Procesamiento: Algoritmos
Aritmeticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Bibliografa 277
Indice de figuras
vii
viii FUNDAMENTOS DE LOS COMPUTADORES
D.1. Asignaci
on directa . . . . . . . . . . . . . . . . . . . . . . . . . 230
D.2. Asignaci
on completamente asociativa . . . . . . . . . . . . . . . 231
D.3. Asignaci
on asociativa por conjuntos . . . . . . . . . . . . . . . 232
xi
xii FUNDAMENTOS DE LOS COMPUTADORES
http://www.ac.uma.es/academia/educacion/cursos/FundCompST/
con apuntes, formulario de consulta/tutora on-line, enlaces a p
aginas de in-
Prefacio xv
Los Autores
1
Introducci
on a los
Computadores
OBJETIVOS
1.2.
ANTECEDENTES HISTORICOS
Desde tiempos muy antiguos el hombre ha necesitado hacer c alculos. Para ello
se ha buscado m aquinas que lo ayudasen, como el abaco, de origen oriental,
perfeccionado por los griegos; las Hileras de John Napier, que facilitaban la
multiplicaci
on y la divisi
on; las Reglas de C alculo, para calcular funciones
trigonometricas, exponenciales y logaritmos; etc.
intuye que la m
aquina trabajar
a mejor con numeros binarios. (Esta
idea la retoma Boole para elaborar la Logica de Boole en 1854, y
posteriormente Claude Shannon para sentar las bases de la Con-
mutacion en 1937).
En 1820, Charles Babbage, realiza el progreso mas importante: construye
en parte la m aquina analtica. Ser
a el primer computador digital de
prop
osito general. Caractersticas de esta m
aquina:
trabaja con aritmetica de 50 dgitos decimales
consigue velocidades de un segundo para sumar y restar y un minuto
para multiplicar y dividir
trabaja con tarjetas perforadas para indicar las operaciones a rea-
lizar y las variables (programa externo).
la estructura de su m aquina se aprecia en la figura 1.1.
Instrucciones Datos
Tarjetas de Tarjetas de
Operaciones Variables
Programa
Figura 1.1: M
aquina de Charles Babbage
ter). Esta m aquina tiene mas memoria pero es m as lenta. Utiliza 44 bits
en punto fijo. Las instrucciones son de cuatro direcciones y tiene dos uni-
dades aritmeticas. Sin embargo no fue la primera m aquina con programa
almacenado.
En 1946, Maurice Wilkes, de la universidad de Cambridge comienza
el EDSAC (Electronic Delay Storage Automatic Calculator). Acaba en
1949 (tres a nos antes que el EDVAC).
En 1946 von Neumann entra en el Institute for Advanced Study (IAS
de Princeton). Con subvenci on militar construye el IAS. Algunas de sus
caractersticas son:
Dimensiones 2.42.40.6 m
Memoria de 1024 palabras de 40 bits
Unidad de
Control
Datos Control
Datos
Memoria
Instrucciones
Figura 1.2: M
aquina de von Neumann
2. ARQUITECTURA:
3. FUNCIONAMIENTO:
El objetivo del procesador es ejecutar instrucciones. Las instruccio-
nes son ordenes elementales (instrucciones m aquina). Partimos de un
programa m aquina (conjunto de instrucciones m aquina) en memoria y
veremos como se ejecuta. Como las instrucciones est an en memoria acce-
demos a ellas mediante direcciones. Una vez que conocemos la direcci on
de la siguiente instrucci
on a ejecutar, las fases son las siguientes:
a) B
usqueda de la instruccion (fetch).
b) Decodificaci
on.
c) C
alculo de la direcci
on de los operandos.
d) B
usqueda de los operandos.
e) Ejecuci
on (realiza la operaci
on y almacena el resultado).
Cada instrucci
on m
aquina debe especificar:
a) La operaci
on a realizar en el C
odigo de Operaci on (C.O.)
b) Informaci
on para calcular las direcciones de los operandos y donde
se guarda el resultado (Modos de Direccionamiento).
c) Informaci
on de la direcci
on de la pr
oxima instruccion a ejecutar.
8 FUNDAMENTOS DE LOS COMPUTADORES
4. DEFINICIONES:
- RALU: ALU + Registros.
- PROCESADOR: U.C. + RALU + l
ogica adicional para interconec-
tar todos los elementos.
- MICROPROCESADOR: procesador integrado en una pastilla de
silicio (chip).
Se presentar
a la evolucion de los computadores agrup
andolos en generaciones
seg
un la tecnologa de fabricaci
on.
Primera Generaci on: v
alvulas.
Segunda Generaci on: Transistores (TRT) discretos.
Tercera Generaci on: Small Scale Integration o SSI (<100 TRTs) - Me-
dium SI o MSI (<3000 TRTs).
Cuarta Generaci on: Large SI o LSI (<30.000 TRTs) - Very Large SI o
VLSI (cientos de miles).
Quinta Generaci on: Inteligencia Artificial. Lenguajes de programaci on
l
ogicos (Japon).
Sexta Generaci on: Computadores paralelos, vectoriales y superescalares.
1. GENERACION 1.a (1938 - 1952)
Tecnologa: valvulas de vaco. Eran maquinas voluminosas, de alto
consumo, caras y de vida limitada.
M aquinas: ENIAC, EDVAC, EDSAC, UNIVAC I, IAS, y las comer-
ciales IBM 701, 704, 709.
Avances del equipo fsico: en la memoria se pasa de registros de
valvulas a n
ucleos de ferrita; en la memoria secundaria, de tarjetas
y cintas perforadas a tambores y cintas magneticas. Adem as se
introduce el control de interrupciones.
Avances del equipo l ogico: utilizaci
on de aritmetica binaria, progra-
macion en ensamblador (para ayudar al programador).
2. GENERACION 2.a (1953 - 1962)
Tecnologa: en 1948 se invent
o el transistor en los laboratorios de la
Bell. Pero hasta 1954 no construyeron el TRADIC en la Bell, que fue
el primer computador transistorizado. Las ventajas del transistor
son que es m as peque
no, el consumo es menor y m as barato que las
v
alvulas. Con lo cual los computadores se hacen m as asequibles.
CAPITULO 1: INTRODUCCION
A LOS COMPUTADORES 9
1.5.
NIVELES DE DESCRIPCION
X Sistema Z
1.5.1. Especificaci
on e implementaci
on de un sistema
Podemos distinguir entre:
La especificacion de un sistema que consiste en la descripci on funcional
de lo que hace el sistema a alto nivel.
La implementaci on del sistema que es la realizaci
on del sistema, es decir,
la construcci
on del sistema satisfaciendose requisitos tales como presta-
ciones y coste.
El paso de la especificaci on a la realizaci
on (implementaci on) se consigue
mediante la sntesis o diseno. El paso contrario, como vemos en la figura 1.4,
es el analisis.
ANALISIS
ESPECIFICACION IMPLEMENTACION
SINTESIS
SINOPSIS
OBJETIVOS
2.1. DE LA INFORMACION
CLASIFICACION
la cantidad de informaci
on codificada mediante n dgitos binarios, donde n es
determinado atendiendo a diversas consideraciones (rango de representaci on,
coste HW, etc...). Los valores tpicos de n son:
n=4 nibble
n=8 byte
n=16 word
n=32 double word
Como vemos, normalmente se utilizan palabras con n potencia de 2. Los com-
putadores actuales tienen tama nos de palabra m ultiplo de 8: 8, 16, 32 y 64
bits.
Pues bien, como hemos dicho, vamos a codificar la informaci on mediante
cadenas de 1s y 0s. Pero la codificaci
on se har
a de distinta forma en funcion
de que tipo de informacion vayamos a codificar. Por tanto, clasificaremos los
tipos de informacion que necesitamos representar en el computador seg un el
siguiente esquema:
Instrucciones
(Informacion de Control)
No Num ericos (caracteres
& alfanumericos)
Posicionales
Enteros
No Posicionales
Datos
Numericos &
Punto Fijo
Reales
Punto Flotante
y en los siguientes apartados iremos viendo, para cada uno de los tipos de
informacion, que estrategia de codificaci
on utilizamos normalmente.
Pero antes de entrar en el estudio de la representaci on de los datos y de
las instrucciones, nos vamos a plantear una cuesti on que se presenta inevita-
blemente, debido a que tanto los datos como las instrucciones se representan
mediante cadenas de unos y ceros: desde que von Neumann almacen o tanto
datos como instrucciones en memoria, estos dos tipos de informaci on son in-
distinguibles entre s (es decir, si elegimos una palabra aleatoriamente de
la memoria no podemos decir si es un dato o una instrucci on). Algunos di-
se
nadores argumentaban que se debera a nadir una etiqueta (secuencia de bits
especial) para distinguir los datos de las instrucciones y evitar cosas como
intentar ejecutar un dato. Pero a nadir etiquetas incrementa el tama no de la
memoria, el coste HW y realmente es innecesario. Si el procesador esta co-
rrectamente dise nado y el programa a ejecutar se inicializa adecuadamente y
est
a bien programado, un registro, llamado Contador de Programa (PC), per-
CAPITULO 2: REPRESENTACION
DE LA INFORMACION
17
2.2.2. Enteros
1. Posicionales, ponderados o pesados.
Son los utilizados por la gran mayora de computadores. Un n umero
se representa como un vector o secuencia de dgitos, donde cada uno
tiene un peso de acuerdo con la posici on que ocupa. Si la base de repre-
sentacion es b, el rango de cada dgito va de 0 a b 1. Como hemos dicho
anteriormente, en los sistemas de computadores se emplea la base b = 2.
O sea, si el n umero x se codifica mediante el siguiente vector de
dgitos:
xn , xn1 , ..., x1 , x0 , x1 , ..., xm
su valor es
n
'
|x| = xi bi (2.1)
m
Dentro de los n
umeros enteros tendremos que distinguir a su vez
entre los n
umeros positivos y negativos.
Si s
olo representamos enteros positivos, con n bits representaremos
desde el 0 al 2n 1.
Para codificar los n umeros enteros negativos, hemos de tener en
cuenta algunas consideraciones:
a) el intervalo de n umeros positivos debera ser igual al intervalo
de numeros negativos para un n dado
b) sea f acil detectar el signo por un simple test HW
c) sea tambien f acil detectar el 0
d) el c odigo resultante de la codificacion ha de dar lugar a una
implementaci on sencilla a la hora de realizar las operaciones
aritmeticas b
asicas.
Para dar respuesta a estas consideraciones, aparecen tres sistemas
de numeraci on posicionales que permiten la representaci on de nu-
meros negativos:
a) Signo/Magnitud
Llamaremos bit de signo al bit m as significativo (el primer bit
por la izquierda). En funci on de su valor determinamos el signo
del numero:
0 n umero positivo
1 n umero negativo
para n bits, el intervalo de representaci on va de (2 n1 1) a
2n1 1
como ventajas, cumple los requisitos (a) y (b).
como gran inconveniente, da lugar a una representaci on dual
del 0, con lo cual se desperdicia un numero y complica la detec-
ci
on del 0 (requisito (c)). Adem as no se verifica el requisito (d),
porque la suma no es tan evidente como veremos en el tema
5. Podemos adelantar que en el caso de la suma de n umeros
de distinto signo, sera necesaria la implementaci on HW de un
restador y de un comparador de magnitudes para determinar
el signo del resultado.
Como conclusi on, esta representacion ampliamente utilizada en los
computadores de la 3.a Generaci on, en la actualidad no se utiliza.
Ahora se emplea u nicamente para la codificaci on de n umeros en
punto flotante.
CAPITULO 2: REPRESENTACION
DE LA INFORMACION
19
b) Complemento a 1: (C1)
Es un caso particular del complemento a la base menos 1, en
el que la base es 2. Representaremos un numero de n bits en
complemento a uno siguiendo la siguiente f
ormula:
&
x Si x 0,
C1(x) = n (2.2)
(2 1) |x| Si x 0.
operacion que resulta equivalente a complementar los bits de x
cuando x es negativo.
como ventajas, cumple el requisito (a), puesto que la cantidad
de numeros positivos es igual a la de n umeros negativos. Es
decir, el rango va desde el (2n1 1) al 2n1 1. Adem as,
cumple el requisito (b), porque es facil detectar el signo y cum-
ple el requisito (d), porque facilita las operaciones (restar no
es mas que complementar el sustraendo y sumar, es decir, el
algoritmo y el HW para sumar y restar es com un)
como inconveniente, da lugar a una representaci on dual del 0
(tanto el 00000 como el 11111), por lo que no cumple el requisito
(c).
c) Complemento a 2: (C2)
Es un caso particular del complemento a la base, en el que la
base es 2. Representaremos un n umero de n bits en comple-
mento a dos siguiendo la siguiente f ormula:
&
x Si x 0,
C2(x) = (2.3)
2n |x| Si x < 0.
operacion que resulta equivalente a complementar los bits de x
y sumar 1 (C2(x) = C1(x) + 1) si x < 0.
como ventajas, cumple el requisito (a), puesto que la cantidad
de numeros positivos es pr acticamente igual a la de numeros
negativos. Es decir, el rango va desde el 2 n1 al 2n1 1.
Adem as, cumple el requisito (b), porque es facil detectar el sig-
no y cumple el requisito (c), porque no tiene representaci on
dual del 0, as que es f
acil detectarlo. Cumple as mismo el re-
quisito (d) como veremos en el tema de algoritmos aritmeticos.
como peque no inconveniente respecto al C1, se puede argumen-
tar que complementar a 2 es m as costoso que complementar a
1 ya que hay que realizar una suma adicional. Sin embargo, el
20 FUNDAMENTOS DE LOS COMPUTADORES
2.2.3. Reales
1. Punto Fijo
Una posibilidad, a la hora de intentar representar n
umeros con deci-
males, puede consistir en colocar un punto en algun lugar de la cadena
de unos y ceros que va a representar nuestro n
umero real. Una vez colo-
cado el punto en una determinada posicion ya no se puede modificar, ya
que esa decisi
on se toma normalmente durante el dise no de la m
aquina.
A la derecha del punto las potencias de la base son negativas.
Como ventaja, en este sistema de representaci
on los requerimientos
HW son relativamente simples.
Como inconveniente principal, tanto el rango de valores como la
precisi
on quedan limitados, y el programador o analista numerico
que quiera resolver un problema, tendr
a que escalar los numeros de
entrada y los resultados intermedios para no salirse del intervalo o
rango de valores representables.
Los n
umeros enteros se pueden ver como un caso particular de la no-
taci
on en punto fijo, es decir, como numeros en punto fijo, pero colocando
el punto detras del bit menos significativo.
2.
Punto
Flotante
Como hemos dicho, en la aritmetica de punto fijo podemos perder
precisi
on y dgitos significativos con facilidad. Para solucionarlo se pro-
pone la notaci on cientfica o de punto flotante. Consiste en representar
el n
umero mediante una mantisa, una base y un exponente. Puesto que
la base es conocida y constante, basta con almacenar la mantisa y el
exponente.
22 FUNDAMENTOS DE LOS COMPUTADORES
Donde:
(S) El bit de signo se interpreta como:
S=0N 0
S=1N 0
(M) Es la mantisa normalizada. Inicialmente se aplic o el convenio
de normalizacion de tipo. 0.1xxxx. En una mejora posterior se ar-
gumenta: en lugar de forzar un 1 a la derecha del punto decimal, lo
que hacemos es colocarlo a la izquierda del punto decimal (es decir,
en la forma 1.xxxx). Esta ser a la representaci
on normalizada. Por
otro lado, como sabemos que el n umero esta normalizado y que hay
un 1 en esa posicion, este no lo representamos. Es decir, como sa-
bemos que el n umero debe estar normalizado para representarlo, y
que si est
a normalizado seguro que hay un 1 a la izquierda del punto
para que habramos de desperdiciar un bit de la mantisa almace-
nando un 1 que siempre va a estar ah? Por tanto el 1 a la izquierda
del punto no se almacena explcitamente en la representaci on, sino
que queda implcito en el convenio.
(C) La caracterstica representa el exponente en exceso 127. Es
decir, el exponente, E, se calcula como:
24 FUNDAMENTOS DE LOS COMPUTADORES
E = C 127 C = E + 127
Existen dos motivos para representar el exponente mediante una
notaci
on en exceso, en lugar de utilizar una notaci on en C2 o alguna
otra que permita representar exponentes negativos:
En primer lugar, mediante la representaci on del exponente en
exceso, la comparaci on de dos exponentes para decidir cual es
mayor de los dos se puede realizar mediante un sencillo com-
parador de enteros positivos. La comparaci on de exponentes es
una operaci on muy frecuente en aritmetica flotante y el HW
que la implemente debe ser simple y r apido.
En segundo lugar, tambien encontramos una cuesti on sem an-
tica para utilizar notacion en exceso: a medida que el n umero va
haciendose m as peque no, la caracterstica tambien va haciendo-
se m as pequena. Como el 0 es el m as peque no, es el n
umero
que ha de tener la caracterstica mnima. Utilizando una nota-
ci
on en exceso, la magnitud de la caracterstica decrece cuando
decrece la magnitud del n umero representado, como vemos en
la figura 2.1. Si utiliz
asemos una notaci on en C2 (por ejemplo)
para la caracterstica, la magnitud de la caracterstica decrece
cuando decrece la magnitud del n umero representado si este es
mayor que uno, pero crece cuando el n umero es menor que uno.
Casos particulares
Para representar C tenemos 8 bits, es decir, podemos representar en
principio 256 (0-255) caractersticas distintas. O, traducido a exponente,
desde -127 a 128. Sin embargo, reservamos C=0 y C=255 para casos
especiales:
&
S = 0 +
M = 0
C = 255 S = 1
M = 0 NaN (Not a Number )
&
M =0N =0
C=0
M = 0 N = (1)S 0.M 2126
Los valores NaN (la traducci on literal sera no un n
umero) apare-
cen cuando el resultado de una operaci on no es un numero real ( 1,
00 , ln(1), etc...). Por otro lado, el caso en que C = 0 y M = 0 se utiliza
para representar n umeros no normalizados o desnormalizados. Este caso
particular aparece para representar n umeros con exponente menor que
-126. Luego aquellos n umeros con C = 0 y M = 0 son n umeros con
exponente E=-126 y cuya mantisa no est a normalizada, es decir, sin 1
oculto, o lo que es lo mismo, la mantisa es exactamente la almacenada.
Los n umeros no normalizados se emplean para representar n umeros muy
cercanos a 0.
A-2) Formato IE 3 754 doble precisi
on (64 bits)
El formato IE 3 754 de doble precisi on utiliza una palabra de 64 bits
organizada en los siguientes campos:
1 bit para el signo (S)
11 bits para la caracterstica, (C), en exceso 1023
52 bits para la mantisa (M)
Luego el numero representado sera:
N = (1)S (1.M ) 2C1023
B) FORMATO IBM/360
Es el formato implementado en el IBM/360. Se basa en una palabra
de 32 bits organizada en los siguientes campos:
1 bit para el signo (S)
7 bits para la caracterstica (C)
24 bits para la mantisa (M)
26 FUNDAMENTOS DE LOS COMPUTADORES
Tabla 2.1: C
odigo de caracteres ASCII en octal
Lo/Hi 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 NUL DLE DS SP & - { } \ 0
1 SOH DC1 SOS a j A J 1
2 STX DC2 FS SYN b k s B K S 2
3 ETX DC3 c l t C L T 3
4 PF RES BYP PN d m u D M U 4
5 HT NL LF RS e n v E N V 5
EOB
6 LC BS ET B
UC f o w F O W 6
P RE
7 DEL IL ESC
EOT g p x G P X 7
8 CAN h q y H Q Y 8
9 RLF EM \ i r z I R Z 9
A SMM CC SM c ! | :
B VT . $ #
C FF IFS DC4 < * % @
D CR IGS ENQ NAK ( )
E SO IRS ACK + ; > =
F SI IUS BEL SUB | ?
Tabla 2.2: C
odigo EBCDIC completo, de 8 bits. Por ejemplo, la letra J se
representa por D1h (primero el c
odigo de la columna seguido del de la fila)
2.3.4. N
umero de direcciones
El problema que abordaremos ahora es el de determinar cu antas direcciones u
operandos proporcionamos a las instrucciones. Las posibilidades que podemos
encontrar en m
aquinas reales son:
3 direcciones: especificamos de forma explcita dos operandos fuentes y
un destino.
Ej: ADD x,y,z El resultado de y+z se guarda en x (p.e. en varios
procesadores RISC como el R10000, el Alpha, etc.).
2 direcciones: perdemos un operando ya que especificamos de forma
explcita los dos operandos fuentes, pero el destino est a implcito en
uno de los dos anteriores.
Ej: ADD x,y El resultado de x+y se guarda en x (p.e. en los
procesadores de Intel) o en y (p.e. en los procesadores de Motorola).
1 direccion: Un operando fuente se proporciona de forma explcita, pero
el otro operando, as como el resultado, quedan implcitos.
Ej: ADD x El resultado de x+AC se guarda en AC (suponiendo
que en la m aquina en que se ejecuta esta instrucci
on, el convenio es que el
registro AC contenga los operandos implcitos, como en el NEC 78000).
0 direcciones: Todos los operandos son implcitos, por ejemplo, cuando
se trabaja con una pila.
Ej: ADD El resultado de sumar los dos operandos que est an en la
cima de la pila, se coloca en la cima de la pila.
Tener instrucciones con un n
umero elevado de direcciones presenta ventajas
e inconvenientes:
CAPITULO 2: REPRESENTACION
DE LA INFORMACION
33
Ventajas:
1. Los programas son m as cortos lo que supone un menor gasto de
memoria
2. Las instrucciones son m as potentes y los tiempos de ejecucion me-
nores.
Inconvenientes:
1. Las instrucciones resultantes son m as anchas, lo que supone gasto
de memoria.
2. Es necesaria una l ogica adicional de decodificaci
on.
Normalmente los procesadores potentes, y en particular los que siguen una
arquitectura RISC, utilizan un formato de instrucciones de tres direcciones.
En general, no suele ser interesante tener un n
umero mayor de direcciones. En
procesadores m as simples se toma como compromiso utilizar un formato de
dos direcciones.
Por otro lado, el n
umero de direcciones puede variar de unas instrucciones
a otras, en funci
on de cuantos operandos necesite. Por ejemplo, a la instrucci
on
NEG, que calcula el complemento a dos de un operando, no tiene sentido darle
un formato de tres direcciones.
2.3.5. C
odigos de operaci
on
El c
odigo de operaci on es el campo de la instrucci on que especifica la opera-
ci
on a realizar. Si el modo de direccionamiento no est a en un campo aparte,
tambien lo especificara el c
odigo de operacion. Es evidente que si el campo
reservado al C.O. tiene k bits, se pueden representar 2 k C.O. distintos.
Una de las tecnicas mas empleadas para reducir el tamano de los programas
consiste en asignar c odigos de operacion m as cortos a las instrucciones mas
frecuentes. Es una tecnica normal de codificaci on (codigos Humann, c odigo
Morse).
El c
odigo de operaci on no tiene por que tener una longitud fija. Es lo que
se denomina C.O. con extensi on. Dependiendo de las instrucciones y de los
operandos que necesiten, los C.O. pueden ser m as largos o mas cortos.
do facilitar
a la tarea de la compilacion y dar
a lugar a c
odigos ejecutables de
mayores prestaciones.
Los requerimientos que debe cumplir un conjunto de instrucciones m aquina
son:
1. Debe ser completo. Es decir, con el conjunto de instrucciones m aquina
se ha de poder programar cualquier funci on computable utilizando una
cantidad de memoria razonable.
2. Debe ser eficiente. Las funciones m as requeridas se deben ejecutar me-
diante pocas instrucciones r apidamente.
3. Debe ser regular. Deben existir los C.O. y modos de direccionamiento es-
perados (por ejemplo, si existe desplazamiento a la derecha, debe existir
tambien el desplazamiento a la izquierda).
4. Las instrucciones han de ser compatibles con las de procesadores de la
misma familia. De esta manera se reducen costes en el desarrollo SW.
Normalmente, el conjunto de instrucciones es distinto para procesadores de
casas o series distintas. Sin embargo, podemos decir que todos los procesadores
tienen instrucciones de los cinco tipos siguientes:
1. Instrucciones de transferencia (movimiento) de datos.
Ej.: LOAD, MOVE, PUSH, etc.
2. Instrucciones aritmeticas: operaciones sobre datos numericos.
Ej.: ADD, MUL, etc.
3. Instrucciones l
ogicas: operaciones booleanas y no numericas.
Ej.: NOT, AND, OR, etc.
4. Instrucciones de control de programa: saltos, saltos condicionales, llama-
das a subrutinas.
5. Instrucciones de E/S: transferencia de datos entre el mundo exterior y
el procesador (un caso particular de las instrucciones de transferencia de
datos).
SINOPSIS
En este tema hemos analizado los convenios a los que han llegado los arqui-
tectos de computadores para representar la informaci on mediante 1s y 0s.
Informaci on que va desde datos numericos, n
umeros negativos, n
umeros reales
por medio de un exponente y una mantisa, caracteres, hasta instrucciones,
operandos, etc. As mismo hemos abordado el problema del acceso a los datos,
mediante el estudio de los modos de direccionamiento. Y todo s olo mediante
1s y 0s.
DE PROBLEMAS
RELACION 35
DE PROBLEMAS
RELACION
Representaci
on de los datos
1. Convierte los siguientes n
umeros decimales a binario: 1984, 4000, 8192.
2. Que n
umero es 1001101001(2 en decimal? En octal? En hexadecimal?
3. Cuales de estos son numeros hexadecimales v alidos?: CAE, ABAD,
CEDE, DECADA, ACCEDE, GAFE, EDAD. Pasar los n umeros v
alidos
a binario.
4. Expresa el numero decimal 100 en todas las bases, de 2 a 9.
5. Cuantos enteros positivos se pueden representar con k dgitos usando
numeros en base r?
6. El siguiente conjunto de 16 bits:
1001 1000 0101 0100
puede representar un n umero que depende del convenio utilizado.
Dar su significaci
on decimal en el caso de que el convenio sea:
a) Signo y Magnitud
b) Complemento a 1
c) Complemento a 2
d) BCD natural (8,4,2,1)
e) BCD exceso a 3
f) BCD Aiken (2,4,2,1)
7. Para las siguientes representaciones de n bits, dar el rango, precision,
representaciones del 0 y comparar el n umero de n umeros positivos con
el de negativos.
a) Signo y Magnitud
b) Complemento a 1
c) Complemento a 2
8. Expresar los numeros decimales -63, 91 y -23 en signo/magnitud, en
complemento a uno y en complemento a dos utilizando una palabra de
8 bits.
9. Cuantos bits son necesarios para representar todos los n
umeros entre
-1 y +1 con un error no mayor de 0.0001(10 en complemento a dos y con
notacion en punto fijo?
10. Representar los siguientes n
umeros como flotantes IEEE-754 en simple
precision.
a) 10
b) 10.5
36 FUNDAMENTOS DE LOS COMPUTADORES
c) 0.1
d) 0.5
e) -23.15625
11. Que inconveniente encontramos en la representaci on de numeros reales
en punto fijo?
Dados estos dos n umeros en el formato IEEE 754: C0E80000 y 00080000;
decir que valores representan en decimal.
12. Cuales son los requisitos deseables de un sistema de numeraci on de
enteros con signo? Que sistema cumple mejor esos requisitos? Expresar
el n
umero 9.75 en su representaci on IEEE 754 de 32 bits (convierte a
hexadecimal la palabra IEEE de 32 bits).
13. En una PDP-11 los n umeros en punto flotante de precisi on sencilla tienen
un bit de signo, un exponente en exceso a 128 y una mantisa de 24 bits.
Se exponencia a la base 2. El punto decimal est a en el extremo izquierdo
de la fraccion. Debido a que los n umeros normalizados siempre tienen
el bit de la izquierda a 1, este no se guarda; solo se guardan los 23 bits
restantes. Expresa el n umero 7/64 en este formato.
14. Expresa el n umero 7/64 en el formato IBM/360, y en el formato IEEE-
754.
15. Expresa el n umero en punto flotante de 32 bits 3FE00000 (16 como n u-
mero decimal si est a representado en los siguientes formatos de 32 bits:
a) IEEE-754
b) IBM/360
c) PDP-11
16. Los siguiente n umeros en punto flotante constan de un bit de signo,
un exponente en exceso a 64 y una mantisa de 16 bits. Normalzalos
suponiendo que la exponenciaci on es a la base 2 y que el formato NO es
del tipo 1.XXXX... con el 1 implcito.
0 1000000 0001010100000001
0 0111111 0000001111111111
0 1000011 1000000000000000
17. Cual son los n
umeros positivos m as peque
no y m as grande representa-
bles para los siguientes convenios?:
a) IEEE-754
b) IBM/360
c) PDP-11
DE PROBLEMAS
RELACION 37
Representaci
on de las instrucciones
OBJETIVOS
3.1.
INTRODUCCION.
ESTRUCTURA BASICA DE UN PRO-
CESADOR
Unidad de
MEMORIA
Control
Datos Control
Datos
Unidad de
Memoria Direcciones
Instrucciones Procesamiento
E/S
escribir informaci
on. Evidentemente, si el bus tiene n lneas, tendremos
acceso a 2n posiciones distintas (a repartir entre RAM, ROM y E/S).
Este bus es unidireccional.
Bus de datos. Mediante el cual se transfiere informaci on de (hacia) la me-
moria o E/S hasta (desde) el procesador. Es un bus bidireccional y nor-
malmente determina la palabra de trabajo del procesador (si el bus tiene
n lneas decimos que el procesador es de n bits).
Bus de control. Mediante el cual se transfiere informacion de control entre
el procesador, memoria y E/S. Es un bus bidireccional.
Podemos caracterizar un bus por el n umero de lneas de comunicaci on en
paralelo (bits) que lo componen y por la frecuencia de transmisi on de los datos
en Hz. Ambos par ametros pueden en este caso fundirse en una sola magnitud,
que actua como metrica de su rendimiento, y que se conoce como ancho de
banda (BW, del ingles bandwidth), indicando la velocidad de comunicaci on
por el bus en bits por segundo (bps.). Por ejemplo, el bus local PCI del Pentium
tiene una anchura de 64 lneas y una frecuencia de 66 MHz., lo que proporciona
un ancho de banda de 528 Mbytes/s.
En este tema nos centraremos en el procesador central de forma general. Es
el componente m as complejo del sistema y su misi
on es sincronizar y coordinar
el funcionamiento de los dem as modulos del sistema, leyendo, decodificando y
ejecutando instrucciones.
n
umero de bits de los registros accesibles al programador (anchura de la
ALU).
2. Velocidad de proceso.
Estara en funci
on de ciertos par
ametros de diseno:
Frecuencia de reloj (33MHz, 100MHz, 200MHz, etc)
Tiempo de ejecuci on de cada instrucci on: CPI (ciclos de reloj por
instruccion)
Tiempo de acceso a memoria y a E/S. Normalmente estas dos uni-
dades ralentizan en gran medida al sistema completo.
El tiempo que un procesador invierte en la ejecucion de un programa
puede obtenerse como el producto de tres factores:
a) N I: Numero de instrucciones maquina en que se transforma el pro-
grama.
b) CP I: Numero medio de ciclos de reloj que se necesitan para ejecutar
cada instrucci
on maquina.
c) T : Tiempo de ciclo de reloj (o su frecuencia f como magnitud in-
versa).
Es decir, TCP U = N I CP I T = N ICP f
I
, donde TCP U resultara en
la misma magnitud en que expresamos el perodo T, por ejemplo, en
microsegundos si la frecuencia f viniera expresada en MHz.
El primero de esos factores depende principalmente del compilador.
Si este est
a optimizado para un procesador, ser a capaz de traducir un
programa de alto nivel (escrito en C, por ejemplo) en un programa objeto
o ejecutable que contenga el menor n umero de instrucciones m aquina
posibles.
El segundo factor, CPI, est a mas relacionado con el conjunto de ins-
trucciones del procesador. Por ejemplo, un procesador RISC, (cuyo con-
junto de instrucciones se compone de pocas instrucciones muy sencillas)
puede reducir el CPI incluso a la unidad, pero a costa de incrementar NI.
Para ello, una de las tecnicas que utiliza es la de segmentar (pipeline)
la ejecucion de instrucciones dentro del procesador.
El tercer factor es la frecuencia de reloj del procesador, que est a mas
relacionada con su tecnologa hardware y con las tecnicas de integraci on
de circuitos. La positiva evoluci on de estas ha permitido duplicar la
frecuencia del procesador cada 2 o 3 a nos en las dos u ltimas decadas.
3. Capacidad de proceso.
En relacion con:
a) N umero de instrucciones del P, distinguiendo entre los del tipo
44 FUNDAMENTOS DE LOS COMPUTADORES
3.2.1. Registros
Los registros son dispositivos digitales que nos permiten almacenar informa-
ci
on y acceder a ella en tiempos bastante menores que el que necesitaramos
para acceder a memoria. Podemos clasificar los registros que podemos encon-
trar en un P en funcion de la informacion que almacenan:
1. Registros de prop osito general (RPG): En estos registros alma-
cenamos la informaci on que utilizamos m as frecuentemente (ya que el
acceso a memoria es m as lento). Podemos distinguir dos subtipos de
RPGs:
Registros de datos: Almacenan datos y tienen normalmente un
numero de bits igual al de la palabra del P.
Registros de direcciones: Normalmente almacenan direcciones, por
lo que deben tener un tama no igual al del bus de direcciones.
2. Contador de Programa (PC o IP): Contiene la direcci on de memo-
ria de la cual se leer
a la siguiente instrucci
on a ejecutar. Normalmente
el contenido del PC se incrementa al ejecutar cada instrucci on para que
apunte a la siguiente instruccion a ejecutar. Si modificamos el conteni-
do del PC carg andolo con la direcci
on x, estamos realizando un salto
a la instrucci
on almacenada en la posici on x de memoria.
3. Registro de Instrucciones (RI): Almacena el c odigo de operacion
de la instruccion que estamos ejecutando en un momento dado. Es un
46 FUNDAMENTOS DE LOS COMPUTADORES
figura, las se
nales c6, c7 y c8 codifican la operaci
on que debe realizar la ALU).
Adem as, la ALU debe actualizar el registro de Estados (SR) despues de cada
operacion.
BUS 8
c1
0 MUX 1 c11
8 8 8
c9
SR c6
COS Z ALU c7
8 bits c8
c3 c2
8 c4
c10
AC X
8
8
c5
RI C.O. MD Op 1 Op 2
DECOD
SECUENCIADOR CK
.....
c1 c2 c3 c4 c5 cn
se
nal de reloj). El decodificador decodifica el c odigo de operacion en curso y
genera un conjunto de se nales que inicializan el secuenciador colocandolo en un
estado inicial. Este estado inicial ser a distinto para las distintas instrucciones
a ejecutar. A partir de este estado inicial el secuenciador evolucionar a a traves
de ciertos estados, cada uno de los cuales generar a ciertas se
nales de salida
(senales de control) que activar an los distintos puntos de control de la seccion
de procesamiento.
A cada conjunto de se nales de control para un estado dado se le llama
microinstrucci on, y por tanto la ejecuci on de cada instrucci on maquina
(macroinstrucci on) se traduce en un conjunto de micro-instrucciones. El
conjunto de microinstrucciones que ejecutan una determinada macroinstruc-
ci
on se conoce con el nombre de microsubrutina.
Existen basicamente dos tecnicas para construir el secuenciador:
1. T ecnica cableada: El secuenciador se construye mediante una m aquina
de estados compuesta de puertas, contadores, registros, decodificadores,
etc. La interconexi on de estos elementos es un poco heurstica, poco
sistematica y da lugar a secciones de control complicadas, pero bastante
r
apidas. Es la tecnica de control utilizada en los procesadores RISC.
2. T ecnica microprogramada: El secuenciador se construye mediante un
contador de microprograma que apunta a las distintas microinstrucciones
almacenadas en una memoria (llamada micro-memoria). Esta tecnica es
mas sistematica y pedag ogica, pero da lugar a secciones de control m as
lentas. Es la tecnica utilizada en los procesadores CISC.
3.3.
CICLO MAQUINA Y ESTADOS DE UN PROCESA-
DOR
3.3.2. T
ecnica pipeline de instrucciones
La tecnica de segmentaci on o pipeline consiste en dividir una tarea en sub-
tareas y ejecutar cada una de estas subtareas mediante una unidad funcional
independiente. Por ejemplo, la tarea de fabricaci
on de un coche se puede dividir
en varias subtareas y ejecutar cada una de ellas por un operario dentro de una
cadena de montaje. Esta estrategia se puede aplicar dentro de un procesador
para acelerar la ejecuci
on de instrucciones.
Por ejemplo, el 8086 de Intel, divide la tarea de ejecutar una instruccion
en dos subtareas:
1. B usqueda de instruccion
2. Decodificaci on, c
alculo de EA, busqueda de op. y ejecucion
El 8086 dedica una unidad llamada BIU (unidad de interfaz del bus) a la
busqueda de instrucciones y otra unidad independiente, EU (unidad de eje-
cuci
on), a la ejecuci
on de instrucciones. Las dos unidades operan en paralelo,
de forma que mientras se ejecuta la instruccion actual, ya se est
a buscando la
instrucci
on siguiente en paralelo. De esta forma conseguimos reducir el tiempo
de ejecucion. Este caso particular de pipeline de dos etapas se conoce con el
nombre de prefetch (preb usqueda).
CAPITULO 3: PROCESADOR CENTRAL 53
3.4.2. Registros
El 8086 presenta un conjunto de 14 registros de 16 bits que se pueden agrupar
de la siguiente forma:
Registros generales : Su funci on es el almacenamiento temporal de datos.
AX (acumulador). Es utilizado en las instrucciones aritmeticas.
BX (base). Se usa generalmente para indicar un desplazamiento.
CX (contador). Se utiliza en bucles.
DX (datos). Se utiliza tambien en operaciones aritmeticas.
Estos registros ofrecen la posibilidad de usarse ademas como registros
de 8 bits, refiriendose al byte m
as significativo con AH, BH, CH y DH o
al menos significativo con AL, BL, CL y DL respectivamente.
54 FUNDAMENTOS DE LOS COMPUTADORES
3.4.3. Gesti
on de memoria
El bus de direcciones del 8086 es de 20 bits. Esto supone que el espacio de
direccionamiento disponible es de 220 = 1 Mbyte. Cada una de estas posiciones
de memoria se puede referenciar mediante un conjunto de 20 bits. Los registros
internos de que dispone el microprocesador son de 16 bits, por lo que es nece-
sario un peque no truco para generar la direcci
on de 20 bits a partir de dos de
estos registros. Esto se consigue introduciendo el concepto de segmentaci on.
El espacio de direccionamiento del microprocesador se divide en bloques de
64 Kb, cada uno denominado segmento, de forma que, para hacer referencia a
una posicion de memoria determinada, hay que expresar el segmento en el que
se encuentra y el desplazamiento que ocupa dentro de ese segmento. A esta
forma de referenciar las posiciones de memoria se denomina direccionamiento
l
ogico. De esta forma, una direccion l
ogica est
a formada por dos n umeros, el
primero expresa el segmento y el segundo el desplazamiento.
Direcci
on l
ogica = Segmento: Desplazamiento
El segmento hay que indicarlo siempre en un registro de segmento (CS, DS,
etc..) y el desplazamiento puede expresarse de distintas formas, dando lugar
a los distintos modos de direccionamiento. Como vemos, la direcci on fsica de
20 bits (5 dgitos hexadecimal) se representa como dos enteros de 16 bits (4
dgitos hexadecimal). Por convenio, segmento y desplazamiento son n umeros
de 16 bits positivos.
Mediante este sistema es posible direccionar 16 * 64Kb = 1024 Kb = 1Mb
posiciones de memoria. La conversi on de esa direcci
on logica a direcci
on fsica
se realiza desplazando el registro de segmento 4 bits a la izquierda y sum andole
el contenido del registro de desplazamiento.
Direcci
on fsica = Segmento * 10h + Desplazamiento
Se observa que el mapeo de direcciones fsicas en direcciones l
ogicas no es
biunvoco.
Esquema de almacenamiento
MOV BYTE PTR LAB, 12H MOV WORD PTR LAB, 1234H MOV DWORD PTR LAB, 12345678H
EA(LAB)=N
Modos de direccionamiento
3.4.6. La pila
La pila de un programa ensamblador se define con la directiva SEGMENT STACK.
Si N + 1 es la longitud en bytes reservada para la pila, la zona de pila es la
comprendida entre la direcciones: SS:0000H y SS:N. De esta manera, SP se
inicializa al valor N + 1. El convenio es que SP apunte a la u ltima palabra
(posicion mas baja) que se ha introducido en la pila. Las operaciones de pila
son siempre a nivel de palabra (2 bytes). Se muestra a continuaci on el efecto
de las instrucciones mas importantes que trabajan con la pila:
Instruccion Operaci
on de pila
PUSH AX SP=SP-2; [SS:SP]=AL; [SS:SP+1]=AH;
POP AX AL=[SS:SP]; AH=[SS:SP+1]; SP=SP+2;
CALL FAR PTR LABEL SP=SP-2; [SS:SP]=CS(L); [SS:SP+1]=CS(H); SP=SP-2;
[SS:SP]=IP(L); [SS:SP+1]=IP(H);
CALL NEAR PTR LABEL SP=SP-2; [SS:SP]=IP(L); [SS:SP+1]=IP(H);
RET (lejano) IP(L)=[SS:SP]; IP(H)=[SS:SP+1]; SP=SP+2;
CS(H)=[SS:SP]; CS(L)=[SS:SP+1]; SP=SP+2
RET (cercano) IP(L)=[SS:SP]; IP(H)=[SS:SP+1]; SP=SP+2;
CAPITULO 3: PROCESADOR CENTRAL 59
3.4.7. M
odulo fuente
Instrucciones
En el programa ensamblador, las instrucciones del 8086 aparecen con el
formato general:
Etiqueta: Nombre Instrucci
on Operando(s) ;Comentario
De estos campos, solo el nombre de la instrucci on es obligatorio. En la
sintaxis del ensamblador cada instrucci on ocupa una lnea. Los campos se
separan entre s por al menos un car acter espacio (ASCII 32) y no existe
distincion entre may
usculas y minusculas.
El campo etiqueta, si aparece, debe estar formado por una cadena alfa-
numerica seguida de un identificativo que expresa su atributo. La cadena no
debe comenzar con un dgito y no se puede utilizar como cadena alguna pala-
bra reservada del ensamblador ni nombre de registro del microprocesador.
El campo nombre instrucci on es un mnem onico de la instrucci
on del pro-
cesador. Est a formado por caracteres alfabeticos (entre 2 y 6).
E1 campo operando indica d onde se encuentran los datos. Puede haber 0,
1 o 2 operandos en una instrucci
on. Si hay 2, al primero se le denomina destino
y al segundo fuente y deben ir separados por una coma. Los operandos pueden
60 FUNDAMENTOS DE LOS COMPUTADORES
Conjunto de instrucciones
Instrucciones de transferencia de datos. Mueven informaci on entre regis-
tros y posiciones de memoria o puertos de E/S. Pertenecen a este grupo
las siguientes instrucciones: MOV, LEA, IN, OUT, POP, PUSH, XCHG:
1. MOV AX, [VAR1]: (AX contenido de la variable VAR1)
2. LEA AX, VAR1: (AX direcci on de la variable VAR1)
3. IN y OUT: Lectura y escritura en los puertos de E/S
4. PUSH y POP: Escritura y lectura en pila
5. XCHG AX, BX: (AX BX)
Instrucciones aritmeticas. Realizan operaciones aritmeticas sobre nume-
ros binarios o BCD. Son instrucciones de este grupo ADD, SUB, CMP,
INC, DEC, NEG, MUL, DIV:
1. ADD AX, BX: (AX AX+BX)
2. SUB AX, BX: (AX AX-BX)
3. CMP AX, BX: (AX-BX y actualiza los flags)
4. INC AX: (AX AX+1)
5. DEC AX: (AX AX-1)
6. NEG AX: (AX C2[AX])
7. MUL BL: (AX AL BL)
8. DIV BL: (AX AX/BL; AH=resto, AL=cociente)
Instrucciones logicas. Realizan operaciones de desplazamiento, rotaci on
y l
ogicas sobre registros o posiciones de memoria. Estan en este grupo las
instrucciones: AND, OR, XOR, NOT, SHL, SHR, SAL, SAR, ROL, ROR:
1. AND AX, BX: (AX AX BX)
2. OR AX, BX: (AX AX BX)
3. XOR AX, BX: (AX AX BX)
4. NOT AX: (AX C1[AX])
5. SHL AX,n / SHR AX,n: Desplazamiento l ogico a la izquierda/de-
recha de n bits
6. SAL AX,n / SAR AX,n: Desplazamiento aritmetico a la izquier-
da/derecha de n bits. El desplazamiento aritmetico a la derecha
provoca extension de signo
CAPITULO 3: PROCESADOR CENTRAL 61
DATOS SEGMENT
;definiciones de variables
D1 DW 1
D2 DB ?
DATOS ENDS
PILA SEGMENT STACK
;reserva de espacio para pila
DB 1024 DUP(0)
PILA ENDS
CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS, SS:PILA
;instrucciones del c
odigo
...
CODIGO ENDS
END INICIO
SINOPSIS
DE PROBLEMAS
RELACION
posici
on fsica contenido
MOV AX, [TABLA] ..... .....
MOV AX, [SI] E0006 DE H
MOV AL, [SI] E0005 BC H
MOV AX, [SI+2] E0004 9A H
MOV AX, TABLA[SI] E0003 78 H
MOV AL, TABLA[SI] E0002 56 H
MOV AH, TABLA[SI] E0001 34 H <-- TABLA
MOV AX, [BP+2] E0000 12 H
MOV AX, [BX+SI] ..... .....
MOV AX, [BP+SI] 5D276 07 H
MOV AL, [BP+SI+1] 5D275 06 H
MOV AH, TABLA[BX][SI] 5D274 05 H
LEA AX, TABLA 5D273 04 H
LEA DI, TABLA[SI+1] 5D272 03 H
MOV AX, SEG TABLA 5D271 02 H
MOV CX, OFFSET TABLA 5D270 01 H
..... .....
CODIGO1 ENDS
CODIGO2 SEGMENT
ASSUME CS:CODIGO2, DS:DATOS, SS:PILA
FILL_IN PROC FAR
PUSH BP
MOV BP,SP
LEA SI,[BP+8]
LEA DI,[BP+6]
MOV AX,SS:[SI]
MOV DH,AL
MOV AX,SS:[DI]
MOV DL,AL
MOV AH,06H
INT 10H
POP BP
RET
FILL_IN ENDP
FILL_INI PROC FAR
MOV BYTE PTR H,33H
RET
FILL_INI ENDP
CODIGO2 ENDS
END INICIO
a) Muestre la evoluci on de la pila del programa indicando que valores
(o que registros) van ocupando las posiciones de esta. (Al comenzar
la ejecuci
on del programa AX, BX, CX, DX, BP se suponen cero y
SP vale la longitud de la pila)
b) Explique los modos de direccionamiento que aparecen en el progra-
ma.
c) Si las rutinas FILL IN, FILL INI hubieran estado en el mismo seg-
mento que el programa principal, se podran haber invocado como
etiquetas cercanas (CALL (NEAR PTR) ...). De que manera afecta
esto a la ejecucion del programa?
13. Las siguientes cuestiones est an referidas al procesador Intel 8086:
a) Los dos fragmentos siguientes de programa ensamblador realizan
una operaci on sobre los registros AX, BX, CX, cuyo resultado nu-
merico es el mismo. Cu al se espera que se ejecute en menos tiem-
po? Por que razones? Que instrucciones podran ser eliminadas
directamente sin modificar la sem antica del c
odigo?
DE PROBLEMAS
RELACION 69
5
Recuerda que el 8086 realiza las operaciones aritmeticas en complemento a dos y debes
usar el convenio del fabricante para rotaciones y desplazamientos si procede.
4
Secci
on de Control
OBJETIVOS
4.1.
INTRODUCCION. CONTROL CABLEADO VER-
SUS MICROPROGRAMADO
6
En otras palabras, la siguiente microoperaci
on sera determinada en funci
on de la mi-
crooperaci
on actual y en algunos casos del estado de ciertos flags.
74 FUNDAMENTOS DE LOS COMPUTADORES
RI C.O. MD Op 1 Op 2
SEALES
DE
CONTROL
cn
DECOD
.....
LOGICA
DE c5
LOGICA DE GENERACION LOGICA DE IDENTIFICACION
CK DEL SIGUIENTE ESTADO DEL ESTADO DE CONTROL
DECOD. c4
(opcional) c3
DE CONROL ACTUAL
c2
c1
CONDICIONES FLAGS
RI C.O. MD Op 1 Op 2
SEALES
DE
CONTROL
Proyector del cn
Codigo de Operacin
.....
LOGICA
microinst. DE c5
Secuenciador de Microprograma direcc. Memoria de Microprograma
CK
DECOD. c4
(Genera la siguiente direccin) (Almacena microinstrucciones) c3
c2
c1
Informacin sobre la direccin siguiente
CONDICIONES FLAGS
Esta memoria almacena la informaci on del estado de control actual, que es-
tar
a identificado por la direcci
on seleccionada en dicha memoria. El contenido
de esta posicion ser
a la microinstruccion a ejecutar y suministra la informa-
CAPITULO 4: SECCION
DE CONTROL 75
ci
on necesaria para generar las se nales de control y para que el secuenciador
de microprograma determine la direcci on de la siguiente microinstrucci on a
ejecutar.
El concepto de microprogramaci on fue propuesto en 1951 por Maurice
Wilkes. Aunque conceptualmente la unidad de control microprogramada era
mucho m as flexible y estructurada que la cableada, la microprogramaci on no
se empez o a usar comercialmente hasta 1964, con la serie System/360 de IBM.
La razon es que los tiempos de acceso en las memorias ROM disponibles hasta
entonces eran tan altos que la perdida de prestaciones en los sistemas micro-
programados era inaceptable para usos pr acticos.
A partir de finales de los 60 y principios de los 70, el desarrollo de memorias
de semiconductor r apidas y baratas permiti o la expansi on de la microprogra-
macion a los minicomputadores, generaliz andose su uso. Adicionalmente, el
uso de memorias RAM para contener microprogramas posibilit o el dise
no de
sistemas microprogramables din amicamente, en los que el programa de con-
trol puede ser cambiado durante el funcionamiento simplemente cambiando
los contenidos de la memoria microprograma.
En la actualidad, el uso del control microprogramado es generalizado en
los microprocesadores de juego de instrucci on complejo (CISC). Sin embargo,
en el diseno de procesadores de juego de instrucci on reducido (RISC), en los
que el control es relativamente simple, se prefiere el uso de unidades de control
cableadas, con el fin de optimizar al m aximo las prestaciones del hardware y
reducir en lo posible el tiempo medio de ejecuci on de una instrucci on (es decir,
bajar el CPI ciclos de reloj por instrucci on).
Puede resultar confuso y quiz as poco did actico intentar definir desde el
primer momento los conceptos relativos a la microprogramaci on. Por ello, in-
tentaremos hacer una primera aproximaci on a estos conceptos mediante un
ejemplo para posteriormente adentrarnos m as en detalle en temas avanzados.
De acuerdo con esta filosofa, comenzaremos describiendo el flujo de datos
de un hipotetico procesador simple. A continuaci on, ilustraremos la tecnica
de control microprogramada mediante el desarrollo paso a paso de la sec-
ci
on de control microprogramada que controle a la secci on de procesamiento
inicial. Finalmente, se introducir a un conjunto de conceptos m as complejos,
relacionados con la temporizaci on, optimizaci on del dise no, y generacion de
microsubrutinas asociadas a instrucciones m aquina.
76 FUNDAMENTOS DE LOS COMPUTADORES
4.2.
DISENO DE UNA UNIDAD DE CONTROL MICRO-
PROGRAMADA
RAM
C3 W (CS)
C4
8 8
8
1 0
MUX C6
C7
DR C5
BUS
Z L R C0
C
ALU C1 1 0
C2 C14 C12
MUX C8
1 0
C16 C9
MUX C10
IR PC MAR
C11 C13
(inc)
C Significado C Significado
c0 Selecci
on ADD en ALU c1 Selecci
on AND en
ALU
c2 Selecci
on COMP de la entrada L c3 Read(R) / Write(W )
de la ALU (C1)
c4 Habilitaci
on memoria c5 MEM DR
c6 0:(DR MEM), 1:(DR AC) c7 Escritura en DR
c8 0:(MAR DR), 1:(MAR PC) c9 Escritura en MAR
c10 0:(AC DR), 1:(AC ALU) c11 Escritura en AC
c12 PC DR c13 INC PC
c14 IR DR c15 Desplaza a la derecha
AC
c16 Carga registro de estado (C,Z)
nectado a una u
nica lnea de control, tal como se muestra en la figura 4.4.
MicroRI
c0 c2 c3 c16
Memoria
INC Contador de
Microprograma
CK
STORE
MicroRI
c0 c2 c3 c16
Memoria
INC
Contador de
Microprograma
17
STORE
MicroRI
c0 c2 c3 c16
CK
ciclo maquina.
La colecci
on de microinstrucciones almacenadas en la memoria se deno-
mina microprograma. La memoria que contiene el microprograma se
denomina memoria de microprograma, mientras el contador que la
direcciona act
ua como un secuenciador de microprograma muy primitivo
que tambien llamaremos contador de microprograma o MicroPC.
a que ese punto de control, c9, se activa por flanco de subida, de forma que
fuerza la carga del registro MAR cuando pasa de 0 a 1. Por tanto, la primera
microinstrucci a el efecto esperado 7 , pero la segunda no, ya que que
on si tendr
en principio no existe ninguna transici on baja-alta.
Es evidente, pues, que es necesario secuenciar la generaci on de diferentes
conjuntos de senales de control dentro del ciclo m aquina. Una solucion simple
que adoptaremos para el ejemplo que estamos desarrollando, en el que dis-
ponemos de una u nica senal de reloj, es emplear el flanco de bajada de esta
para temporizar las se nales activas por flanco, de manera que si un bit del
MicroRI asociado a un punto de control por flanco este activo, se produzca
una transicion baja-alta con el flanco de bajada del reloj. Los cronogramas
mostrados en 4.7 muestran la situaci on que deseamos implementar.
CK
bit i Ci (nivel)
bit j Cj (flanco)
n n+1 MicroPC
CK
Memoria
INC Contador de
Microprograma
STORE
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
C0 C1 C2 C3 C4 C5 C6 C8 C10
00
0 M
C 01
U
10
LOAD
MicroPC Memoria
Z X INC
de
1 11 1
Microprograma
c17 c18 CK
c0 c1 c16 2 6
c19...c24
tambien puede ser cargado con un nuevo valor que llega desde el campo Direc-
ci
on del MicroRI. El incremento o la carga del MicroPC estar a determinado
por las entradas de control INC o LOAD respectivamente, siendo estas entra-
das activas a nivel alto. El incremento del MicroPC esta asociado a la ejecuci
on
secuencial, mientras que la carga implicar a un salto a nivel de microprogra-
ma. Los dos bits del campo Condici on de Salto, CS, seleccionan una de las
entradas del MUX1 de forma que:
CS=00 La entrada 00, alimentada con un 0 l ogico, provocara el incremento
del MicroPC. Es decir, ejecuci on secuencial.
CS=11 La entrada 11, alimentada con un 1 l ogico, provocara la carga del
MicroPC. Es decir, salto incondicional.
CS=01 La entrada 01, alimentada con el valor del flag C determinar a la
carga o el incremento del MicroPC seg un C=1 o C=0, respectivamente.
Es decir: salto condicional al flag C.
CS=10 La entrada 10, alimentada con el valor del flag Z determinar a la
carga o el incremento del MicroPC seg un Z=1 o Z=0, respectivamente.
Es decir: salto condicional al flag Z.
Este simple mecanismo de salto permite incrementar notablemente las po-
CAPITULO 4: SECCION
DE CONTROL 85
4.2.4. Microprogramaci
on del conjunto de instrucciones
Una vez dise nados el datapath y el secuenciador de control del procesador
elemental, se podra proceder a la microprogramaci on de las diversas (ma-
cro)instrucciones de que se quiera dotar a su juego de instrucciones. Es decir,
tenemos que completar el dise no teniendo en cuenta que al fin y al cabo el
procesador que hemos dise nado tiene que ser capaz de ejecutar cualquier pro-
grama que tenga en su memoria principal. Por tanto debe ejecutar cualquier
instrucci on del conjunto de instrucciones de este procesador, a traves de las
etapas de b usqueda de instruccion, decodificacion, calculo de la direcci
on efec-
tiva, busqueda de operandos y ejecuci on como se explic o en el tema anterior.
M as concretamente, la ejecuci on de cada instrucci on se llevar
a a cabo median-
te la ejecuci on de una microsubrutina (o microrrutina) asociada a cada
instrucci on maquina.
Se supone que antes de ejecutar el programa, el sistema operativo, habr a co-
locado el programa en memoria y habr a inicializado el contador de programa,
PC, con la direcci on de la primera instruccion m aquina a ejecutar. A partir de
ah, la secci
on de control ser
a la encargada de ir leyendo las instrucciones que
sean apuntadas por el PC, carg andolas en el IR y ejecut andolas, hasta que el
programa termine y se devuelva el control al S.O.
En cuanto al registro IR, vemos que no es m as que un registro que se de-
86 FUNDAMENTOS DE LOS COMPUTADORES
IR
ROM de
Proyeccion
1 0
c17 MUX2
Memoria
c16
00 de
0 M
01 Microprograma
C U LOAD
Z 10 X INC MicroPC
11 1
FLAGS 1
1 17 20 25
c18 c19 MicroRI Puntos de control P CS Direcc. salto.
2
c0 c1 c2 c16 c17 2 6
c20...c25
por simplificacion, la l
ogica adicional necesaria de temporizaci on, pero no hay
que olvidar que las microordenes son secuenciadas ordenadamente, tal y como
se explic
o en la seccion 4.2.1.
Retomaremos ahora, una vez completado el dise no del procesador, el pro-
blema de escribir las microrrutinas asociadas a cada una de las instrucciones
m aquina. Cualquier microrrutina debe contener las microinstrucciones nece-
sarias para realizar las siguientes funciones:
1. El contenido de la memoria apuntado por el PC debe ser cargado en
el registro RI (b usqueda de instrucci on). A continuaci on y a partir
del C.O. recien cargado en el RI, se debe cargar la direcci on inicial de
la microrrutina asociada en el el registro MicroPC (Decodificaci on).
Adem as, se incrementar a el registro PC para que apunte a la siguiente
palabra de memoria.
2. Es ejecutado el n ucleo de la microrrutina: c alculo de direcci on efec-
tiva, busqueda de operando(s) y ejecuci on.
3. La u ltima microinstrucci on de la microrrutina deber a saltar de nuevo al
conjunto de microinstrucciones encargadas de la b usqueda y decodifica-
ci
on de instrucciones, que proceder a a leer de la memoria principal la
siguiente instrucci on a ejecutar, volviendo as a comenzar el ciclo.
Dado que la fase de b usqueda y decodificaci on de instrucciones es com un
e independiente de la instrucci on en particular que vaya a ser ejecutada, escri-
biremos las microinstrucciones encargadas de dicha misi on una u nica vez en
la memoria de microprograma, por ejemplo, a partir de la posici on 0 de esta
memoria. Llamaremos a ese conjunto de microinstrucciones, microrrutina
de b usqueda y decodificaci on, o, microrrutina de fetching. Al resto de
las fases (c
alculo de direccion efectiva, b usqueda de operando y ejecuci on) lo
llamaremos el n ucleo de la microrrutina asociada a una instrucci on dada.
Por tanto, cuando se va a ejecutar un programa y el S.O. lo carga en
memoria e inicializa el PC, apuntando a la primera instrucci on, tambien se
debe resetear el MicroPC al valor cero. Una vez completada la inicializaci on,
se ejecuta la microrrutina de fetching (recordemos que est a almacenada a
partir de la posicion 0). As, se carga la primera instrucci on en el RI y en la
decodificacion, la ROM de Proyecci on proporciona la direccion del nucleo de
la microrrutina asociada al c odigo de operaci on que se encuentre en RI. Esa
direcci
on se cargar a en el MicroPC, o dicho de otra forma, estaremos saltando
a la posici
on de la Memoria de Microprograma que contiene dicho n ucleo de
la microrrutina. Una vez completada esta, la u ltima microinstrucci on debe
contener un salto a la posici on 0 para volver a buscar y ejecutar la siguiente
88 FUNDAMENTOS DE LOS COMPUTADORES
instruccion maquina.
Supondremos que en esta m aquina hipotetica, las instrucciones tiene un
tama no fijo de 8 bits, interpret
andose de la siguiente manera: los 3 bits m as
significativos corresponden con el codigo de operaci on y los 5 menos significa-
tivos no se usan. Es decir:
<---------- 8 bits ---------->
C.OP. No usado
<- 3 -> <---- 5 ---->
Siguiendo las indicaciones marcadas en el apartado anterior, vamos a elabo-
rar el microprograma que se almacenara en la micromemoria y que implementa
el conjunto de instrucciones mostrado en la tabla 4.2.
Operaci
on N Microprograma
c0 1 5 9 13 17 18 20 25
------------ b
usqueda y dec. -------------------------------------
MAR <- PC 0 0 0000 0001 1000 0000 0 00 000 000
DR <- Mem(MAR) 1 0 0011 0010 0000 0000 0 00 000 000
IR <- DR 2 0 0000 0000 0000 0100 0 00 000 000
PC <- PC+1 3 0 0000 0000 0000 1000 1 11 000 000
----------------- load X -----------------------------------------
MAR <- PC 4 0 0000 0001 1000 0000 0 00 000 000
DR <- Mem(MAR), PC++ 5 0 0011 0010 0000 1000 0 00 000 000
MAR <- DR 6 0 0000 0000 1000 0000 0 00 000 000
DR <- Mem(MAR) 7 0 0011 0010 0000 0000 0 00 000 000
AC <- DR; goto 0 8 0 0000 0000 0010 0000 0 11 000 000
---------------- store X -----------------------------------------
MAR <- PC 9 0 0000 0001 1000 0000 0 00 000 000
DR <- Mem(MAR), PC++ 10 0 0011 0010 0000 1000 0 00 000 000
MAR <- DR 11 0 0000 0000 1000 0000 0 00 000 000
DR <- AC 12 0 0000 0110 0000 0000 0 00 000 000
Mem(MAR) <- DR; goto 0 13 0 0001 1000 0000 0000 0 11 000 000
------------------ add X -----------------------------------------
MAR <- PC 14 0 0000 0001 1000 0000 0 00 000 000
DR <- Mem(MAR), PC++ 15 0 0011 0010 0000 1000 0 00 000 000
MAR <- DR 16 0 0000 0000 1000 0000 0 00 000 000
DR <- Mem(MAR) 17 0 0011 0010 0000 0000 0 00 000 000
AC <- AC+DR; goto 0 18 1 0000 0000 0110 0001 0 11 000 000
------------------ and X -----------------------------------------
MAR <- PC 19 0 0000 0001 1000 0000 0 00 000 000
DR <- Mem(MAR), PC++ 20 0 0011 0010 0000 1000 0 00 000 000
MAR <- DR 21 0 0000 0000 1000 0000 0 00 000 000
DR <- Mem(MAR) 22 0 0011 0010 0000 0000 0 00 000 000
AC <- AC & DR; goto 0 23 0 1000 0000 0110 0001 0 11 000 000
-------------------- jmp -----------------------------------------
DR <- AC 24 0 0000 0110 0000 0000 0 00 000 000
PC <- DR; goto 0 25 0 0000 0000 0001 0000 0 11 000 000
--------------------- jz -----------------------------------------
Si Z=1 goto 28 26 0 0000 0000 0000 0000 0 10 011 100
goto 0 27 0 0000 0000 0000 0000 0 11 000 000
DR <- AC 28 0 0000 0110 0000 0000 0 00 000 000
PC <- DR; goto 0 29 0 0000 0000 0001 0000 0 11 000 000
-------------------- not -----------------------------------------
AC <- NOT(AC) ; goto 0 30 0 0100 0000 0110 0001 0 11 000 000
------------------- shr -----------------------------------------
SH_RIGHT(AC); goto 0 31 0 0000 0000 0000 0010 0 11 000 000
4.3. AVANZADO
DISENO
C Significado C Significado
c1 I BUS L del Sumador c2 A BUS L del Sumador
c3 B BUS L del Sumador c4 0 BUS L del Sumador
c5 B BUS R del Sumador c6 D BUS R del Sumador
c7 0 BUS R del Sumador c8 Sumador Desplazador
c9 BUS X I c10 BUS X A
c11 BUS X B c12 D-Mpx D
c13 D BUS MEM c14 0 pasa BUS X; 1 pasa
BUS MEM
c15 Carry de entrada al Sumador c16 1 Desplazamiento; 0 No
desplaza
c17 1 Derecha; 0 Izquierda c18 Habilitaci
on de Memoria
c19 1 Lectura; 0 Escritura
MEMORIA
R/W
RAM
c19
BUS X c18
0 1 B
D-Mpx c14 U
c9 c10 c11 S
c12
I A B D M
E
c1 c2 c3 M
BUS L c5 c6 c13
c4
BUS R
00...000 c7
00...000
L R
Z Sumador C
c15
c8
T1
T2
T3
T4
ns
T1 T2 T3 T4
T1 T2 T3 T4
Memoria ENABLE
T1
T4 INC Contador de T2
Microprograma
STORE
T2 MicroRI
T4 1 8 12 16
ENABLE
T3 T4 T4 T2
c1 c8 c12 c16
Microinstruccin
al MicroRI
Salida del MicroRI
Controles 1-7,13,18
Control 8
Incrementa Cont.
Control 16
Controles 9-12
Controles 14,15,17,19
4.3.2. Codificaci
on de las microinstrucciones
c1 = b1 AN D b2 AN D T3
b1 b2 MicroRI
T3
c1
C
odigo Destino
000 no operaci
on
001 I
010 A
011 B
100 D (hace c14 = 0)
101-111 no usados
La inclusion de un codigo que no vuelca el contenido del bus X en ning un
registro permite eliminar la necesidad de generar la se nal de control para el
conmutador c8, asociado al registro de desplazamiento. En efecto, cuando una
microinstrucci on usa el sumador esta se nal debe ser 1; sin embargo, cuando
la microinstruccion no usa el sumador, puede tambien dejarse esta se nal a 1
y elegir el c
odigo 000 como destino del bus X. En consecuencia, se elimina el
bit de control del conmutador c8, que estar a controlado directamente por la
senal de reloj T4.
Existe tambien redundancia entre los bits 12 a 14 (control de la entrada y
salida del registro D) y los bits 18 y 19 (acceso a memoria y lectura/escritura,
respectivamente). En efecto, en una operaci on de lectura de memoria (c18 y
c19 a 1), debe habilitarse el conmutador c12, deshabilitarse el conmutador
c13 y ponerse a 1 la lnea c14 de selecci on en el multiplexor D-Mpx. Por el
contrario, en una operaci on de escritura a memoria (bit 18 a 1, bit 19 a 0) el
conmutador c12 debe permanecer deshabilitado, mientras el c13 deber a habi-
litarse. Teniendo en cuenta que el control del registro D en operaciones que
no involucren a la memoria es efectuado por la microorden destino del bus
X, resulta evidente que los bits 12 a 14 son superfluos, pues el estado de las
senales de control c12 a c14 puede decodificarse de los bits 18 y 19 y de la
microorden del bus X.
Como resumen de las simplificaciones sugeridas, en la tabla 4.5 se mues-
tra la nueva definici on de las microordenes, en la que se han reducido las
necesidades de almacenamiento de control en un 37 %; adicionalmente, se ha
reducido de forma significativa las posibilidades de codificar microinstruccio-
nes erroneas o sin significado. El precio a pagar por ello es un aumento de la
l
ogica de control necesaria y una perdida de velocidad y posibilidad de funcio-
namiento concurrente. A esta filosofa de representaci on de microinstrucciones
la hemos llamamos vertical o con codificaci on.
4.3.3. Expansi
on funcional del datapath: ALU
La funcionalidad del datapath empleado hasta ahora como ejemplo es muy
limitada debido al hecho de que la u
nica operaci
on que puede realizar es la
98 FUNDAMENTOS DE LOS COMPUTADORES
L R
c20 2 c22
c21 ALU
c5
C
Z
FLAGS
4.3.5. Microprogramaci
on del conjunto de instrucciones
Para que el conjunto datapath y secci on de control pueda ser usado como un
procesador de prop osito general, a
nadiremos un sistema de proyecci on a con-
tinuacion de IR y un contador de programa PC. De esta forma, el procesador
final, incluida la secci
on de control, sera el mostrado en la figura 4.17, en el
que se muestran todos los puntos de control includos los adicionales (carga
de constantes,...). Puesto que hemos empleado codificaci on en la microinstruc-
100 FUNDAMENTOS DE LOS COMPUTADORES
ci
on, es necesario usar un decodificador a la salida de MicroRI. El significado
de los bits que componen la microinstrucci on se muestra en la tabla 4.6.
Microorden Bits Caso Funcion
Entrada izquierda 1-2 00 0
del Sumador 01 I
10 A
11 B
Entrada derecha 3-5 000 0
del Sumador 001 B
010 D
011 PC
100 Constante (bits 21-30)
101-111 No usado
Carry de entrada 6 0 Carry=0
al Sumador 1 Carry=1
Desplazamiento 7-8 00 No desplazamiento
01 Desplazamiento Izq.
10 Desplazamiento Der.
11 No usada
Destino del BUS X 9-11 000 Ninguno
001 I
010 A
011 B
100 D
101 PC
110-111 No usada
Operacion de Memoria 12-14 000 No operacion
001 (A) D
010 D (A)
011 (PC) RI
100 (PC) D
101-111 No usada
Funcion de la ALU 15-16 00 Suma (L + R + C)
01 Resta (L + R + C)
10 OR (L OR R)
11 AND (L AN D R)
Carga del Registro 17 0 No modifica el registro
de FLAGS 1 Actualiza el registro
Control de MUX2 18 0 Pasa Direccion de MicroRI
1 Pasa Direccion de ROM
Control de Salto 19-20 00 PC=PC+1
01 Salto Condicional si C
10 Salto Condicional si Z
11 PC = Direccion
Dir. Salto/Constante 21-30
on horizontal
c6
DE CONTROL
BUS L c5 1 0
c4
BUS R c27 MUX2
00...000 c7 c23 Memoria
c22
00...000 0 00 de
M
L R 01 Microprograma
c20 2 C U LOAD
c21 ALU Z
10 X INC MicroPC
c15 11 1
c8 FLAGS 1
1 18 21 30
L/R c17 c29 c30 MicroRI CS Direcc. / Cte.
Desplazador
SE c16
2
DECOD. 2
c1 c2 c3 c28
Direcci
on Contenido
^^^^^^^^^ ^^^^^^^^^
00000 00000 00 000 0 00 000 011 00 0 0 00 0000000000
00000 00001 00 011 1 00 101 000 00 0 1 11 0000000000
.
.
00000 01100 00 011 1 00 101 100 00 0 0 00 0000000000
00000 01101 10 010 0 00 010 000 00 0 0 00 0000000000
00000 01110 00 000 0 00 000 001 00 0 0 00 0000000000
00000 01111 11 010 0 00 011 000 11 1 0 11 0000000000
.
La ROM de proyecci on debe contener la traducci on entre codigos de ope-
raci
on y direcci
on de microrutina asociada a la instrucci on.
Como vemos en este ejemplo, el c odigo de operaci on de cada instruccion
contiene en este caso informacion, no s
olo de la operaci
on a realizar y del modo
de direccionamiento, sino tambien de los operandos. Esto implica que, seg un
nuestro ejemplo, la instruccion AND 10(A), I debe tener una microrrutina
distinta a la descrita anteriormente, con el consiguiente consumo de Memoria
de Microprograma. En dise nos m
as elaborados, el C.O. no ocupar a todo el RI,
dejando espacio para especificar los registros que se vayan a acceder, los cuales
ser
an seleccionados directamente desde el propio RI.
El dise
no de unidades de control cableadas implica un compromiso entre la
cantidad de hardware usado, su velocidad de operaci on y el coste de su proce-
so de dise
no. Los metodos de dise no utilizados en la practica son, a menudo,
de naturaleza heurstica y ad hoc (no generales, sino orientados al problema
concreto a resolver). Adem as, estos metodos de diseno no pueden formalizarse
f
acilmente, debido al gran numero de se nales de control necesarias en una uni-
dad de control y a su dependencia con el conjunto de instrucciones particular
que se implementa.
Para ilustrar el problema, consideramos dos aproximaciones simplificadas
y sistem
aticas para el dise
no de unidades de control cableadas. Estos metodos
son representativos de los que se usan en la pr actica, pero son adecuados
u
nicamente para unidades de control sencillas, tales como las que se pueden
encontrar en controladores no programables o en procesadores RISC. Estas dos
aproximaciones se denominan respectivamente m etodo de los elementos de
retardo y m etodo de los contadores de secuencia.
Vamos a explicar estos metodos sobre un ejemplo, dise nando una unidad
104 FUNDAMENTOS DE LOS COMPUTADORES
Mnem
onico Descripcion
LOAD A Transfiere el contenido de la posici
on A al acumulador: (A) ACC
STORE A Transfiere el contenido del acumulador a la posici on A: ACC (A)
ADD A Suma al acumulador el contenido de la posici on A: ACC + (A)
ACC
JMPZ A Salta a la direcci
on A si el resultado fue cero: si Z : A P C
4.4.1. M
etodo de los elementos de retardo
En este metodo se parte del diagrama de flujo de control para crear el cir-
cuito encargado de producir las senales de control. Para ello lo que vamos a
hacer es generar el conjunto de se nales necesarias para cada operacion ele-
mental (transferencia de registros) que hemos escrito en el diagrama de flujo,
en el orden adecuado. Cada etapa del diagrama de flujo lo denominaremos
microoperaci
on.
8
Con (A) nos estamos refiriendo al contenido de la posici
on A de memoria
CAPITULO 4: SECCION
DE CONTROL 105
BEGIN
8 bits
N C.OP.
MAR <- PC
N+1 Operando
INC PC
IR<-DR
DECOD OP
NO
Z?
DR<-(MAR) DR<-ACC DR<-(MAR)
YES
Figura 4.18: Diagrama de flujo a nivel RTL para el procesador de la fig. 4.3
C1,j
tj C2,j
........ Ck,1
set Ci,j Ci,j Ck,2 ........... Ck
DE .......
C1,j+1 Ck,n
tj+1 C2.j+1
set Ci,j+1 .........
Ck,j+1
....... .......
x x
no
x=1?
yes
Existen senales como C8,4 , C8,10 , C8,16 , C8,22 que no se pueden activar
nunca a la vez ya que pertenecen a ramas excluyentes en el flujo de
ejecuci
on. Es por esta raz on por lo que se ha usado una numeraci on para
el segundo subndice diferente, aunque las 4 se nales, cuando se activan, lo
haran en el intervalo ficticio t4 . (Es decir dentro del ciclo de ejecucion de
una instrucci on t4 , t10 , t16 , t22 representan el mismo intervalo temporal
real).
Una vez que se posee el circuito que en cada instante genera los C ji ade-
cuadamente, hay que generar las se nales de control C j . Como el significado de
Cji es la activacion de la se nal Cj en el instante ti , los Cj los determinamos
con el OR de todos los Cji que se activan para alg un ti . Las ecuaciones que
resultan son las siguientes:
'
Cj = Cji
i
ejemplo la senal C7 que controla la carga del registro DR debe ser combinada
con la senal de reloj cuando es conectada en el punto de control c7: c7
C7 CK; o para el acceso a memoria c3 C3 + CK ya que cuando se escribe
el dato se almacena en el flanco de subida de c3.
4.4.2. M
etodo del contador de secuencias
Consideremos el circuito de la figura 4.21, que consiste basicamente en un
contador m odulo k cuya salida esta conectada a un decodificador k1 . Si la
entrada ENABLE del contador se conecta a un reloj fuente, el contador ira
pasando continuamente por sus k estados. El decodificador genera k se nales
pulso Sj en su salida y, adem as, pulsos consecutivos est
an separados por un
periodo de reloj, como muestra la figura. Las se nales S j dividen el tiempo
requerido para que un contador recorra su ciclo completo en k partes iguales.
A estas se nales Sj se les llama se nales de fase. Se necesita un flip-flop y dos
lneas de entrada para poner en marcha o parar el contador. Un pulso en la
lnea BEGIN hace que el contador comience a recorrer sus estados cclicamente,
conectando la lnea ENABLE del contador al reloj (CK) fuente. Un pulso en
la lnea END desconecta el reloj y resetea el contador. Supondremos que la
se nal de reset del contador es sncrona con la entrada de reloj. El circuito
de la figura 4.21 se llama contador de secuencia y lo representaremos tal como
se indica en dicha figura.
La utilidad de los contadores de control de este tipo radica en el hecho
de que muchos circuitos digitales se dise nan para realizar un n umero relativa-
mente peque no de acciones repetidamente.
Cada paso a traves del lazo constituye un ciclo de microoperaci on. Obser-
vando el diagrama de flujo de la figura 4.18 vemos que desde que una instruc-
cion comienza su ejecuci on, en el caso peor se consumen 9 etapas (longitud
del camino mas largo). Si suponemos que cada etapa puede realizarse en un
periodo de reloj elegido, entonces podremos construir una unidad de control
para esta CPU, partiendo de un simple contador de secuencia m odulo 9. Cada
se nal Si activara las lneas de control que procedan, en la etapa i-esima.
El dise
no del circuito que genera las se nales de control se reduce a un com-
binacional que activar a cada control C j en funcion del codigo de operacion,
del contenido del registro de estados y de la etapa (S i ) en la que se encuen-
tre la ejecuci on. El combinacional, que representamos en la figura 4.22, debe
implementar las ecuaciones l ogicas que se muestran:
C0 = ADD S9
C1 = 0
CAPITULO 4: SECCION
DE CONTROL 109
IR
* DE
C9,1 C8,1
DEC
DE
DE STORE JMPZ
C13,3 C14,3
DE
DE DE DE DE
DE DE DE DE
C3,5 C4,5 C7,5 C3,11 C4,11 C7,11 C3,17 C4,17 C7,17 C3,23 C4,23 C23
DE DE DE DE
DE DE DE
DE
C3,8 C4,8 C7,8 C6,14 C7,14 C3,20 C4,20 C7,20
C12, 25
DE DE DE
Figura 4.20: Se
nales de control con elementos de retardo
110 FUNDAMENTOS DE LOS COMPUTADORES
C2 = 0
C3 = S2 + LOAD S5 + ST ORE S5 + ADD S5 + JM P Z
S5 + LOAD S8 + ADD S8
C4 = S2 + LOAD S5 + ST ORE S5 + ADD S5 + JM P Z
S5 + LOAD S8 + ADD S8
C5 = ST ORE S9
C6 = ST ORE S8
C7 = S2 + LOAD S5 + ST ORE S5 + ADD S5 + JM P Z
S5 + LOAD S8 + ST ORE S8 + ADD S8
C8 = LOAD S5 + ST ORE S5 + ADD S5 + JM P Z S5 + S1
C9 = S1 + LOAD S7 + ST ORE S7 + ADD S7 + S4
C10 = ADD S9
C11 = LOAD S9 + ADD S9
C12 = JM P Z S7
C13 = S3 + S6
C14 = S3
C15 = 0
C16 = ADD S9
RESET = JM P Z S8 Z + JM P Z S7 Z
Sobre estas ecuaciones podemos comentar:
Su obtenci on es inmediata a partir del significado de las senales. As por
ejemplo C3 nos indica que se activa siempre en la segunda etapa, y en
la etapa 5 cuando la instrucci on es un LOAD, STORE, ADD o JMPZ,
y en la etapa 8 cuando se trata de un LOAD o un ADD.
Aunque se han expresado de forma que se entienda como se obtienen, las
expresiones son susceptible de simplificaci on, m as a
un teniendo en cuenta
que expresiones mutuamente exclusivas siempre ocurren, por ejemplo
LOAD + ST ORE + ADD + JM P Z = 1.
Hay se nales que nunca se activan en este conjunto de instrucciones
(C1 , C2 , C15 ).
No todas las instrucciones consumen la 9 etapas. La instrucci on JMPZ
consume menos. Por eso hay que introducir la se nal RESET (no olvidar
que es sncrona con el reloj). Esta senal se activa solo para JMPZ, cuya
ejecucion finaliza en la etapa 8 si Z esta activo (salto) o en la etapa 7 si
Z esta inactivo (no salto).
Como se indic o para el metodo anterior, las se
nales de control deben ser
combinadas con el reloj en aquellos casos en el que el conmutador de control
funcione por flanco.
CAPITULO 4: SECCION
DE CONTROL 111
BEGIN
J Q count
modulo - K
counter
END reset
K Q
c0 cN
....................
CK
1/K - decoder
RESET
S1 S2 ........................................SK
CK
CN..C0 0 1 2 BEGIN
modulo - K
END
sequence counter CK
S1 RESET
S2 ......................
S1 S2 SK
S3
S1 S2 ................ S9
LOAD
STORE
ADD
C1
JMPZ combinational
C2
circuit
N
................
C16
SINOPSIS
b
asicamente necesitamos incluir dentro de la secci
on de control un contador
de microprograma, MicroPC, un registro de microinstrucci on, MicroRI y
una Memoria de Microprograma, donde almacenamos cada una de las
microrrutinas asociadas a cada instrucci
on maquina. Adem as, hemos intro-
ducido la metodologa de dise
no de unidades de control cableada, usadas en
procesadores RISC.
DE PROBLEMAS
RELACION 113
DE PROBLEMAS
RELACION
c1 c2 c3 c4
A B TMP "0"
RI
c5 c6 c7 c8
DE PROBLEMAS
c16 c17
ROM de
c18 Proyeccion
CS RD/WR
1 0
MEMORIA M
A MUX1 c9
RAM R
c11 2 L R
c12 ALU 00
0 M
DR 01
c10 N U LOAD
10 MicroPC Memoria
c19 c20 Z X INC
BUS de
FLAGS 1 11 2
Microprograma
c14 c15
c13 PC 2
c1 c2 c3 c20 2
Instrucci
on OpCode Tarea a realizar
MOVE A, TMP 0111 TMP = A
MOVE (A), B 1001 B = MEM[A]
BNE A 0011 IF (flag Z = 0) THEN PC = A
MUL (A), B 0100 B = B * MEM[A]
INBUS 8
c1 RI
Y ROM de
c4 Proyeccion
Contador
c7
1 0
MUX1 c9
8 8 8 0 M
FIN U LOAD Memoria
X(0) X INC MicroPC
SUMADOR de
1 2
8 bits Microprograma
c2 c3
2
8 c8
c4
AC X MicroRI CS Dir. de Salto
8 8
8
c5 c6
c1 c2 c3 c4c5 c6 c7 c8c9 2
OUTBUS
Se
nal Nemotecnico Significado
c1 loadY Carga en Y el valor de INBUS.
c2 loadAC Carga en AC el resultado del sumador.
c3 loadX Carga en X el valor de INBUS.
c4 clearACyC Pone a cero el registro AC y el Contador.
c5 busAC Saca a OUTBUS el valor de AC.
c6 busX Saca a OUTBUS el valor de X.
c7 IncC Incrementa el Contador.
c8 shift Desplaza a derecha AC y X.
c9 C-Mux1 Control del Multiplexor-1.
ci
on teniendo en cuenta el codigo de operaci
on de cada instrucci
on
de la tabla 4.12. En total, la Memoria de Programa contiene 64
posiciones, aunque en la tabla 4.14 aparezcan menos.
Instrucci
on OpCode Tarea a realizar
ADD A,B 1111 B A+B
MOVE A,B 1101 BA
MOVE (A+B),B 1011 B M EM [A + B]
BGT C 1001 Si (flag N=0 Y flag Z=0 ) P C C
Se
nal Significado
c1, c2 Selecci
on de registro para lectura al bus X y para escritura.
c3, c4 Selecci
on de registro para su volcado al bus Y .
c5 Permiso de salida al bus X del registro seleccionado por
c1, c2.
c6 Permiso de escritura del resultado de la ALU en el registro
seleccionado por c1, c2.
c7 Carga del registro Acumulador (AC).
c8 Carga del registro de Instrucciones (RI).
c9, c10 Escritura y lectura, respectivamente, del registro DR.
c11, c12 Selecciona la operaci
on al realizar en la ALU:
00=Suma. 01=Resta. 10=Producto. 11=Divisi on.
c13 Carry de entrada a la ALU.
c14 Vuelca el resultado de la ALU al Bus de Datos.
c15 Actualiza los flags del registro de estado.
c16 Debe estar a 1 cada vez que se utilice la memoria (Chip
Select).
c17 1 = Lectura de memoria a DR. 0 = Escritura en memoria
de DR.
c18 Permite volcar el campo Dir. de Salto de la microins-
trucci
on al Bus de Datos.
c19 Controla el Multiplexor-1.
BUS DATOS
c10 c9 c8
c7
c18
DR c5 c14 RI
AC
MEMORIA Y X ROM de
Proyeccion
RAM 2
c1,c2 A
00 1 0
CS RD/WR 2
c3,c4 01 B MUX1 c19
2 L R
c16 c17 c11,c12 c15
10 C c13 ALU 00
0 M
11 PC 01
N U LOAD
10 Memoria
Banco de Registros Z X INC MicroPC
de
FLAGS 1 11 2
Microprograma
c6
2
c1 c2 c3 c19 2
0
1
2
3
4
5
DE PROBLEMAS
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
c3 c4 Registro de c6 c7 c8 Registro
direcci
on de datos
0 0 PC 0 0 X Rx
0 1 SI 1 0 X Ry
1 0 B X 1 0 R0
1 1 TMP X 1 1 R1
(a) (b)
Se
nal Acci
on de control
c1 Chip Select de la memoria RAM.
c2 1=Escritura en RAM; 0=Lectura en RAM.
c3, c4 Selecci
on del registro de direcci
on seg
un la tabla 4.15 (a).
c5 0=Lectura de reg. de dir.; 1=Escritura en reg. de dir. con
el dato del BUS CPU.
c6, c7, c8 Selecci
on del registro de datos seg
un la tabla 4.15 (b).
c9 0=Lectura de reg. de datos; 1=Escritura en reg. de datos
con el dato del BUS CPU.
c10 Carga TEMPA con el dato del BUS CPU.
c11 Carga TEMPB con el dato del BUS CPU.
c12 Carga el registro de estado.
c13 Carga IR con el dato del BUS CPU.
c14 Operacion con la ALU: 1=A-B; 0=A+B.
c15 Vuelca al BUS CPU el contenido del registro de direcci
on
seleccionado.
c16 Vuelca al BUS CPU el contenido del registro de datos selec-
cionado.
c17 Vuelca al BUS CPU el resultado de la ALU.
Formato de la instrucci
on
Instrucci
on Tarea
C.O. NU Ry Rx
MOV Ry,Rx 0011 XXXX Ry Rx Ry Rx
SUB Ry,Rx 0000 XXXX Ry Rx Rx-Ry Rx
BCC Ry 0101 XXXX Ry XXXX Si C=0, Ry PC
MOVE (SI+Ry),Rx 0001 XXXX Ry Rx MEM[SI+Ry] Rx
c12
DATOS c17
c15 16
16 16 16 16
BUS_CPU[15:0]
16 c6 16 16
c16 2
4 c1 c2 c18
Rx M 4 2
0000 R0
4 U MicroRI CS Dir. de Salto
0001 R1
Ry X c7
0010 R2 2
c8
. .
IR NU c9 0 00
.. .. Memoria
01 M
. . C INC
de
C.O. U LOAD
MicroPC
Z 10 Microprograma
1111 R15 X
1 11 2
4
W c2
R c3 N
UNIDAD .
B BANCO Z .
8 .
A de de
R FORMATO DE
REGISTROS LAS INSTRUCCIONES
c1 CONTROL
(B) EN LA MEMORIA
PRINCIPAL
8 8 c19
8
BDR PC IR COP
c15 R3 ( opcional )
c11 c6 c7
L R c18 MAR
8
8 8 W c16 8 bits
N c8 R c17
ALU
Z MEMORIA
c10 c9 PRINCIPAL
TMP (M)
Instrucci
on OpCode Tarea a realizar
ADD D3,D4 001F(16 D4 D3 + D4
BCC IX 0020(16 IF (flag C=1) THEN PC IX
MOV D0,D1 0000(16 D1 D0
LDIX D5,D2 0003(16 D2 MEM[IX+D5]
PC[31:16] PC[15:0]
PC c23
c20 c19
c22 c21
16 16 16 16 BUS[15:0] 16
16 16 c24
c16 c15 16 16
16 16 c6 c7
IR
DR c14 c13 c5 c4 c12 16 OpCode
16 TMP1 TMP2 c8
MAR
MAR[31:16] MAR[15:0]
32 000 D0 Unidad de Control
MEMORIA
001 D1 c11
2 L R
RAM c9,c10
010 D2 ALU Microprogramada
Cin C
4Gx16 bits
011 D3
100 D4
16
101 D5
c1
CS R/W 110 IXL c1 c2 c3
c2
111 IXH
c17 c18 c3
Banco de Registros
10. Disenar la unidad de control cableada siguiendo los dos metodos ex-
plicados para el procesador planteado en la secci
on 4.4 extendiendo el
conjunto de instrucciones con las que aparecen en la tabla 4.24.
Mnem
onico Descripci
on
COMP Complemento del acumulador not(ACC)
ACC
JMP A Salto incondicional a la posici
on A: A P C
SHIFTR Desplazamiento de un bit a la derecha del acu-
mulador: RightShif t(ACC, 1) ACC
AND A Y logico del acumulador y el contenido de la po-
sici
on A: ACC (A) ACC
STOREI #N Guarda un valor inmediato en el acumulador:
N ACC
11. Para la unidad de control de la figura 4.29 dise nada por el metodo de
los elementos de retardo,
a) Escribir el diagrama de flujo que implementa y el cronograma de
las se
nales de control que genera.
b) Representar los elementos de retardo con biestables D con CLEAR
y PRESET indicando la conexi on de la se
nal de reloj y la se
nal de
inicio (BEGIN).
c) Redise nar la unidad de control utilizando el metodo del contador
de secuencias.
C5
C2 C3 C4
C1
1 2 3 4 5
START CARRY
12. La figura 4.31 representa un procesador con control cableado cuyos pun-
tos de control se detallan en la tabla 4.25. Podemos destacar del proce-
sador:
DE PROBLEMAS
RELACION 137
..........
8 8
C.OP. word i
Operando word i+1
..........
Mnem
onico Operando Operaci
on Significado
DUP A A ACC 2*A Duplica A y lo guarda en el acumulador
JIZ bdir bdir Si FZ=1 Salto al byte bdir, condicionado a FZ.
PC bdir
JEQ [bdir] bdir Si OP1=OP2 Salto condicional indirecto a la palabra
PC Mem(bdir) contenida en bdir cuando OP1=OP2.
JMP Wdir Wdir PC 2*Wdir Salto incondicional a la palabra Wdir.
16
+ c6 c7
c11
OP2 a
0 1
c14 MUX1 FZ
ALU
c15 c1 c2 c3 c5 16
PC OP1 b c8
R W OE
16
16 RAM
0 busD(15:0) c4
MUX2
c13 16 16
Direccin Datos
c12
1 c9
c10
MAR 32Kx2bytes IR
c16 ACC
16
Inst-DEC
DUP JMP
JIZ JEQ
P.C. Funci
on Ecuaci
on
c1 Habilitaci
on de lectura de RAM c1=
c2 Habilitaci
on de escritura en RAM c2=
c3 Habilita salida de RAM c3=
c4 Carga de OP1: OP1 busD c4=
c5 Carga de OP2: OP2 OP1 c5=
c6,c7 Operaci
on ALU: 00:a+b, 01:a-b, c6=
10:a+0, 11:a+1 c7=
c8 Abre conexi
on entre ALU y busD c8=
c9 Carga: ACC busD c9=
c10 Volcado de ACC en busD c10=
c11 Carga del bit de estado FZ c11=
c12 Carga: IR busD c12=
c13 Carga: MAR busD c13=
c14 Selecci
on MUX1 (0:busD, 1:PC+2) c14=
c15 Carga PC con la salida de MUX1 c15=
c16 Selecci
on MUX2 (0:PC, 1:MAR) c16=
OBJETIVOS
5.1.
ARITMETICA DE PUNTO FIJO
Orientaremos esta secci on desde dos puntos de vista. El primero ser a el punto
de vista software, en el que veremos que algoritmos son necesarios aplicar pa-
ra realizar estas operaciones, en funci
on del convenio de representaci on de los
operandos (binario natural, Signo/Magnitud, Complemento a 1 o Complemen-
to a 2). Sera despues cuando veamos las posibles implementaciones hardware
y una comparaci on entre ellas, atendiendo a las caractersticas, casi siempre
en compromiso, de coste y velocidad.
cn+1 cn ... c3 c2 c1 =C
an . . . a3 a2 a1 = A (5.1)
+ bn . . . b3 b2 b1 = B
sn+1 sn . . . s3 s2 s1 =S
Es decir, el carry ci se genera en la etapa i-1 y se suma en la etapa i.
Suponemos el carry inicial de entrada, c1 , inicializado desde una de las entradas
de control del sumador, de forma que se pueda poner a 0 o a 1. Como podemos
144 FUNDAMENTOS DE LOS COMPUTADORES
si = (ai bi ) ci
(5.2)
ci+1 = ai bi + (ai bi ) ci
La realizaci
on de un sumador de 1 bit seguir a la siguiente tabla de verdad
(tabla 5.1), en la que se considera, junto con los dos dgitos binarios a sumar,
el acarreo procedente de la etapa anterior, gener andose, adem as del dgito de
la suma, el acarreo para la etapa siguiente:
Entradas Salidas
ai bi ci si ci+1
0 0 0 0 0
1 0 0 1 0
0 1 0 1 0
1 1 0 0 1
0 0 1 1 0
1 0 1 0 1
0 1 1 0 1
1 1 1 1 1
Signo/Magnitud
Bajo este convenio de representaci on de enteros negativos, los bits a n y bn de
la expresi
on 5.1 representan el bit de signo de los sumandos y s n el bit de signo
de la suma. El algoritmo para realizar la suma es:
Si an = bn Sumandos del mismo signo.
Se suman las magnitudes de n-1 dgitos (bits) mediante la ecuaci on
5.2.
Poner sn = an .
Si cn = 1 Overflow.
CAPITULO 5: SECCION
DE PROCESAMIENTO 145
Complemento a 1
Si los sumandos est an representados en un sistema de numeraci on en C1 de n
bits, el algoritmo de suma es el siguiente:
Sumar los operandos mediante la ecuaci on 5.2, sin distinguir el bit de
signo del resto de los n bits.
Si cn+1 = 1 se suma 1 al resultado. Es decir, despues de operar, se a nade
el acarreo de salida.
Si los valores sumados son de igual signo9 hay overflow si el signo del
resultado es distinto del de los operandos. Otra forma de determinar si
hay overflow es mediante la ecuaci on cn+1 cn , que tomar a el valor uno
en caso de que este se produzca.
En este caso, el algoritmo para restar A B consiste en sumar A+ C1(B).
Este algoritmo tiene la ventaja, frente al de suma/resta en S/M, de no
necesitar un HW especfico de resta (no hay que implementar la ecuaci on 5.3).
Pero a un podra ser mas sencillo si nos pudiesemos evitar la suma del acarreo,
necesaria en el algoritmo comentado.
9
Si los sumandos son de distinto signo no puede haber overflow.
146 FUNDAMENTOS DE LOS COMPUTADORES
Complemento a 2
Si los sumandos est an representados en un sistema de numeraci on en C2 de n
bits, el algoritmo de suma es el siguiente:
Sumar los valores mediante la ecuaci on 5.2, sin distinguir el bit de signo
del resto de los n bits .
Se desprecia el acarreo de salida (cn+1 ).
Si los operandos son de igual signo, hay overflow si el signo del resultado
es distinto del de los sumandos. Al igual que en el algoritmo para C1,
hay overflow si cn+1 cn = 1.
De forma an aloga a cuando trabajamos con la representaci on en C1, para
restar A B bastar a con sumar A + C2(B)
Este algoritmo resulta el m as r
apido de todos, ya que es sencillo y el acarreo
se desprecia.
Por supuesto, tambien existen algoritmos de suma/resta para otros siste-
mas de representaci on de los numeros, como BCD natural, BCD exceso a 3,
etc, pero se apartan del ambito de este curso.
5.2.2. Implementaci
on de un sumador
Como se ha visto, cuando usamos los sistemas de numeraci on binaria en com-
plemento a 1 y complemento a 2, se hace innecesaria la distinci
on entre adici
on
y sustracci
on. La resta se va a poder implementar realizando unas modifica-
ciones mnimas sobre el elemento sumador, por lo que en este apartado nos
centraremos en el estudio de los sumadores.
Sumador serie
El sumador elemental (1 bit) que implementa la ecuaci on 5.2 se puede
realizar en dos etapas. La primera consiste en la construcci
on de un modulo
llamado half-adder o semi-sumador, como el de la figura 5.1, que implementa
la ecuaci
on:
A HA
S
B A S
S =AB
B C
C =AB C
FA
A an . . . . . . . . . . . . a2 a1 xi si sn . . . . . . . . . . . . s2 s1 S
B bn . . . . . . . . . . . . b2 b1 yi ci+1 FF
ci
CK
Sumadores paralelos
1. Ripple adders (Sumador con acarreo propagado o enlazado)
Supongamos que queremos sumar dos palabras de n bits. En lugar
de pasar todos los bits secuencialmente a traves de un simple sumador
elemental, podemos presentar los n bits de los dos operandos en paralelo
a traves de n sumadores elementales. Estos n sumadores elementales
est
an conectados de tal forma que el acarreo de salida del sumador i,
148 FUNDAMENTOS DE LOS COMPUTADORES
s1 s2 s3 s n s n+1
ci+1 = ai bi + (ai bi ) ci
ci
on 5.2), donde 1 i n, siendo n el n
umero de dgitos de los suman-
dos.
x = 10 001010
y = 5 000101 s 000011
z = 12 + 001100 + 2c 011000
------ ------
s = 000011 011011 => 27
c = 001100
x4 x3 x2 x1 y4 y3 y2 y1 z4 z3 z2 z1
x1 y1 z1 x2 y2 z2 x3 y3 z3 x4 y4 z4
CSA FA FA FA FA
s 1 c1 s 2 c2 s 3 c3 s 4 c4
s4 s3 s2 s1 c4 c3 c2 c1
S C
a b c d e f g h i
4
CSA 4 CSA 5
2c4
s4 s5
CSA 3
CSA 6 c4 c3 c2 c1
2c5
s6 2c6 0
c4
CSA 7 z4 z3 z2 z1
s7 2c7 CSA 5
SAP
Figura 5.6: Arbol de Wallace para nueve sumandos (a, b, ..., h, i)
5.3.1. Introducci
on
Antes de formalizar los algoritmos aritmeticos que vamos a implementar, re-
cordaremos como efectuamos la multiplicaci on con l
apiz y papel. Indicaremos
que recursos hardware seran necesarios para su realizaci
on como circuito y
expondremos algunas transformaciones simples que reducen la complejidad de
estos procesos.
Consideremos que deseamos obtener el producto Z = Y X, donde el
multiplicando Y y el multiplicador X admiten la siguiente representaci
on Base
B con n dgitos.
X xn1 xn2 . . . x1 x0
Y yn1 yn2 . . . y1 y0
El procedimiento que usamos para multiplicar Y X en un papel, se
152 FUNDAMENTOS DE LOS COMPUTADORES
Ejemplo: 345123
Y (n) X (n)
345
x 123 *
-----
SHIFT IZQ
00000 -> P(0)
+ 1035 2n
------
1035 -> P(1) SUMADOR
+ 6900 2n
------
2n
7935 -> P(2)
+ 34500 Z (2n)
------
42435 -> Z
P(0)=0;
for (i=0; i<n; i++)
{
P (i + 1) = xi Y B i + P (i);
}
Z = P(n);
Y.
Sin embargo, el coste HW asociado a este algoritmo puede reducirse signifi-
cativamente. Si se observa el algoritmo, el n
ucleo del ciclo for est
a constituido
por la siguiente expresi
on suma,
P (i + 1) = xi Y B i + P (i)
donde se aprecian dos sumados, el valor acumulado hasta ese paso, P (i), y la
aportaci on del producto parcial, P Pi = xi Y B i .
Puesto que el producto parcial P Pi est a escalado en B i , la suma no afec-
tara a las componentes i-1, i-2,..., 1, 0 del valor acumulado en P (i). Adem as,
dados los valores posibles de los dgitos y n umeros de n dgitos en Base B, se
verificara que xi Y < B n+1 y, por lo tanto, ser a un numero Base B de n+1
dgitos como m aximo. Es decir, si el recorrido del ndice se realiza de forma
creciente, las componentes B 2n1 , B 2n2 , ..., B n+i+1 del valor acumulado P (i)
seran nulas. Por todo ello, en cada paso de la iteraci on, s
olo n+1 dgitos del
valor acumulado P (i) ser an susceptibles de cambio. En resumen, bastar a con
un sumador Base B de n+1 dgitos.
En la figura 5.9 mostramos la realizaci on de la multiplicacion anterior
siguiendo el nuevo algoritmo mejorado de un sumador de n+1 dgitos.
Y AC X Y (n)
0103 512
+ 0690 SUMADOR
n+1
0793 512
n+1
0079 351
+ 0345 AC (n+1) X (n)
0424 351
Z= 0042 435
Y (n)
CONTROLADOR
SUMADOR
Cout n bits
n
Z (2n)
F AC X (n)
ble, est
a pintado con lnea discontinua. Esa realimentaci
on puede ser suprimida
en el caso de que los numeros a multiplicar sean positivos y esten representados
en signo/magnitud, C1 o C2, ya que en ese caso ser an de la forma 0XXXX...XX,
y en las sumas implicadas en el algoritmo nunca se producir a carry de salida.
Para terminar, mostramos como queda el algoritmo de multiplicaci on que
debe implementar el Controlador de la figura 5.10:
AC=0;
for (i=0; i<n; i++)
{
if (x(0)==1) SUMA Y;
DESPLAZA;
}
<- k ->
j i
...011......1110....
El valor con que contribuye dicha cadena de 1s al n
umero representado ser
a:
CAPITULO 5: SECCION
DE PROCESAMIENTO 157
xi xi1 Operaci on
0 0 desplazar (cadena de 0s)
0 1 sumar Y y desplazar (fin cadena de 1s)
1 0 restar Y y desplazar (comienzo cadena de 1s)
1 1 desplazar (cadena de 1s)
AC=0; X(-1)=0
for (i=0; i<n; i++)
{
if (x(i)==0 AND x(i-1)==1) SUMA Y;
if (x(i)==1 AND x(i-1)==0) RESTA Y; /*+C2(Y)*/
DESPLAZA;
}
/* Correcci
on */
if (UltimaOperacion==RESTA) SUMA Y;
5.3.4. Recodificaci
on del Multiplicador
Un modo de reducir el numero de iteraciones del algoritmo de suma y desplaza-
miento es recodificando el multiplicador como un numero Base 2c, agrup
andolo
CAPITULO 5: SECCION
DE PROCESAMIENTO 159
11110 1011
SUMADOR Cin
11111 0101 n+1 bits
CONTROLADOR
11111 1010
n+1
+(Y) 00011 Z (2n+1)
seg
un bloques de c-bits. Habr a que disponer de 2c-1 m ultiplos del multipli-
cando. El n a a nc . En cada paso se analizar
umero de iteraciones se reducir an
c-bits y se acumulara el m
ultiplo correspondiente. Los desplazamientos ser an
de c-bits. En la tabla adjunta mostramos los m ultiplos para el caso c=2.
xi+1 xi Operaci on
0 0 desplazar dos bits
0 1 sumar Y y desplazar dos bits
1 0 sumar 2Y y desplazar dos bits
1 1 sumar 3Y y desplazar dos bits
de forma que:
. /
Y X = Y (01)24 + (11)22 + (10)20 = Y 24 + 3Y 22 + 2Y 20
5.4.1. Divisi
on Con Restauraci
on
Cuando realizamos la divisi on entera Y X, siendo Y el dividendo y X el
divisor, buscamos el cociente Q y el resto R. Cuando dividimos dos n umeros
en un papel, por ejemplo 13 entre 5, determinamos que el cociente cabe
a 2 y que el resto es 3 (ya que 13 (2 5) = 3). La elecci on que hacemos
del cociente, en este caso 2, es fruto de una aproximaci on que hacemos m as
o menos mec anicamente, pero que lleva implcita la condici on matem atica de
que el resto (residuo) tiene que ser positivo y menor que el divisor.
Esa aproximaci on al dgito del cociente apropiado, que nosotros elegimos
r
apidamente, algortmicamente s olo se puede implementar mediante el meto-
do de ensayo y error. Por ejemplo, en el ejemplo anterior, un algoritmo ira
probando cocientes desde el 9, 8, ..., hasta llegar al 2. Es decir, primero pro-
bara el cociente 9, restara 45 y al resultar un resto negativo (-32), rectificara
volviendo a sumar 45 y cambiando el cociente a 8. Este cociente tambien da
lugar a un resto negativo, as que bajaramos a 7 y as sucesivamente hasta
llegar al cociente 2, que es el primero que da un cociente positivo y menor que
el divisor, X.
CAPITULO 5: SECCION
DE PROCESAMIENTO 161
X AC Y
0010 0 0 0 1 1 1 1
+C2(X) 1 1 1 0 Resta
1 1 1 1
+X 0 0 1 0 Restaura
0 0 0 1 1 1 1 0
0 0 1 1 1 1 0
+C2(X) 1 1 1 0 Resta
0 0 0 1 1 1 0 1
0 0 1 1 1 0 1
+C2(X) 1 1 1 0 Resta
0 0 0 1 1 0 1 1
0 0 1 1 0 1 1
+C2(X) 1 1 1 0 Resta
0 0 0 1 0 1 1 1
0 0 1 0 1 1 1
R= 001 Q=0111
AC=0;
for (i=0; i<n; i++)
{
RESTA X;
if (AC(n-1)==1)
{
RESTAURA (SUMA X);
DESPLAZA con 0;
}
else DESPLAZA con 1;
}
La aritmetica con n
umeros en punto flotante, expresados mediante una man-
tisa y un exponente, se traduce en un algoritmo que termina realizando
operaciones enteras con la mantisa y el exponente. Estos algoritmos pueden
ser emulados por SW, repercutiendo en un incremento del coste, o se pue-
den implementar mediante HW. En particular, los coprocesadores aritmeticos
contienen una gran cantidad de HW dedicada a realizar estos algoritmos para
n
umeros en punto flotante, permitiendo liberar a la CPU del computador de
esa complicada tarea.
X (n)
n n
Control
SUM/RES
n bits
1
n-1
AC (n-1) Y (n)
n-1 1
5.5.2. Multiplicaci
on
Dados X = M1 B E1 e Y = M2 B E2 , su producto P viene dado por:
P = M1 M2 B E1 +E2
El algoritmo para X e Y normalizados es:
Sumar los dos exponentes, realizando los ajustes necesarios para obtener
la notaci
on en exceso correcta.
Multiplicar las mantisas.
Normalizar la mantisa resultante.
Debemos tener en cuenta que si las mantisas ocupan n bits, el producto
resultante ser a de 2n bits, por tanto, debemos descartar los n bits menos
significativos.
164 FUNDAMENTOS DE LOS COMPUTADORES
5.5.3. Divisi
on
Dados X = M1 B E1 e Y = M2 B E2 , su cociente Q viene dado por:
Q = M1 /M2 B E1 E2
El algoritmo para X e Y normalizados es:
Restar los dos exponentes, realizando los ajustes necesarios para obtener
la notaci
on en exceso correcta.
Dividir las mantisas, guardando s olo el cociente.
Normalizar la mantisa resultante.
Si E1 y E2 est
an representados en exceso, el exponente resultante vendr
a da-
do por su diferencia sum andole el exceso. Hay que preguntar si el divisor es
cero, para evitar que se produzca una divisi on por cero. Se puede realizar la
resta de los exponentes en paralelo con la division de las mantisas.
Si en lugar de utilizar un algoritmo de divisi on (con o sin restauraci
on)
se quiere usar un multiplicador en punto flotante, se puede seguir el llamado
metodo de la divisi
on convergente.
SINOPSIS
Ya se dijo con anterioridad que las instrucciones mas frecuentes en los progra-
mas son las que deben ser implementadas con m as esmero para que consu-
man pocos ciclos de reloj. Pues bien, las instrucciones aritmeticas pertenecen
a ese tipo de instrucciones que aparecen frecuentemente. Por tanto, no nos
debe sorprender que se investigue intensamente en ese campo con la intenci on
de encontrar cada vez mejores tecnicas para implementarlas. En este tema
s
olo hemos introducido algunos principios, pero nos dan una idea de c omo
est
a construido, mas o menos, una unidad aritmetico logica o un coprocesador
aritmetico para n
umeros en punto flotante.
DE PROBLEMAS
RELACION 165
DE PROBLEMAS
RELACION
1. Realizar las siguientes sumas con n umeros de 6 bits: 12+9, 27-15, 14-19,
-7-13, 23+10, -20-13; representando los n umeros mediante los siguientes
convenios:
a) Signo y Magnitud
b) Complemento a 1
c) Complemento a 2
2. Haz, con n umeros de 8 bits trabajando en
a) Complemento a 1
b) Complemento a 2
las operaciones siguientes:
00101101 + 01101111
11111111 + 11111111
00000000 11111111
11110111 11110111
3. Encuentra la razon por la que, en el algoritmo de suma/resta en C1, hay
que sumar el carry de salida al resultado.
4. Los numeros decimales con signo de n 1 dgitos se pueden representar
mediante n dgitos sin signo utilizando la representaci
on en complemento
a 9. El complemento a 9 es el complemento a la base menos 1 cuando
la base es 10 (igual que el C1 es el complemento a la base menos uno
cuando la base es 2). El C9 de un n umero decimal N se obtiene mediante
la siguiente expresi
on:
C9(N ) = 10n 1 N
donde n es el n
umero de dgitos con que trabajo. Una tecnica para hacer
el C9 de un numero consiste en restar cada dgito de 9. As, el negativo
de 014725 es 985274. Se pide:
a) Expresa como n umeros de tres dgitos en complemento a 9 los si-
guientes n
umeros: 6, -2, 99, -12, -1, 0.
b) Determinar la regla por la cual se suman los n umeros en comple-
mento a 9.
c) Realizar las siguientes sumas con dicha tecnica:
1) 0001 + 9999
2) 0001 + 9998
3) 9997 + 9996
4) 9241 + 0802
166 FUNDAMENTOS DE LOS COMPUTADORES
5. Los n
umeros en complemento a 10 son an alogos a los n
umeros en com-
plemento a 2. Un n
umero negativo en C10 se forma con s olo sumar 1 al
n
umero correspondiente en C9, prescindiendo del acarreo. M as formal-
mente, el C10 de un n
umero decimal N se obtiene mediante la siguiente
expresi
on:
C10(N ) = 10n N
Cu al ser
a la regla para la adici
on en complemento a 10?
6. Cuando realizamos operaciones de suma/resta en decimal, realmente es-
tamos utilizando un algoritmo de suma/resta para n umeros decimales
representados en signo/magnitud, donde el dgito de signo esta repre-
sentado por el + o el que antecede al n umero. Realiza, con aritmetica
decimal de tres dgitos m as el signo, las siguientes sumas y comprueba
que el algoritmo que debes utilizar es semejante al visto en teora para los
numeros en binario: (264)+(858), (+858)+(264), (+264)+(858).
7. Arbol de Wallace
a) Dibujar el arbol de Wallace para sumar 6 n umeros enteros mediante
CSAs (Carry Save Adders). C omo ha de ser el ultimo sumador?
b) Sumar 12 + 5 + 7 + 3 + 10 + 9 siguiendo la estructura previa.
8. Cu ando tiene sentido utilizar sumadores con acarreo almacenado (CSA)?
Construir el Arbol de Wallace para sumar 7 5 + 9 y realizar la suma
utilizando aritmetica de 6 bits en C2.
9. Realiza las siguientes multiplicaciones mediante el algoritmo de multi-
plicacion binario de suma y desplazamiento con n=5.
a) 12 10
b) 7 12
c) 6 15
10. Realiza las siguientes divisiones mediante el algoritmo de division binario
con restauraci on con n=5.
a) 12 3
b) 15 2
11. Realiza las siguientes operaciones con n umeros en punto flotante en el
formato IEEE 754.
a) C30C0000 + C1500000
b) 3B370000 + 39F 68000
6
Memorias
OBJETIVOS
Jerarqua de Memoria
La aplicaci
on de las tecnicas de memoria cache, virtual, entrelazada... se lleva
a cabo implementando una jerarqua de memoria de la siguiente forma:
Costosas
Registros CPU
Rpidas
Cach
Memoria Principal
Entrelazada
Ms Capacidad
Econmicas Memoria Secundaria
Lentas
6.2. DE LA MEMORIA
ORGANIZACION
trabajar con todos los modulos a la vez. De este modo podemos multiplicar
el ancho de banda (en el mejor de los casos) por el numero de m odulos que
estemos utilizando.
Vamos a suponer que tenemos una memoria de N = 2 n palabras y que
esta se encuentra repartida en M = 2m m odulos. Hay dos posibles esquemas,
cada uno con sus ventajas e inconvenientes:
a) Orden Superior: Palabras consecutivas van a parar al mismo m odulo.
m bits n-m bits
... CE CE CE CE
...
la aceleraci
on () del sistema bajo las restricciones mencionadas 11 :
(
1 si Q M
= 0 M
1
Q si 1 Q < M
que almacena, por lo que este metodo introduce cierta complejidad l ogica
al ser un metodo de acceso artificial.
b) Emplear uno (o varios) campo(s) para direccionar la informaci on que
queremos localizar. Por ejemplo, nos podra interesar conocer los datos
correspondientes a la persona cuyo campo T ALLA = 1.83. En este tipo
de memoria usaramos el campo T ALLA para direccionar y esta nos
devolvera el registro completo: L OPEZ, 82, 1.83, 33.
Esto tambien se podra conseguir con una memoria normal, pero para ello
habra que recorrer toda la tabla secuencialmente en busca de las posibles
concordancias del campo deseado. Al tener que acceder secuencialmente a
todas las posiciones de memoria, este metodo sera muy lento. La ventaja de
las memorias asociativas es que las b usquedas de todas las entradas se realiza
simult aneamente.
Podemos definir la memoria asociativa como aquella que tiene capacidad
de acceder a una palabra almacenada usando como direcci on un subcampo
de dicha palabra. La b usqueda de esta la realiza en paralelo. Este tipo de
memorias recibe otros nombres: MDC o memoria Direccionable por Contenido
(CAM en ingles); memoria de b usqueda en paralelo o memoria multiacceso.
Se usa en gran variedad de aplicaciones, como:
Gestion de memoria cache.
Gestion de memoria virtual.
Manipulaci on de informaci on almacenada en bases de datos.
Tratamiento de se nales de r adar, imagenes.
Inteligencia artificial, etc.
El hecho de que se utilice solo en aplicaciones muy concretas es debido a
que tienen un elevado coste, pues implica redundancia del hardware. Su coste
es bastante superior a una memoria RAM convencional.
La estructura del hardware que implementa este tipo de memorias aparece
representada en la figura 6.4.
Las Celdas Ci son capaces de almacenar un registro completo (apellido,
peso, talla, etc,...). La gestion de los accesos los realiza la Unidad de Control
(U.C.), que posee dos registros b asicos:
Comparando (C), donde se escribe la informaci on a buscar.
Mascara (M), que dice que campos del registro queremos comparar. Los
bits no enmascarados del registro C ser a comparados con los bits corres-
pondientes de todas las celdas de la memoria asociativa.
Los registros Indicadores Ii se ponen a 1 si su registro asociado Ci contiene
la informaci on que se estaba buscando. El Dispositivo de Evaluaci on de Datos
CAPITULO 6: MEMORIAS 175
UNIDAD DE
CONTROL
COMPARANDO C
MASCARA M
CELDA 1 I1
CELDA 2 I2 D
CELDA 3 I3 D
....
....
CELDA N IN
CACHE Memoria
CPU
Principal
Operaci
on
El procesador, cuando tiene que acceder a memoria, siempre mira antes si la
informacion que busca se encuentra en la memoria cache. Pueden darse dos
posibilidades:
La informaci on solicitada se encuentra en la cache, acierto: se lee/escribe
la copia en cache.
La informaci on solicitada NO se encuentra en la cache (fallo): leo de me-
moria principal la informaci on buscada y guardo una copia en la cache.
A la hora de escribir un nuevo dato en la cache pueden ocurrir dos cosas:
Hay espacio libre en la cache: escribo el dato en alguna de las
posiciones libres.
NO hay espacio libre en la cache: debo buscar que dato de
los que se encuentran en la cache sustituire por el que acaba de llegar.
La eleccion de las palabras a sustituir se realiza seg un algun criterio:
RAND (Aleatoriamente), FIFO (la que lleva m as tiempo en la cache)
o LRU (menos usada recientemente). Si alg un dato de los que se van a
sacar de la cache se modific o por el programa, se deber a actualizar la
CAPITULO 6: MEMORIAS 177
Organizaci
on
La memoria cache se divide en dos partes, que se representan en la figura
6.6. Consideramos una memoria principal referenciada a nivel de palabra (las
direcciones son direcciones de palabra). Denominamos lnea a la unidad b
asica
de transferencia entre memoria principal y cache. Cada lnea se compone de
varias palabras consecutivas de memoria y es la unidad mnima de datos que
intercambian cache y memoria principal.
byte 0
palabra 0 Direcciones V M palabra 0 palabra 1
byte 1
lnea 0
byte 2 byte 0 byte 1 byte 2 byte 3
palabra 1 lnea 0
byte 3
byte 4 lnea 1
palabra 2
byte 5 lnea 2
lnea 1
byte 6
palabra 3
byte 7
byte 8
......
......
byte 9
......
MEMORIA CACH
MEMORIA PRINCIPAL
Palabras de 2 bytes, lneas de 2 palabras
almacena para esa entrada en la cache. Tiene, adem as, 2 bits por lnea: V (V
ali-
do, indica si el espacio reservado para almacenar la lnea contiene informaci on
v
alida) y M (Modificaci on, indica si la lnea ha sido modificada). Normalmen-
te, el directorio es una memoria asociativa, de forma que la b usqueda de una
palabra en la memoria cache se hace en paralelo.
La Zona del Almacenamiento es una memoria convencional, de gran velo-
cidad de acceso, que puede guardar tantas lneas de memoria principal como
entradas tiene el directorio.
Veamos a continuaci on un ejemplo de c omo funciona la memoria cache.
Supongamos que en el instante que vamos a tomar como inicial, en la memo-
ria principal se encuentran los datos que aparecen en la Figura 6.7 para las
posiciones indicadas. En este ejemplo, vamos a suponer tambien que las lneas
est
a formadas por 4 bytes.
Lnea
27 0 1 2 3
28
Direccin V M Almacenamiento 29
Lnea 0 27 1 0 0 1 2 3 30 7 2 8 9
31 4 1 2 3
1 30 1 0 7 2 8 9
32
2 33 1 1 1 9 5 7 33 1 3 5 7
34
3 31 1 0 4 1 2 3
35
36 9 8 7 6
Memoria Cach
37
38
Memoria Principal
SINOPSIS
OBJETIVOS
7.1.
INTRODUCCION
Terminal Red
Memoria
Controlador Controlador
...
Controlador Controlador
CPU
Disco Duro Impresora
Clock
Clock
7.1.1. Organizaci
on
La CPU, memoria y perifericos comparten el bus del sistema, tanto el bus
de datos como el bus de direcciones. A cada uni on (interfaz) entre el bus
y el periferico se le llama puerto (de E/S). Es la puerta a traves de la
cual accedemos a los controladores (y, por tanto, a los perifericos que tienen
asociados). Fsicamente, un puerto de entrada/salida no es m as que un registro
que puede ser ledo por la CPU (y escrito tambien en muchos casos).
Para poder seleccionar que puerto queremos leer (volcar su contenido al
bus de datos), asignamos a cada uno de los puertos una direcci on unica. De
esta forma, para leer el contenido de un puerto, primero lo direccionamos
(colocando en el bus de direcciones su direccion particular) y luego leemos su
contenido.
En la figura 7.2 podemos ver un esquema de este sistema, incluyendo los
controladores y puertos. Como se puede observar, podemos tener m as puertos
que perifericos. En esta figura no hemos incluido las lneas de control, ya que
en funci
on del conexionado de este bus de control tendremos dos posibles
configuraciones que veremos a continuaci on.
DATOS
CPU DIRECCIONES
Controlador Controlador
Perifrico Perifrico
lneas son para el control de los dispositivos de memoria, mientras que otras
lneas se dedican al control de los perifericos.
Por ejemplo, en la figura 7.3 vemos como la lnea de seleccion de lectu-
ra/escritura en memoria es distinta de la lnea de lectura/escritura en alguno
de los puertos.
Datos
Direcciones
IOR/W
0
1
R/W Controlador Controlador
2 Memoria CPU Perifrico Perifrico
Mapa de Memoria
0
Mapa de E/S
0
2 m- 1
2 n- 1
De esta forma, seg un la senal de control que se active (R/W o IOR/W), sa-
bremos a quien hacen referencia las direcciones del bus de direcciones. Esta si-
tuacion, llevada al nivel del lenguaje ensamblador del procesador, se traduce en
que tendremos diferentes instrucciones para transferencia de datos dependien-
do de que las transferencias sean entre CPU/memoria o entre CPU/perifericos.
Por ejemplo, en los micros de Intel la instrucci on MOV se utiliza para transferen-
cias con memoria, mientras que las instrucciones IN y OUT para transferencias
con puertos de E/S.
El mapa de memoria o mapa de direcciones representa el rango de
186 FUNDAMENTOS DE LOS COMPUTADORES
direcciones validas que puede colocar la CPU en el bus. Dado que existen
direcciones de memoria y direcciones de puertos de E/S, tendremos mapas de
memoria independientes para cada uno de los conjuntos de direcciones.
En la E/S por acumulador, al poder distinguirse un acceso a memoria de
otro a periferico gracias a que las se
nales de control son independientes, los
mapas de memoria pueden solapar parte de su espacio de direcciones. Por
ejemplo, en las arquitecturas con procesadores Intel, la parte mas baja de los
espacios de direcciones pueden corresponder tanto a direcciones de memoria
como de E/S.
Esta es la tecnica m
as simple para controlar operaciones de E/S. Al mismo
tiempo, y como es de esperar, tambien es la tecnica menos eficiente y lenta
para transferencia de informaci
on con perifericos.
La idea es que la CPU controle totalmente las operaciones de E/S. La
CPU tiene, por tanto, que ejecutar programas para iniciar, dirigir y finalizar
CAPITULO 7: ENTRADA/SALIDA 187
Datos
Direcciones
R/W
Controlador Controlador
Memoria CPU Perifrico Perifrico
Memoria
2n - 1
2n
E/S
2 n+m -1
7.3. INTERRUPCIONES
7.3.1. Clasificaci
on de las Interrupciones
Interrupci on Hardware : se generan cuando hay fallos en el hardware del
computador, tales como errores de paridad, falta de suministro de po-
tencia, ... Son de muy alta prioridad. No son enmascarables, es decir, no
se puede inhibir la ejecuci
on de la rutina de interrupci
on correspondiente
una vez se produce la interrupci on.
Interrupci on Software : producida por cualquier causa excepcional durante
la ejecucion de un programa: overflows, division por 0, c
odigo de opera-
ci
on ilegal, ...
Interrupci on Temporal : son interrupciones cclicas, generadas por el reloj
del sistema. Tienen prioridad alta. Un uso com un es la medici
on de
tiempos en la CPU.
CAPITULO 7: ENTRADA/SALIDA 189
7.3.2. Operaci
on
Supongamos que queremos leer un fichero del disco duro. A partir del nom-
bre del fichero, el sistema operativo puede determinar en que pista y sector
comienza. Para empezar a leer bytes (su contenido) es necesario posicionar
previamente el cabezal de lectura del HD en el lugar adecuado. El tiempo
necesario para realizar esta operaci on (tiempo de acceso) es de varios milise-
gundos. Est a claro que mantener la CPU sin hacer nada (o realizando una
espera activa) durante varios milisegundos resulta en una perdida de eficiencia
del sistema.
Por tanto, resulta m as interesante permitir que la CPU ejecute otras ins-
trucciones mientras el controlador del HD se encarga de posicionar el cabezal.
Cuando esta operaci on termine, el controlador enviar a una senal de interrup-
ci
on a la CPU. Esta se nal, activara alg
un bit de un registro interno a la CPU.
Por su parte, la CPU chequea este bit antes de ejecutar una nueva instrucci on
y, si lo encuentra a uno, realiza la siguiente secuencia de operaciones:
1. Resetea el bit e indica al controlador que estamos atendiendo su inte-
rrupci
on.
2. Deshabilitar la posibilidad de que se nos pueda interrumpir de nuevo
mientras estamos atendiendo a este periferico (no se vuelve a mirar el
mencionado bit, aunque se ponga a uno).
3. Transferir el control a una posici on DirRTI de memoria (donde se en-
cuentra la rutina de tratamiento de la interrupcion que estamos atendien-
do), guardando previamente el contador de programa (PC) en PCAc-
tual.
4. Ejecutar la rutina de tratamiento de interrupci on:
Salvar el estado del procesador (SR, puntero de pila, registros de
proposito general, etc...)
Leer el fichero.
Restaurar el estado del procesador (recupera SR, puntero de pila,
registros de prop osito general, etc...).
5. Volver a habilitar las interrupciones.
6. Seguir la ejecuci on del programa por donde se qued o antes de ser inte-
190 FUNDAMENTOS DE LOS COMPUTADORES
7.4.1. Organizaci
on
En la figura 7.5 encontramos un diagrama de bloques con la configuraci on de
un sistema que incluye DMA. Como puede observarse, el DMA, y al contrario
que los dem as dispositivos, puede leer y escribir tanto en el bus de datos
como en el de direcciones. Este dispositivo va a funcionar como un esclavo de
la CPU (o coprocesador para operaciones de E/S), realizando las tareas de
transferencia de E/S que le indique la CPU. El significado de las senales lo
veremos m as adelante, al hablar de su modo de operacion.
Datos
Direcciones
Puerto
RE
Controlador
ACK
CPU Memoria DMA Perifrico
Control
BR
BG
BGACK
7.4.2. Operaci
on
Supongamos que queremos cargar un fichero en memoria. La CPU progra-
mar
a el DMA para que este dispositivo se encargue de la lectura del fichero y
CAPITULO 7: ENTRADA/SALIDA 191
SINOPSIS
OBJETIVOS
8.1.
INTRODUCCION
Aplicaciones
S.O.
Hardware
el procesador.
Interfaz con el usuario, es decir, establecer los mecanismos de comu-
nicaci
on entre el usuario y el hardware.
Compartici on de recursos ya que las actividades concurrentes, que
se ejecutan a la vez, pueden compartir recursos hardware e informaci on.
Entre estos recursos se incluye procesador(es), memoria, E/S y comuni-
caciones (p.e. conexi on a la red).
Almacenamiento a largo plazo (sistema de ficheros) dada la necesi-
dad de los usuarios de guardar sus datos en el computador para usos
posteriores.
Protecci on, pues, aunque habr a elementos que compartir, otros ser
an
privados y deber an ser de acceso restringido.
El sistema operativo ha de responder de forma adecuada, independien-
temente de las situaciones impredecibles que pudieran tener lugar. Es
importante que el S.O. pueda realizar recuperaci on de errores.
Adem as de implementar estas funcionalidades, sera deseable que el S.O.
fuera eficiente, fiable, f
acil de corregir o modificar, y que no ocupe excesivos
recursos (p.e. espacio en disco duro, memoria, etc.).
8.1.2. Evoluci
on de los Sistemas Operativos
La historia de los Sistemas Operativos se puede dividir en una serie de gene-
raciones, cada una caracterizada por introducir alguna novedad.
Las primeras m aquinas carecan de S.O. Los usuarios programaban en
c
odigo m aquina y todas las funciones tenan que ser programadas por ellos
mismo a mano (1940-50). Adem as, se perda mucho tiempo entre la conclusi
on
de un trabajo y el comienzo del siguiente. De forma sintetica los pasos en la
evoluci
on de los S.O han sido:
1. Creaci on de los primeros S.O. (1950) constituidos por programas a los
que se les pasaban un conjunto de trabajos por lotes o batch (.BAT en
el MS-DOS). El S.O. estaba dise nado para ir ejecutando cada uno de los
trabajos uno a uno. Al terminar cada trabajo (normal o anormalmente),
el control se devolva automaticamente al S.O., que iniciaba el trabajo
siguiente.
2. Con la introducci on de la multiprogramaci on en los a
nos 60, la entra-
da/salida se comenz o a realizar en paralelo con la computaci on, apro-
vechandose mejor el procesador.
3. Aparici on del procesamiento en tiempo compartido, donde la m aquina es
CAPITULO 8: INTRODUCCION
A LOS SISTEMAS OPERATIVOS 197
capaz de ejecutar programas de varios usuarios. Esto se hace de modo que
no solo se comparten los recursos, sino que adem as se tiene la sensaci
on
de que la m aquina la estamos usando s olo nosotros. As se explota el
procesador de un modo en el que se obtiene un mayor rendimiento. Para
ello, el S.O. asigna peque
nos intervalos de tiempo de CPU (time slices
o quantum de tiempo) a cada usuario.
4. La complejidad de los S.O. crece da a da, especialmente con los sistemas
multiprocesador, en los que se debe dividir eficientemente las tareas a
realizar entre los procesadores que tenga disponibles el computador.
8.2. Y PLANIFICACION
ADMINISTRACION DE PROCE-
SOS
8.2.1. Proceso
Proceso es cualquier programa que el S.O. haya cargado e iniciado, asign an-
dole los recursos del sistema que necesite (espacio de direcciones de memoria
virtuales y fsicas, variables de entorno, archivos, ...), y aspire a ser ejecutado
en la CPU cuando sea posible. Observar que el S.O. se compone de varios
programas que se ejecutan y son, por tanto, procesos.
El sistema operativo necesita almacenar ciertos datos sobre cada proceso,
para poder realizar sobre ellos ciertas operaciones que veremos m as adelante.
La estructura de datos que se usa para guardar la informaci on relativa a un
proceso se denomina PCB (Bloque de Control de Proceso) y contiene, entre
otros, los siguientes valores:
Estado actual del proceso
Identificador (PID, un n umero) que es unico para cada proceso
Posicion de memoria en donde se encuentra el c odigo del proceso
Identificacion del proceso padre (el que lo cre o)
Identificacion de los procesos hijos (los que el cree)
Informaci on de los recursos que le han sido asignados
Prioridad del proceso, etc...
La forma en que el sistema operativo gestiona los programas en ejecuci on
depender a de si este permite o no tener varios procesos usando el procesador
simultaneamente (procesamiento en tiempo compartido o procesos concurren-
tes):
Un S.O. monotarea y monousuario, como MS-DOS, s olo carga en memo-
ria un u nico programa, pas andole el control a este, que se ejecutara de
198 FUNDAMENTOS DE LOS COMPUTADORES
time slice=10ms.
memoria
procesador subproceso a
proceso1
subproceso b
proceso2
proceso 3
RUNNING
block
dispatch
Timer_run_out
READY BLOCKED
wake-up
A B C A C A
5 10 10 10 10 10 5 10 5
A B C B C A B A A
block A wake-up A
8.2.3. Planificaci
on
N
ucleo del S.O. (KERNEL)
Hay una parte del c odigo del sistema operativo que es la que m as se suele
usar. Esta parte reside en memoria principal y se denomina n ucleo del sistema
operativo.
Entre otras, las funciones m as importantes de este c
odigo son:
Crear y destruir procesos
204 FUNDAMENTOS DE LOS COMPUTADORES
Hemos visto como el S.O. es el encargado de gestionar los recursos del sistema.
Entre ellos, la memoria es uno de los m as importantes que debe administrar.
Imagnese que quisiesemos usar un rango de direcciones de memoria mayor del
que fsicamente tenemos, sin incrementar el hardware. Las posibles soluciones
propuestas por orden cronol ogico, en la historia de la computaci on, son:
Conmutar bancos de memoria entre s, control andolos con un registro, de
forma que en un momento dado las direcciones s olo se refieren al banco
seleccionado. Es una soluci on lenta y cara.
Overlays (recubrimientos). Son definidos por el programador. En ellos,
la informaci on se va cargando conforme se va necesitando, no de una sola
vez al principio del programa (en MS-DOS son los ficheros con extensi on
.OVL).
Memoria Virtual. En este caso se usa la memoria principal como cache
de la memoria secundaria (disco duro).
La memoria virtual surge, por tanto, por la necesidad de ejecutar progra-
mas que usan una cantidad de memoria superior a la que se tiene fsicamente.
Para ello, habr a que desarrollar mecanismos eficientes para la compartici on de
la memoria principal.
Al trabajar con la memoria virtual, nos vamos a encontrar con una termi-
nologa basica:
Pagina: bloques elementales con los que se trabaja en las transferencias
entre memoria principal y secundaria.
Fallo de P agina (miss o page fault): se produce cuando el programa hace
referencia a una direcci on de memoria que no se encuentra entre las
direcciones actualmente cargadas en memoria principal. En este caso,
habra que traer de memoria secundaria la p agina que la contenga. Si
en memoria principal no quedase sitio suficiente para almacenarla, se
debera elegir (siguiendo alguna poltica) la p
agina a la que reemplazar a.
CAPITULO 8: INTRODUCCION
A LOS SISTEMAS OPERATIVOS 205
8.3.1. Ejemplo
Vamos a ver, para terminar, un ejemplo con valores numericos de un sistema
de memoria virtual. El sistema de nuestro ejemplo va a trabajar con p aginas
de 4 Kbytes de tama no. La memoria fsica tendr a un tama no de 4 Megabytes
y el espacio de direcciones virtual ser a de 4 Gigabytes. En este caso:
Tama no de p 12
agina =2 = 4Kbytes = P
Tama no de Mem. Real =222 = 4M bytes = M 210 p aginas
Tama no de Mem. Virtual =232 = 4Gbytes = V 220 p aginas
En la figura 8.5 podemos ver los campos en que se dividen las direcciones,
tanto virtuales como fsicas. En ambos casos, los 12 bits menos significativos se
usan para dar el desplazamiento dentro de la p agina. El espacio de direcciones
virtuales tiene 220 p aginas, mientras que el fsico solo consta de 2 10 , por lo
que se deber a establecer un mecanismo para traducir las p aginas virtuales en
fsicas. Para ello se usa una tabla como la que puede observarse en la figura
8.5.
Esta tabla tendra 220 entradas, una por cada p agina de memoria virtual,
y cada entrada nos dir a si la pagina en cuesti on se encuentra cargada en
memoria y, en este caso, en que posici on fsica (para indicarlo necesitar a 10
bits), o si, por el contrario, est
a almacenada en memoria secundaria y d onde.
En caso de que se encuentre en memoria principal, un bit de modificaci on M
206 FUNDAMENTOS DE LOS COMPUTADORES
pv w
1 pr pr w
bit de presencia
nos indicara si la p
agina en memoria ha sido modificada o se encuentra como
en el momento en que se trajo a memoria principal.
Como se puede apreciar en este ejemplo, utilizar una tabla con tantas
entradas como p aginas virtuales da lugar a grandes tama nos para la tabla.
Para paliar este problema, se riza un poco m as el rizo y se pagina a su vez la
tabla de p aginas. Es decir, la tabla se parte en p aginas y s olo tendremos en
memoria las p aginas de la tabla que esten siendo utilizadas. Siguiendo con el
mismo ejemplo, para un espacio de direcciones virtual de 32 bits, una posible
implementaci on para la tabla de traduccion aparece representada en la figura
8.6.
Podemos observar como el c alculo de la direcci on fsica se hace en dos
fases. En un primer paso usamos los 8 bits m as significativos para elegir la
tabla de traducci on a usar dentro de un directorio de tablas. A partir del
valor as obtenido, que ser a la direcci
on base de la tabla de traducci on a
usar, los siguientes 12 bits nos seleccionar an la entrada adecuada dentro de
la tabla de traducci on. Esta tabla nos dar a como salida la direcci on base
de la p agina que estamos buscando, por lo que si le sumamos los 12 bits
restantes (desplazamiento dentro de la p agina), obtendremos la posici on fsica
correspondiente a nuestra direcci on virtual.
Este metodo presenta una serie de problemas:
a) Son necesarios dos accesos a memoria para realizar la traducci on, por lo
CAPITULO 8: INTRODUCCION
A LOS SISTEMAS OPERATIVOS 207
....... .......
comienzo tabla
1 pr pr w
.......
.......
22 bits -> direccin real
bit de presencia
directorio de tablas
que sera mas lenta. Se puede usar una TLB (Translation Lookaside
Buer) , a modo de memoria cache, que contenga los pares (direcci on
virtual, direcci
on fsica) m
as utilizados, acelerando as el proceso.
b) El propio acceso a la tabla, dado que est a paginada, puede producir un
fallo de p
agina, con la penalizaci on que eso lleva consigo.
SINOPSIS
Gran parte del rendimiento ofrecido por un computador recae en el buen di-
se
no del sistema operativo que utilice. El sistema operativo, aunque software,
es fundamental en el uso de los elementos hardware que componen la m aqui-
na. S
olo hay que fijarse un poco para observar que es un producto clave en
el mercado inform atico, tanto m as cuando de el dependen recursos como la
conectividad en red que cada da cobra m as importancia. En este captulo he-
mos esbozado las caractersticas generales de un sistema operativo, incidiendo
en dos aspectos basicos: la gesti
on de procesos y la memoria virtual.
Ap
endice A
Sistemas de representaci
on
especiales
A.1.
CODIGOS DETECTORES/CORRECTORES DE ERRO-
RES
209
210 FUNDAMENTOS DE LOS COMPUTADORES
A.1.2. C
odigos polin
omicos
El campo redundante R se calcula a partir del campo de informaci on I y una
palabra de control C. Los bits redundantes se determinan como R = ImodC
expresando R con la misma longitud en bits que C. La facilidad del c alculo de
esta operaci on es un elemento a favor de estos c odigos redundantes.
Estos c
odigos, tambien denominados de redundancia cclica (CRC), se sue-
len utilizar en transmisiones en las que errores en r
afagas de bits son frecuentes.
Como ejemplo, si I = 1010001100 y C = 1010 tendremos R = ImodC =
0010. Se suele expresar C como un polinomio con los coeficientes igual a los
dgitos binarios de C, en este ejemplo C x 3 + x.
A.1.3. C
odigo Hamming
Con este codigo se pretende poder corregir y detectar errores de un bit. Se parte
de un campo de informaci on I de n bits al que a nadiremos p bits redundantes
para producir una palabra de n + p bits que es la que ser a transmitida. El
numero de bits redundantes se determina como el menor entero sujeto a la
on 2p n + p + 1. Veamos este c
condici odigo para el caso de n = 4.
Para n = 4, tenemos que el n umero de bits a a nadir es p = 3. El campo de
informacion lo denotamos I = i4 i3 i2 i1 , y el campo redundante R = p3 p2 p1 . La
palabra de n + p bits resultante entremezcla los bits de I y R de la siguiente
manera: B = b7 b6 b5 b4 b3 b2 b1 = i4 i3 i2 p3 i1 p2 p1 . Aqu B es la palabra a transmitir
o enviar. Los bits redundantes se colocan en las posiciones potencia de dos de
B (b2k1 = pk ).
Codificaci on: El bit redundante p i es calculado como la operaci on OR
exclusiva de los bits bk (1 k 7), que pertenezcan a I, cuyo subndice k
expresado en binario contenga el bit i igual a 1. De esta forma:
p 1 = b3 b5 b7
p 2 = b3 b6 b7
p 3 = b5 b6 b7
APENDICE ESPECIALES
A. SISTEMAS DE REPRESENTACION 211
r1 = b1 b3 b5 b7
r2 = b2 b3 b6 b7
r3 = b 4 b 5 b 6 b 7
La clave del codigo radica en los siguiente: Tal como hemos construido los
bits redundantes si existe un error en el bit b k se activar
an aquellos ri que se
correspondan con los lugares donde k expresado en binario tiene 1s. Es decir,
la palabra r3 r2 r1 considerada un n umero binario positivo indica el lugar en
B donde se ha producido el error, con lo cual no solo est a detectado sino que
c
omo sabemos que bit es podemos corregirlo.
A.2.
CODIGOS DE LONGITUD VARIABLE
A.2.1. C
odigo Human
Un c odigo representativo de este tipo de codificaciones de longitud variable es
el c
odigo Human.
La generacion de este codigo sigue el siguiente esquema: Se parte de las
frecuencias relativas (probabilidades) de cada smbolo del alfabeto. Los smbo-
los se ordenan por probabilidades decrecientes. De forma sucesiva se colapsan
los dos smbolos con probabilidades m as bajas en un nuevo smbolo cuya pro-
babilidad es la suma de los smbolos de los que proviene. El nuevo conjunto
resultante se vuelve a reordenar y se repite el proceso hasta que s olo queda
un smbolo con probabilidad uno. Los sucesivos pasos se traducen en un arbol
binario que es usado para generar los c odigos.
212 FUNDAMENTOS DE LOS COMPUTADORES
Smbolo digo
Co
1 0
3 10
2 110
4 1110
5 1111
D
1
0
C
1
0 B
1
0
0
A 1
1 3 2 4 5
A.3. EJERCICIOS
1. Elaborar los codigos Hamming para cada uno de los enteros naturales
en binario menores a 31.
2. Utilice el c
odigo Human para comprimir el siguiente mensaje en octal:
73567356713572252251052525252525252525255252555522237777615435. Cal-
cule la longitud media resultante y comparela con la que se necesitara
si se usara binario natural.
3. Construya el diagrama de estados para un aut omata de estados finitos
que sea capaz de reconocer el c odigo Human creado para el ejercicio
anterior.
4. Usando el polinomio C = x15 + x12 + x5 + 1 calcule el campo CRC para
la secuencia binaria obtenida en 2.
5. Un procesador con arquitectura de cero direcciones (operandos) ejecuta
el programa:
1 push A 6 push B 11 pop R
2 push B 7 push C i
Pi
3 inc 8 push A Pi-1
4 add 9 add .......
5 pop A 10 mult
P0
Resumimos a continuacion la acci
on de las instrucciones, n
umero de
bytes en memoria que ocupan y duraci on del ciclo de instruccion (ck).
Denotaremos Pi el dato que se encuentra en la cima de la pila, siendo i
el puntero de pila. Cada vez que introducimos un nuevo dato en la pila
i se incrementa en 1.
Instrucci
on Acci
on N.o bytes ck
push X i i + 1 y despues Pi X 3 75 ns.
pop X X Pi y despues i i 1 3 75 ns.
add Pi1 Pi + Pi1 y despues i i 1 1 75 ns.
mult Pi1 Pi Pi1 y despues i i 1 1 100 ns.
inc Pi Pi + 1, i no vara 1 75 ns.
Rendimiento de un
computador
Tiempo consumido
=
Tiempo de referencia
215
216 FUNDAMENTOS DE LOS COMPUTADORES
B.1.1. Ejemplo
Queremos mejorar el rendimiento de un computador introduciendo un copro-
cesador matematico que realice las operaciones aritmeticas en la mitad de
tiempo. Calcular la ganancia en velocidad del sistema para la ejecucion de
APENDICE B. RENDIMIENTO DE UN COMPUTADOR 217
Tiempo de ejecuci
on sin mejora
=
Tiempo de ejecuci
on con mejora
Y dado que el numerador de esta expresion es 12 segundos, sustituyendo
A por 1.42 y despejando, obtenemos que el programa tardar a 8.45 segundos
cuando se ejecute aprovechando el coprocesador matematico.
1 m
1-p
1 1
m p
1 0 1
(a) (b)
B.2. DE MOORE
OBSERVACION
100000
CPUs de Intel Pentium 4
2.5aos
10000 Itanium
P6 (PentiumPro)
Miles de transistores
80486
P5 (Pentium)
1000
80386
80286
100
8086
4004
1
1975 1980 1985 1990 1995 2000 Ao
B.3. DE GROSCH
OBSERVACION
B.3.1. Ejemplo
Suponiendo que la potencia de computaci on de un PC se puede considerar
proporcional a su frecuencia de reloj, estimar cu
al ser
a el precio que tendr
a el
Pentium a 2 GHz, teniendo en cuenta que un Pentium tpico a 500 MHz tiene
un precio de unas 1.000 euros.
Soluci
on:
Aplicando la ley de Grosch, tenemos que el precio ser a:
4
2000
1.000 = 1.000 2 = 2.000 euros
500
220 FUNDAMENTOS DE LOS COMPUTADORES
B.4. EJERCICIOS
Tipo de instrucci
on CPI Millones de instrucciones
Compilador 1 Compilador 2
Simple 1 5 10
Normal 2 1 1
Compleja 3 1 1
C.1.
CODIGOS COMPLETOS
Los siguientes c
odigos corresponden con algunos de los problemas del captulo
3. En este apendice los c
odigos se muestran de forma completa, incluyendo los
segmentos de datos, pila y c odigo para poder ser ensamblados.
1. Tenemos 250 n umeros en C2 de 16 bits en las posiciones 500 a 998 de
memoria. Escribir un programa en ensamblador que cuente los n umeros
P 0 y N < 0 y que almacene P en la posici on 1000 de memoria y N
en la 1002.
;----------------
DATOS SEGMENT
; aqui declarar variables si hace falta
DATOS ENDS
;----------------
PILA SEGMENT
DB 512 DUP(0)
PILA ENDS
;----------------
CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS, SS:PILA
INICIO:MOV CX, 0H ; contador de positivos o cero
MOV DX, 0H ; contador de negativos
MOV DS, 0H ; los datos el el segmento 0
MOV SI, 500 ; inicializar desplazamiento
;----------------
223
224 FUNDAMENTOS DE LOS COMPUTADORES
2. Tenemos 100 n
umeros positivos de 16 bits en las posiciones de memoria
1000 a 1198. Escribir un programa que determine cu al es el n
umero
mayor de todos y lo almacene en la posici
on 1200.
;----------------
DATOS SEGMENT AT 1200 ; variable que contiene el mayor en 1200
MAYOR DW 0
DATOS ENDS
;----------------
PILA SEGMENT STACK
DB 512 DUP(0)
PILA ENDS
;----------------
CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS, SS:PILA
INICIO:MOV ES, 0H ; los datos el el segmento 0
MOV SI, 1000; inicializar desplazamiento
MOV AX, SEG DATOS
MOV DS, AX ; iniciar DS apuntando a datos
;----------------
LAZO: CMP SI, 1198; hemos llegado al final?
JG FIN
CMP WORD PTR ES:[SI], WORD PTR MAYOR
JLE MENOR
MOV MAYOR, WORD PTR ES:[SI]
MENOR:
APENDICE
C. CODIGOS COMPLETOS PARA EL 8086 225
;----------------
DATOS SEGMENT AT 500
NUMERO DW 6
SUMAT DW ?
DATOS ENDS
;----------------
PILA SEGMENT STACK
DB 512 DUP(0)
PILA ENDS
;----------------
CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS, SS:PILA
MOV AX, SEG DATOS
MOV DS, AX ; DS apuntando a datos
;----------------
INICIO: MOV AX, NUMERO; guardo el numero en AX
MOV CX, 0 ; inicio CX donde metere el sumatorio
LAZO: ADD CX,AX
SUB AX,1
CMP AX,0
JNE LAZO
FIN: MOV SUMAT, CX
;----------------
FINP:MOV AH,4CH ; interrupcion fin de programa
INT 21H
CODIGO ENDS
;----------------
END INICIO
ci
on 100 de memoria con 50 n umeros de 16 bits en complemento a dos,
multiplicar por 2 los n
umeros pares y dividir por 2 los impares (divi-
si
on entera), dejando cada n
umero modificado en la misma posici on de
la tabla en la que estaba. No utilizar las instrucciones de multiplica-
ci
on y divisi
on (MULS y DIVS). No considerar el caso de overflow al
multiplicar por dos.
;----------------
DATOS SEGMENT AT 100
TABLA DW 50 DUP(?) ; zona de memoria con los numeros
DATOS ENDS
;----------------
PILA SEGMENT STACK
DB 512 DUP(0)
PILA ENDS
;----------------
CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS, SS:PILA
MOV AX, SEG DATOS
MOV DS, AX ;cargar DS con el seg de datos
LEA SI, TABLA ;SI apuntando a TABLA
;----------------
MOV DX,50 ;contador de elementos de la tabla
LAZO: MOV AX, [SI]
MOV BX, AX
AND BX, 01H
CMP BX, 01H
JE IMPAR
SAL AX, 01H
JMP SEGUIR
IMPAR: SAR AX, 01H
SEGUIR:MOV [SI], AX
ADD SI, 2 ; SI apunta a la siguiente palabra
SUB DX, 1 ; decremento contador del bucle
CMP DX, 0
JNE LAZO
;----------------
FINP:MOV AH,4CH ; interrupcion fin de programa
INT 21H
CODIGO ENDS
;----------------
END INICIO
;----------------
DATOS SEGMENT AT 100
TABLA DW 50 DUP(?) ; zona de memoria con los numeros
DATOS ENDS
;----------------
PILA SEGMENT STACK
DB 512 DUP(0)
PILA ENDS
;----------------
CODIGO SEGMENT
ASSUME CS:CODIGO, DS:DATOS, SS:PILA
MOV AX, SEG DATOS
MOV DS, AX ;cargar DS con el seg de datos
LEA SI, TABLA ;SI apuntando a TABLA
;----------------
MOV DX,50
LAZO: MOV AX, [SI]
CMP AX, 00H
JE NEGA
SAL AX, 01H
ADD [SI], AX
JMP SEGUIR
NEGA: MOV [SI], 0H
SEGUIR:ADD SI, 2 ;apuntar a la siguiente palabra
SUB DX, 1
CMP DX, 0
JNE LAZO
;----------------
FINP:MOV AH,4CH ; interrupcion fin de programa
INT 21H
CODIGO ENDS
;----------------
END INICIO
Ap
endice D
Detalles de dise
no de cache
D.1.1. Asignaci
on directa
Con este criterio, la correspondencia entre memoria principal y cache se hace
de la siguiente manera: la lnea i de la memoria principal se ubica en la lnea
i mod 2n de la cache. As, los subconjuntos de lneas de memoria principal que
pueden ser almacenadas en cada lnea cache son disjuntos.
Partiendo de la direccion de palabra de memoria principal, es f acil ubicar
la lnea correspondiente en memoria: los u ltimos w bits indican que palabra re-
ferenciamos dentro de la lnea, los n siguientes indican que linea referenciamos
dentro de la cache y el resto (los mas significativos) nos sirven para determinar
si la lnea est
a en cache o no (etiqueta) (ver figura D.1).
Entre las ventajas de este tipo de asignaci on encontramos su simplicidad
y su bajo coste: s olo hace falta el uso de un comparador para saber si la
lnea esta en la cache, el directorio cache es una memoria convencional (no
asociativa) y no hace falta algoritmo de reemplazo (cada lnea de memoria
principal se mapea de forma unvoca en la cache).
Como inconveniente se encuentra el hecho de que la cache puede tener
lneas vacas y sin embargo, ocurra reemplazo (cuando los accesos consecutivos
a memoria principal est an a una distancia 2 n lneas).
229
230 FUNDAMENTOS DE LOS COMPUTADORES
n w
lnea memoria principal
CACHE
linea k
.....
.....
etiqueta ....... pal. w ....... linea k
.....
.....
.....
linea k+2**n
directorio
D.1.2. Asignaci
on completamente asociativa
Para paliar el inconveniente anterior, una organizaci on totalmente asociativa
va a permitir que cualquier lnea de memoria principal pueda ubicarse en
cualquier lnea de la cache. Para ello, partiendo de la direccion de la palabra
referenciada, los N bits m as significativos indican a que lnea pertenece la
palabra en memoria principal. Por tanto, guardando esta informaci on en el
directorio, y realizando una b usqueda asociativa en el, determinamos si se
encuentra o no la lnea en cache y, en caso de que se encuentre, cu al es su
posici
on en la cache (ver figura D.2).
Vemos que este criterio maximiza la flexibilidad y el rendimiento al poder
ser ocupada cualquier posici on libre de la cache. Como contrapartida el coste
aumenta: se necesita una memoria asociativa y adem as es necesario implemen-
tar un algoritmo de reemplazo.
D.1.3. Asignaci
on asociativa por conjuntos
Es una organizaci
on de compromiso entre las dos anteriores. La cache se orga-
niza en 2c unidades que denominaremos conjuntos, cada uno de los cuales va a
APENDICE DE CACHE
A. DETALLES DE DISENO 231
N w
......
CACHE
......
......
......
etiqueta ....... pal. w .......
......
......
......
......
directorio
......
asignaci
on directa.
N+w bits (direccin de palabra de memoria)
n bits lnea cache
N bits lnea memoria principal
N-c c w
MEM principal
conjunto 0 CACHE
..... .....
linea 2**c
conjunto 1
......
linea 2*2**c
......
......
......
linea 3*2**c conjunto c-1
......
directorio
D.2.
REEMPLAZO Y ACTUALIZACION
Por u
ltimo, apuntar que es posible interponer varios niveles de cache en-
tre la memoria principal y el microprocesador. Cada cache tratara la de nivel
superior como si fuera su memoria principal, funcionando tal como hemos vis-
to, siendo cada nivel mas r
apido y de menor capacidad cuanto m as cerca se
encuentre del microprocesador.
D.3.
RENDIMIENTO DE MEMORIAS CACHES
Topologa cach
e de un solo nivel unificada con precarga. Usando el mis-
mo modelo de antes, y considerando t p la penalizaci
on introducida por
cada precarga, basta sumar el tiempo adicional que representan estas,
para calcular la latencia equivalente:
Topologa cach
e separada Datos+Instrucciones. El rendimiento se de-
termina de forma an aloga al caso unificado, s
olo que considerando se-
paradamente, en la traza de peticiones, lo que son peticiones de datos
y peticiones de instrucciones. Si Tdata es la latencia equivalente en la
cache de datos, Tis la de la cache de instrucciones, Pdata la probabili-
dad de peticion de datos en la traza completa y P is la probabilidad de
petici
on de instrucciones, la latencia efectiva se determinara como:
D.4. EJERCICIOS
8. Considera el siguiente c
odigo ensamblador del i8086, en el que se facilita
el desplazamiento (oset), referido a cada segmento, de las etiquetas y/o
instrucciones:
0000 DATOS SEGMENT
0000 TABLA1 DW 128 DUP(1)
0100 TABLA2 DW 128 DUP(0)
0200 DATOS ENDS
;-------------------------
0000 PILA SEGMENT STACK
0000 DB 512 DUP(0)
0200 PILA ENDS
;-------------------------
0000 CODIGO SEGMENT
ASSUME CS:CODIGO,DS:DATOS,SS:PILA
0000 INICIO: MOV AX, SEG DATOS
0003 MOV DS, AX
0005 XOR SI, SI
0007 BUCLE: MOV BX, TABLA1[SI]
000B ADD BX, TABLA2[SI]
000F MOV TABLA1[SI], BX
0013 ADD SI, 02H
0016 CMP SI, 128
001A JNE BUCLE
001C FINP: MOV AH,4CH
001E INT 21H
0020 CODIGO ENDS
END INICIO
a) Escribe la traza de la ejecuci on mostrando las palabras de memo-
ria referenciadas diciendo si se trata de b usqueda de instrucci on,
lectura o escritura de datos. Suponga para ello que los registros de
segmentos son: DS=200H, SS=220H, CS=240H.
b) Dado que el bus de datos es de 16 bits, dise ne un esquema de
memoria entrelazada para este procesador que conste de 2 bancos
de memoria cada uno direccionado a nivel de byte.
c) Con una peque na cache de 1Kbyte, con tama no de palabra de 2
bytes, tama no de lnea de 4 palabras, cu
al es la tasa de fallos para
la ejecucion de este programa en los siguientes casos: completa-
mente asociativa, de mapeo directo, asociativa por conjuntos con
8 conjuntos? Suponga que no hay precarga y la actualizaci on es
write-through.
d) Y si dicha cache se dividiera en dos: una para referencias a datos
y otra para instrucciones?
Solucio n:
Nos vamos a centrar en la ejecuci on del bucle. Puesto que este se
ejecuta 64 veces solo vamos a analizar las 2 primeras iteraciones: (Con
R indicamos lectura de datos, W escritura de datos e I b usqueda de
instruccion). Las direcciones corresponden a posiciones fsicas del byte
referenciado. (Para el segmento de c odigo la posici on fsica se calcula
como CS*10H+oset y para el de datos DS*10H+oset). Se indica el
APENDICE DE CACHE
A. DETALLES DE DISENO 247
Soluci
on a las relaciones de
problemas
E.1. DE LA INFORMACION
REPRESENTACION
Representaci
on de los datos
249
250 FUNDAMENTOS DE LOS COMPUTADORES
numeros en base r?
Soluci
on: Variaciones con repetici on de r elementos tomados de k en
k
k, es decir, RVr = r .k
8. Expresar los n
umeros decimales -63, 91 y -23 en signo/magnitud, en
complemento a uno y en complemento a dos utilizando una palabra de
8 bits.
Soluci
on:
APENDICE A LAS RELACIONES DE PROBLEMAS
B. SOLUCION 251
N
umero Sig/Magnitud C1 C2
-63 1011 1111 1100 0000 1100 0001
91 0101 1011 0101 1011 0101 1011
-23 1001 0111 1110 1000 1110 1001
9. Cuantos bits son necesarios para representar todos los n umeros entre
-1 y +1 con un error no mayor de 0.0001(10 en complemento a dos y con
notacion en punto fijo?
5 6
Solucion: n = ceil log2 ( 1024 + 1) = 15
10. Representar los siguientes n umeros como flotantes IEEE-754 en simple
precisi
on.
a) 10
b) 10.5
c) 0.1
d) 0.5
e) -23.15625
Solucion:
a) 10 = 0 1000 0010 0100 0000 ... 0
b) 10.5 = 0 1000 0010 0101 0000 ... 0
c) 0.1 = 0 0111 1011 1001 1001 1001 1001 ... 1001
d) 0.5 = 0 0111 1110 0000 ... 0
e) -23.15625 = 1 1000 0011 0111 0010 1000 0000 ... 0
11. Que inconveniente encontramos en la representaci on de n
umeros rea-
les en punto fijo? Dados estos dos n umeros en el formato IEEE 754:
C0E80000 y 00080000; decir que valores representan en decimal.
Solucion:
Limita el rango y la precisi on y presenta el problema del escalado.
C0E80000(H = -7.25(10 ; 00080000(H = 1 x 2130 (10
12. Cuales son los requisitos deseables de un sistema de numeraci on de
enteros con signo? Que sistema cumple mejor esos requisitos? Expresar
el n
umero 9.75 en su representaci on IEEE 754 de 32 bits (convierte a
252 FUNDAMENTOS DE LOS COMPUTADORES
Ya esta normalizado
17. Cual son los n
umeros positivos m as peque
no y m
as grande representa-
bles para los siguientes convenios?:
a) IEEE-754
b) IBM/360
c) PDP-11
Soluci
on:
a) IEEE-754 : m = 1.0 x 2126 (Mirar nota al pie 1 ); M 2 x 2127
b) IBM/360 : m = 0.0001 x 1664 ; M 1 x 1663
c) PDP-11 : m = 1.0 x 2128 ; M 2 x 2127
Representaci
on de las instrucciones
1. Disena un codigo de operaci
on con extensi
on que permita lo siguiente y
se pueda codificar en una instrucci
on de 36 bits:
a) 7 instrucciones con dos direcciones de 15 bits y un numero de re-
gistro de 3 bits,
b) 500 instrucciones con una direcci on de 15 bits y un n umero de
registro de 3 bits,
c) 50 instrucciones sin direcciones ni registros.
Solucion:
a) 7 instrucciones con dos direcciones de 15 bits y un numero de re-
gistro de 3 bits:
C.O. (3) Direcci
on1 (15) Direcci
on2 (15) Registro (3)
con C.O. de 001 (1) a 111 (7).
b) 500 instrucciones con una direcci
on de 15 bits y un n
umero de
registro de 3 bits:
000 (3) C.O. (9) Direcci
on 1 (15) Registro (3) XXX XXX (6)
con C.O. de 000000001 (1) a 111110100 (500).
c) 50 instrucciones sin direcciones ni registros:
000 (3) 000000000 (9) C.O.(6) XXX ... X (18)
con C.O. de 000000 (0) a 110001 (49).
2. Es posible disenar un codigo de operacion con extensi
on que permi-
ta codificar lo siguiente en una instrucci
on de 12 bits? Un registro se
direcciona con 3 bits.
a) 4 instrucciones con tres registros,
1
Si consideramos n
umeros desnormalizados m= 1.0 x 2149
254 FUNDAMENTOS DE LOS COMPUTADORES
b) 1111 (4) C.O. (6) Desp (6) Dir (10) Reg (4)
c) 1111 (4) 111111 (6) C.O. (6) Dir (10) Reg (4)
con C.O. de 000000 (0) a 111011 (59).
d) 1111 (4) 111111 (6) 1111XX (6) C.O.(2) Reg(4) Reg(4) Reg(4)
Para codificar las 16 instrucciones usamos XX de 00 a 11 (co-
rrespondientes a los codigos de operaci
on 60 a 63 del formato
anterior) junto con los dos bits indicados. Reservamos XX=11
y CO=11 para especificar el siguiente formato:
e) 1111(4) 111111(6) 111111(6) 11 (2) C.O.(4) XX...X(8)
a) LOAD 20 AC 20
b) LOAD [20] AC 40
c) LOAD [[20]] AC 60
d) LOAD 30 AC 30
e) LOAD [30] AC 50
f) LOAD [[30]] AC 70
6. Compara las maquinas de 0, 1, 2, y 3 direcciones escribiendo programas
para calcular
X = (A + B C)/(D E F )
para cada una de las cuatro m aquinas. Para que no se pierdan los valores
originales de las variables A, B, C, D, E y F podremos apoyarnos en
una variable temporal T. Suponiendo direcciones de 16 bits, c odigos de
operacion de 8 bits y longitudes de instrucci
on que son m ultiplos de 4
bits, Cuantos bits necesita cada computadora para calcular X?
Soluci
on:
3 Direcciones
MUL B, C, T
ADD A, T, T
MUL E, F, X
SUB D, X, X
DIV T, X, X
Bits necesarios: 5 x (8 + 3 x 16) = 280.
2 Direcciones
MOVE C, T
MUL B, T
ADD A, T
MOVE F, X
MUL E, X
SUB D, X
DIV T, X
Bits necesarios: 7 x (8 + 2 x 16) = 280.
1 Direcci
on
LOAD C
MUL B
ADD A
STORE T
LOAD F
APENDICE A LAS RELACIONES DE PROBLEMAS
B. SOLUCION 257
MUL E
SUB D
DIV T
STORE X
Bits necesarios: 9 x (8 + 16) = 216.
0 Direcciones (usando una pila)
PUSH A
PUSH B
PUSH C
MUL
ADD
PUSH D
PUSH E
PUSH F
MUL
SUB
DIV
POP X
Bits necesarios: 5 x 8 + 7 x (8 + 16) = 208.
1. Para el n
umero de 16 bits: 1001 0101 1100 0001 almacenado en el registro
AX, muestra el efecto de:
a) SHR AX, 1
b) SAR AX, 1
c) SAL AX, 1
d) ROL AX, 1
e) ROR AX, 1
Soluci
on:
a) SHR AX, 1 0100 1010 1110 0000 CF=1
b) SAR AX, 1 1100 1010 1110 0000 CF=1
c) SAL AX, 1 0010 1011 1000 0010 CF=1
d) ROL AX, 1 0010 1011 1000 0011 CF=1
e) ROR AX, 1 1100 1010 1110 0000 CF=1
2. Como podras poner a 0 el registro AX si no dispones de una instrucci
on
de BORRAR (CLEAR)?
Soluci
on: De menos a m as eficientemente:
258 FUNDAMENTOS DE LOS COMPUTADORES
a) SHL AX, 16
b) MOV AX, 0
c) SUB AX, AX
d) XOR AX, AX
3. Inventa un metodo para intercambiar dos registros (AX y BX) sin usar
un tercer registro o variable ni la instrucci
on XCHG. Sugerencia: piensa
en la instrucci
on OR EXCLUSIVO.
Soluci
on:
XOR AX, BX
XOR BX, AX
XOR AX, BX
Inicializacion
Leer dato
SAR
No Si (impar)
CF?
Escribe dato
Si
Mas?
No
FIN
Inicializacion
Leer dato en AX
Si (negativo) No
AX<0
MOV BX, AX
AX = 0 SAL AX, 1
ADD AX, BX
Escribe dato
Si
Mas?
No
FIN
posici
on f
sica contenido
..... .....
E0006 DE H
E0005 BC H
E0004 9A H
E0003 78 H
E0002 56 H
E0001 34 H <-- TABLA
E0000 12 H
..... .....
5D276 07 H
5D275 06 H
5D274 05 H
5D273 04 H
5D272 03 H
5D271 02 H
5D270 01 H
..... .....
E.3. DE CONTROL
SECCION
ROM de Proyecci
on del problema 4
Dir 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Cont. 8 10 4 5
ROM de Proyecci
on del problema 6
Dir 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Cont. 11 7 5 3
ROM de Proyecci
on del problema 7
Dir 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Cont. 6 11 4 9
PC++; DEC. 1 0 1 1 1 1 0 1 1 1 1
Z? 2 1 0 00000 00100
PC++. Salto Fetch 3 0 1 1 1 1 0 1 1 1 00000 00000
(PC) D 4 1 0 0
D PC 5 0 1 0 1 0 1 1 1 00000 00000
A-B. C? 6 1 0 0 0 1 1 0 1 1 0 1 00000 01000
Salto Fetch 7 1 1 00000 00000
A B. Salto 8 1 0 0 1 1 1 1 00000 00000
A I 9 1 0 0 0 1
B A 10 1 1 0 1 0
IB 11 0 1 0 1 1 1 1 00000 00000
A LAS RELACIONES DE PROBLEMAS
c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 CS Dir. Salto
RI (PC) 0 1 0 1
TEMPA PC 1 1 1
TEMPB R1 2 1 1 1 1
B. SOLUCION
PCALU; DEC. 3 0 0 1 1 1 11
TMP [RY] 4 1 1 1 1 1
[RX] TMP 5 1 1 1 1 11 0
TEMPA [RX] 6 1 1
TEMPB [RY] 7 1 1 1
[RX] ALU 8 1 1 1 1 11 0
Si C=1 salta a 0 9 01 0
PC [RY] 10 1 1 1 11 0
TEMPA SI 11 1 1 1
TEMPB [RY] 12 1 1 1
A LAS RELACIONES DE PROBLEMAS
TMP ALU 13 1 1 1 1
[RX] (TMP) 14 1 1 1 1 11 0
C1(x) + C1(y) = x + 2n 1 y = 2n 1 + x y
y > x el resultado es negativo y queremos que este en
C1, que es lo que tenemos (no aparece acarreo):
APENDICE A LAS RELACIONES DE PROBLEMAS
B. SOLUCION 271
C1(y x) = 2n 1 (y x)
x > y el resultado es positivo, queremos tener x y y
sin embargo hemos obtenido:
2n 1 + x y
Esto se traduce, por un lado, en un uno en la posici
on del c n+1
(2n ) y en otro uno que aparece restando y que nos sobra. Para
cancelarlos lo que hacemos es sumar el acarreo obtenido con lo
que desaparece el acarreo y se compensa el -1.
c) Los dos n umeros a sumar son negativos (x n = yn = 1). Como los
dos bits de signo son uno, cn+1 = 1 siempre. Si sn = 0 se habra pro-
ducido overflow, pues no podemos tener un resultado positivo. En
este caso tambien se debe sumar el acarreo para obtener el resultado
correcto:
C1(x) + C1(y) = 2n 1 x + 2n 1 y
= 2n 1 + 2n 1 (x + y) (E.1)
7 89 :
Solo nos interesara la parte que abarca la llave como resultado. Para
elminar el resto hacemos lo mismo de antes: sumar el acarreo (2 n )
con el -1, con lo que se cancelan.
A modo de conclusi on, podemos afirmar que siempre que aparezca un
acarreo habr a que sumarlo al resultado para corregirlo.
4. Los numeros decimales con signo de n 1 dgitos se pueden representar
mediante n dgitos sin signo utilizando la representaci on en complemento
a 9. El complemento a 9 es el complemento a la base menos 1 cuando
la base es 10 (igual que el C1 es el complemento a la base menos uno
cuando la base es 2). El C9 de un n umero decimal N se obtiene mediante
la siguiente expresion:
C9(N ) = 10n 1 N
donde n es el n
umero de dgitos con que trabajo. Una tecnica para hacer
el C9 de un numero consiste en restar cada dgito de 9. As, el negativo
de 014725 es 985274. Se pide:
a) Expresa como n umeros de tres dgitos en complemento a 9 los si-
guientes n
umeros: 6, -2, 99, -12, -1, 0.
272 FUNDAMENTOS DE LOS COMPUTADORES
12 + 5 + 7 + 3 +10 + 9 = 46
CSA1 CSA2
s1 2c1 s2 2c2
CSA3
s3 2c3
CSA4
s4 2c4
SAP
SUMA=46
Figura E.3: Arbol de Wallace para seis sumandos
001100 x1 000011 x4
000101 x2 001010 x5
000111 x3 001001 x6
--------- ---------
001110 s1 000000 s2
000101 c1 001011 c2
s1 001110
2c1 001010
s2 ------
000100 s3
001010 c3
274 FUNDAMENTOS DE LOS COMPUTADORES
s3 000100
2c3 010100
2c2 010110
------
000110 s4
010100 c4
s4 000110
2c4 101000
------
101110 = 46
7- 5 + 9
CSA1
SAP
Figura E.4: Arbol de Wallace para tres sumandos
000111 x1
111011 x2
001001 x3
------
110101 s
001011 c
APENDICE A LAS RELACIONES DE PROBLEMAS
B. SOLUCION 275
110101 s
010110 2c
------
001011 = 11 (once en decimal)
9. Realiza las siguientes multiplicaciones mediante el algoritmo de multi-
plicaci
on binario de suma y desplazamiento con n=5.
a) 12 10
b) 7 12
c) 6 15
10. Realiza las siguientes divisiones mediante el algoritmo de divisi
on binario
con restauracion con n=5.
a) 12 3
b) 15 2
11. Realiza las siguientes operaciones con n umeros en punto flotante en el
formato IEEE 754.
a) C30C0000 + C1500000
b) 3B370000 + 39F 68000
Soluci
on:
a) C30C0000 1 | 100 0011 0 | 000 1100 00..00 = 1.00011 2 7
C1500000 1 | 100 0001 0 | 101 0000 00..00 = 1.101 2 3
1.01101110000 29
0.00111101101 29
1.10101011101 29
1.10101011101 29 3B55D000
Bibliografa
277
Parece que ya deja de sorprender la creciente omnipresencia de los ordena-
dores en todos los ambitos de la sociedad. A nosotros nos sigue impresionando
la rapidsima evoluci
on de los sistemas basados en computador, su creciente
potencia de calculo capaz de resolver cada vez problemas de mayor compleji-
dad y su capacidad de simplificar y reducir el tiempo necesario para realizar
muchas tareas cotidianas. Pues bien, los fundamentos, conceptos y modos de
operacion de estas m aquinas tan comunes hoy en da, son los que tratamos
de introducir y desentra nar en este texto. O con otras palabras, este libro
est
a orientado a aquellas personas que alguna vez se han preguntado C omo
es posible que los transistores y puertas l
ogicas que hay dentro de mi ordena-
dor me permitan editar un archivo o ejecutar un programa que he escrito en
Modula o en C?, pregunta, que por otro lado, esperamos se hayan planteado
todos nuestros alumnos de asignaturas de introducci on a los computadores.
Aunque no son del todo necesarios, suponemos que el lector tiene algunos
conocimientos de electr onica digital y programacion. Pues bien, en este libro
precisamente queremos cubrir el desnivel sem antico que existe en un sistema
computador entre esas dos materias (electr onica digital y lenguajes de alto
nivel), contemplando el control microprogramado y cableado, el lenguaje en-
samblador y los sistemas operativos, seg un desglosamos a continuaci on por
temas.
El tema 1 introduce los primeros conceptos b asicos y una descripcion ini-
cial de la arquitectura de von Neumann. El tema 2 describe los convenios
com unmente utilizados para representar n umeros, caracteres e instrucciones
en el computador. A partir del tema 3 profundizamos en la arquitectura de
computadores siguiendo un esquema estructural, en el que el computador se
compone del procesador (tema 3), el cual engloba la secci on de control (tema
4) y de procesamiento (tema 5), jerarqua de memoria (tema 6) y unidad de
Entrada/Salida (tema 7). Por u ltimo, el tema 8 describe como los Sistemas
Operativos permiten gestionar toda la arquitectura, dando una visi on global
del computador.