Arquitectura de Ordenadores I
Arquitectura de Ordenadores I
Arquitectura de Ordenadores I
Arquitectura de Ordenadores I
Apuntes de
Arquitectura de
Ordenadores I
Norberto M. Ramos Calero EUITT
ARQUITECTURA DE ORDENADORES I
Apuntes de Arquitectura de
Ordenadores I
Primera edicin
Impreso en:
Universidad de Las Palmas de Gran Canaria
Campus Universitario de Tafira
35017 Las Palmas
Octubre 2001
Fotocopiadora: Xerox
Modelo: DOCUTECH
N. serie: 1104516609
ISBN: 84-XXXXX-XX-X
Depsito legal: GC-920-2001
Todas las marcas comerciales o de equipos utilizados en este tomo son marcas registradas de sus respectivos propietarios.
Tabla de contenidos
TEMA 1.................................................................................................................1
INTRODUCCIN A LOS COMPUTADORES ..............................................................1
Organizacin Estructurada de Computadoras ..............................................1
Lenguajes, niveles y mquinas virtuales....................................................2
Mquinas multinivel contemporneas .......................................................4
TEMA 2...............................................................................................................11
CODIFICACIN Y REPRESENTACIN DE LA INFORMACIN .................................11
Marcas numricas........................................................................................11
Sistemas de agrupamiento sencillos ............................................................12
Numerales romanos .....................................................................................12
Sistemas numricos posicionales .................................................................12
NMEROS BINARIOS ..........................................................................12
NMEROS DE PRECISIN FINITA ................................................12
SISTEMAS NUMRICOS CON BASE .............................................14
CONVERSIN DE UNA BASE A OTRA .........................................17
NMEROS BINARIOS NEGATIVOS ..............................................18
ARITMTICA BINARIA ...................................................................21
Conversin entre bases ................................................................................22
Valores fraccionarios...................................................................................24
Memoria Primaria o Principal ....................................................................25
Bits ...........................................................................................................25
Direcciones de memoria.......................................................................26
Ordenamiento de bytes.........................................................................26
Cdigos para la correccin de errores..................................................29
Codificacin de los caracteres.....................................................................33
TEMA 3...............................................................................................................35
ARITMTICA DEL PROCESADOR.........................................................................35
UNIDAD ARITMTICO LGICA...............................................................35
REPRESENTACIN DE ENTEROS............................................................36
Representacin en signo y magnitud .......................................................36
Representacin en complemento a la base...............................................37
Conversin entre longitudes de bits diferentes ........................................39
Representacin en punto fijo....................................................................41
ARITMTICA CON ENTEROS....................................................................41
Arquitectura de Ordenadores I i
ndice
Negacin.................................................................................................. 41
REGLA DE DESBORDAMIENTO: .............................................. 44
REGLA PARA LA RESTA: ........................................................... 44
Multiplicacin.......................................................................................... 45
Enteros sin signo.................................................................................. 45
Multiplicacin en complemento a dos............................................. 47
Divisin ............................................................................................... 54
TEMA 4 .............................................................................................................. 35
ALU, UC Y MEMORIA PRINCIPAL .................................................................... 58
Introduccin ................................................................................................ 58
El FUNCIONAMIENTO DEL COMPUTADOR ......................................... 61
ORGANIZACIN DEL PROCESADOR ..................................................... 66
ORGANIZACIN DE LOS REGISTROS .................................................... 67
EL CICLO DE INSTRUCCION................................................................... 74
Flujo de datos .......................................................................................... 76
TEMA 5 .............................................................................................................. 78
LA RUTA DE DATOS.......................................................................................... 78
Introduccin ................................................................................................ 78
1 Esquemas de clculo ........................................................................... 79
SOLUCIN ......................................................................................... 79
2 Mquina algortmica............................................................................ 79
SOLUCION ......................................................................................... 80
3 Algoritmo interpretacin ..................................................................... 80
SOLUCIN ......................................................................................... 80
Los Componentes Fundamentales ............................................................... 80
La Unidad Aritmtico-Lgica (ALU) ..................................................... 81
Los registros ............................................................................................ 81
Registros de la ALU ............................................................................ 82
Banco de registros generales ................................................................... 84
Registros especiales............................................................................. 85
Los buses o lneas de interconexin ............................................................ 86
Bus de direcciones................................................................................... 87
Bus de datos............................................................................................. 87
Bus de control.......................................................................................... 87
Anlisis de Arquitecturas ............................................................................ 87
Camino de Datos Secuencializado con un bus ........................................ 88
Camino de Datos Secuencializado de dos buses ..................................... 91
Camino de Datos Secuencializado de tres buses..................................... 93
EL CAMINO DE DATOS DE LA MAQUINA SENCILLA .................................. 95
Unidad Aritmtico-Lgica de la MS ....................................................... 95
Los registros de la MS............................................................................. 98
Los buses de la MS.................................................................................. 99
EL CAMINO DE DATOS DE LA M+ ............................................................ 102
La Unidad Aritmtico-Lgica ................................................................... 103
Los registros .......................................................................................... 105
Buses de interconexin.......................................................................... 109
ii Arquitectura de Ordenadores I
ndice
TEMA 6.............................................................................................................112
INTRODUCCIN A LA PROGRAMACIN EN ENSAMBLADOR ..............................112
La magia del compilador ...........................................................................112
Estructura selectiva simple si ... entonces ... fin si....................................113
Los Saltos ...............................................................................................113
Estructura selectiva simple si ... entonces ... sino ... fin si........................114
Estructura repetitiva mientras ... hacer ... fin mientras ...........................115
Estructura repetitiva repetir ... hasta que ... .............................................116
Estructura repetitiva desde ... hasta ... hacer ... fin desde ........................116
Estructura selectiva mltiple segn ... hacer ... fin segn .........................118
Subprogramas ............................................................................................120
TEMA 7.............................................................................................................123
EL JUEGO DE INSTRUCCIONES ..........................................................................123
Clasificacin general de las instrucciones ................................................123
Instrucciones para la transferencia de datos...........................................123
Instrucciones aritmticas y lgicas ........................................................123
Instrucciones aritmticas....................................................................123
Instrucciones lgicas ..........................................................................123
Instrucciones de salto .............................................................................124
Instrucciones de llamada y retorno a subrutina......................................124
Instrucciones de control de interrupciones ............................................124
Instrucciones especiales .........................................................................124
El juego de instrucciones al completo .......................................................125
Instrucciones de transferencia de datos (12) ..........................................125
Instrucciones aritmticas (20) ................................................................125
Instrucciones lgicas (13) ......................................................................125
Instrucciones de transferencia de control (salto) (21)............................126
Instrucciones de manejo de cadenas (7).................................................126
Instrucciones de interrupcin (3) ...........................................................126
Instrucciones de control del procesador (12) .........................................127
TEMA 8.............................................................................................................129
DIRECCIONAMIENTO DE MEMORIA .................................................................129
Direccionamiento inmediato......................................................................130
Direccionamiento directo absoluto............................................................130
Direccionamiento directo relativo .............................................................131
Direccionamiento relativo al contador de programa PC........................132
Direccionamiento directo relativo a registro base .................................133
Direccionamiento directo relativo a registro ndice...............................134
Direccionamiento a pila.............................................................................136
Direccionamiento indirecto .......................................................................136
Indireccin de dos niveles......................................................................138
Direccionamiento inherente o implcito ....................................................138
Direccionamientos del IEEE 694...............................................................138
Problemas ..................................................................................................140
Buffer para el Puerto Serie.....................................................................140
Buffer circular para el Puerto Serie........................................................140
iv Arquitectura de Ordenadores I
ndice
Arquitectura de Ordenadores I v
ndice
vi Arquitectura de Ordenadores I
Tema 1
Con el paso de los aos, esta sencilla observacin ha dado pie a que las com-
putadoras se estructuren como una serie de abstracciones, donde cada una de stas se
apoya en la que est debajo de ella. De este modo es posible controlar la complejidad
y disear sistemas de cmputo de manera sistemtica y organizada. Llamamos a este
enfoque organizacin estructurada de computadoras. En la seccin que sigue des-
cribiremos el significado de este trmino.
Arquitectura de Ordenadores I 1
Tema 1
2 Arquitectura de Ordenadores I
Introduccin a los computadores
La invencin de una serie de lenguajes, cada uno ms cmodo que sus prede-
cesores, puede continuar indefinidamente hasta llegar a uno adecuado. Cada lenguaje
se basa en su predecesor, por lo que podemos pensar en una computadora que em-
plea esta tcnica como una serie de capas o niveles, uno encima del otro, como se
muestra en la Figura 1-1. El lenguaje o nivel ms bajo es el ms simple, y el lengua-
je o nivel ms alto es el ms sofisticado.
Existe una relacin importante entre un lenguaje y una mquina virtual. Cada
mquina tiene cierto lenguaje de mquina, que consiste en todas las instrucciones
que la mquina puede ejecutar. Efectivamente, una mquina define un lenguaje. De
igual modo, un lenguaje define una mquina, la mquina que puede ejecutar todos
los programas escritos en ese lenguaje. Desde luego, la mquina definida por un
lenguaje dado podra ser enormemente complicada y demasiado costosa para cons-
truirse directamente con circuitos electrnicos, pero eso no quiere decir que no
podamos imaginarla. Una mquina cuyo lenguaje de mquina es C++ o COBOL
sera en verdad compleja, pero con la tecnologa actual sera fcil construirla. No
obstante, hay razones de peso para no construir semejante computadora: no sera
econmica en comparacin con otras tcnicas.
Una computadora con n niveles puede verse como n mquinas virtuales dis-
tintas, cada una con diferente lenguaje de mquina. Usaremos los trminos "nivel" y
"mquina virtual" indistintamente. Los circuitos electrnicos slo pueden ejecutar
directamente programas escritos en el lenguaje L0 sin necesidad de traduccin ni
interpretacin. Los programas escritos en L1, L2, ..., Ln debern ser interpretados
por un intrprete que se ejecute en un nivel ms bajo, o traducirse a otro lenguaje
correspondiente a un nivel ms bajo.
Arquitectura de Ordenadores I 3
Tema 1
En general, a los programadores que usan una mquina de nivel n slo les in-
teresa el nivel ms alto, el que menos se parece al lenguaje de mquina que est hasta
abajo. En cambio, las personas interesadas en entender cmo funciona realmente una
computadora deben estudiarla en todos los niveles. Quienes se interesen en disear
nuevas computadoras o nuevos niveles (o sea, nuevas mquinas virtuales) tambin
debern familiarizarse con niveles distintos del ms alto. Los conceptos y tcnicas
para construir mquinas como una serie de niveles, y los detalles de los niveles
mismos, constituyen el tema principal de este libro.
4 Arquitectura de Ordenadores I
Introduccin a los computadores
Arquitectura de Ordenadores I 5
Tema 1
El siguiente nivel suele ser un nivel hbrido. Casi todas las instrucciones de su
lenguaje estn tambin en el nivel ISA. (No hay razn para que una instruccin que
aparece en un nivel no pueda estar presente tambin en otros niveles.) Adems, hay
un nuevo conjunto de instrucciones, una diferente organizacin de memoria, la capa-
cidad para ejecutar dos o ms programas al mismo tiempo, y varias caractersticas
ms. Entre los distintos diseos de nivel 3 hay ms variacin que entre los de los
niveles 1 2.
Existe una discontinuidad fundamental entre los niveles 3 y 4. Los tres nive-
les ms bajos no estn diseados para que sean usados por un programador ordinario.
Su propsito primordial es la ejecucin de los intrpretes y traductores que se necesi-
tan para apoyar a los niveles superiores. Estos intrpretes y traductores son escritos
por personas llamadas programadores de sistemas que se especializan en el diseo
e implementacin de mquinas virtuales nuevas. Los niveles 4 y superiores pertene-
cen a los programadores de aplicaciones que tienen un problema que resolver.
Otro cambio que ocurre en el nivel 4 tiene que ver con el mtodo de apoyo de
los niveles superiores. Los niveles 2 y 3 siempre se interpretan. Los niveles del 4 en
adelante por lo regular se traducen, aunque no siempre es as.
Una diferencia ms entre los niveles 1, 2 y 3, por un lado, y los niveles del 4
en adelante, por el otro, es la naturaleza del lenguaje empleado. Los lenguajes de
mquina de los niveles 1, 2 y 3 son numricos. Los programas escritos en ellos cons-
tan de largas series de nmeros, lo cual es magnfico para las mquinas pero malo
para las personas. A partir del nivel 4, los lenguajes contienen palabras y abreviatu-
ras que tienen un significado para las personas.
6 Arquitectura de Ordenadores I
Introduccin a los computadores
El nivel 5 por lo regular consta de lenguajes diseados para ser usados por
programadores de aplicaciones que quieren resolver problemas. Tales lenguajes
suelen llamarse lenguajes de alto nivel, y hay literalmente cientos de ellos. Entre
los ms conocidos estn BASIC, C, C++, Java, LISP y Prolog. Los programas escri-
tos en estos lenguajes generalmente se traducen a lenguajes de nivel 3 4 con
traductores llamados compiladores, aunque ocasionalmente se interpretan en vez de
traducirse. Los programas en Java, por ejemplo, a menudo se interpretan.
Existe una discontinuidad fundamental entre los niveles 3 y 4. Los tres nive-
les ms bajos no estn diseados para que sean usados por un programador ordinario.
Su propsito primordial es la ejecucin de los intrpretes y traductores que se necesi-
tan para apoyar a los niveles superiores. Estos intrpretes y traductores son escritos
por personas llamadas programadores de sistemas que se especializan en el diseo e
implementacin de mquinas virtuales nuevas. Los niveles 4 y superiores pertenecen
a los programadores de aplicaciones que tienen un problema que resolver.
Arquitectura de Ordenadores I 7
Tema 1
Otro cambio que ocurre en el nivel 4 tiene que ver con el mtodo de apoyo de
los niveles superiores. Los niveles 2 y 3 siempre se interpretan. Los niveles del 4 en
adelante por lo regular se traducen, aunque no siempre es as.
Una diferencia ms entre los niveles 1, 2 y 3, por un lado, y los niveles del 4
en adelante, por el otro, es la naturaleza del lenguaje empleado. Los lenguajes de
mquina de los niveles 1, 2 y 3 son numricos. Los programas escritos en ellos cons-
tan de largas series de nmeros, lo cual es magnfico para las mquinas pero malo
para las personas. A partir del nivel 4, los lenguajes contienen palabras y abreviatu-
ras que tienen un significado para las personas.
El nivel 5 por lo regular consta de lenguajes diseados para ser usados por
programadores de aplicaciones que quieren resolver problemas. Tales lenguajes
suelen llamarse lenguajes de alto nivel, y hay literalmente cientos de ellos. Entre los
ms conocidos estn BASIC, C, C++, Java, LISP y Prolog. Los programas escritos
en estos lenguajes generalmente se traducen a lenguajes de nivel 3 4 con traducto-
res llamados compiladores, aunque ocasionalmente se interpretan en vez de
traducirse. Los programas en Java, por ejemplo, a menudo se interpretan.
8 Arquitectura de Ordenadores I
Introduccin a los computadores
Arquitectura de Ordenadores I 9
Tema 2
Codificacin y Representacin de la
Informacin
La memoria es la parte de la computadora en la que se almacenan progra-
mas y datos. Algunos especialistas en ordenadores emplean el trmino almacn o
almacenamiento en lugar de memoria, aunque cada vez se extiende ms el uso de
almacenamiento para referirse a almacenamiento en disco. Sin una memoria en
la cual los procesadores puedan leer y escribir informacin, no existiran las com-
putadoras digitales de programa almacenado. Toda la informacin que queramos
almacenar en la memoria debe ser codificada o representada de tal manera que la
computadora la pueda entender.
Marcas numricas
Consiste en sustituir un objeto muy grande por otro que sea ms pequeo y mane-
jable que lo represente. Por ejemplo, algunos pastores de pocas antiguas
sustituan sus animales por piedras que guardaban en un zurrn. El zurrn era la
libreta de notas o memoria. Con este sencillo cdigo podan contar su ganado y
hacer operaciones sencillas con ellas.
Arquitectura de Ordenadores I 11
Tema 2
Numerales romanos
Suponen un tipo de agrupamiento complejo que permite contar hasta cifras muy
elevadas, pero adolece de no tener cero y tener una aritmtica muy complicada,
por no decir imposible.
NMEROS BINARIOS
La aritmtica que las computadoras usan difiere en ciertos aspectos de la aritmti-
ca que aplica la gente. La diferencia ms importante es que las computadoras
realizan operaciones con nmeros cuya precisin es finita y fija. Otra diferencia es
que casi todas las computadoras usan el sistema binario en lugar del decimal para
representar nmeros. Estos temas son materia del presente apndice.
Con las computadoras las cosas son muy distintas. En casi todas las com-
putadoras, la cantidad de memoria con que se cuenta para almacenar un nmero se
lija en el momento en que se disea la mquina. Con algo de esfuerzo, el progra-
mador puede representar nmeros dos, tres o incluso ms veces ms grandes que
esta cantidad fsica, pero hacerlo no altera la naturaleza de este problema. La
naturaleza finita de la computadora nos obliga a manejar slo nmeros que se
12 Arquitectura de Ordenadores I
Codificacin y Representacin de la Informacin
puedan representar con un nmero fijo de dgitos, tales nmeros se conocen como
nmeros de precisin finita.
como ejemplo:
600 + 600 = 1200 (demasiado grande)
003 - 005 = -2 (negativo)
050 * 050 = 2500 (demasiado grande)
007 / 002 = 3,5 (no es entero)
Las violaciones pueden dividirse en dos clases mutuamente exclusivas:
operaciones cuyo resultado es ms grande que el nmero ms grande del conjunto
(error de desbordamiento) o ms pequeo que el nmero ms pequeo del conjun-
to (error de subdesbordamiento), y operaciones cuyo resultado no es ni demasiado
grande ni demasiado pequeo; simplemente no es miembro del conjunto. De las
cuatro violaciones anteriores, las primeras tres son ejemplos del primer caso, y la
cuarta es un ejemplo del segundo.
Puesto que las computadoras tienen memorias finitas y por tanto forzosa-
mente realizan aritmtica con nmeros de precisin finita, los resultados de
ciertos clculos sern, desde el punto de vista de las matemticas clsicas, equivo-
cados. Un dispositivo de clculo que da una respuesta errnea aunque est
funcionando perfectamente podra parecer extrao a primera vista, pero el error es
una consecuencia lgica de su naturaleza finita. Algunas computadoras tienen
hardware especial que detecta errores de desbordamiento.
Arquitectura de Ordenadores I 13
Tema 2
a+(b-c)=(a+b)-c
a x (b - c) = a x b - a x c
A juzgar por estos ejemplos, podramos concluir que si bien las computa-
doras son dispositivos de propsito general, su naturaleza finita los hace poco
apropiados para la aritmtica. Claro que esta conclusin no es correcta, pero sirve
para ilustrar la importancia de entender cmo funcionan las computadoras y qu
limitaciones tienen.
Un nmero decimal ordinario como los que todos conocemos consiste en una
serie de dgitos decimales y, posiblemente, un punto decimal. La forma general y
su interpretacin usual se muestran en la Figura 2-1. Se tom la decisin de usar
10 como base para la exponenciacin porque estamos usando nmeros decimales,
es decir, base 10, porque aprendimos a contar con los dedos de las manos. Al
tratar con computadoras, a menudo es mejor utilizar bases distintas de 10. Las
bases ms importantes son 2, 8 y 16. Los sistemas de numeracin basados en estas
bases se llaman binario, octal y hexadecimal, respectivamente.
0123456789
pero se podran utilizar otros smbolos cualesquiera. Como ejemplo vamos a
definir un sistema de numeracin de 9 smbolos, los cuales son de forma correla-
tiva, los siguientes,
con estos smbolos se puede escribir cualquier nmero, por ejemplo el 1234d
sera:
14 Arquitectura de Ordenadores I
Codificacin y Representacin de la Informacin
En contraste, los nmeros binarios no usan estos diez dgitos; todos se re-
presentan exclusivamente con los dos dgitos binarios
01
01234567
0123456789ABCDEF
Arquitectura de Ordenadores I 15
Tema 2
16 Arquitectura de Ordenadores I
Codificacin y Representacin de la Informacin
Arquitectura de Ordenadores I 17
Tema 2
Se han usado cuatro sistemas distintos para representar nmeros negativos en las
computadoras digitales en un momento u otro de la historia. El primero se llama
magnitud con signo. En este sistema el bit de la extrema izquierda es el bit de
signo (0 es + y 1 es -) y los bits restantes contienen la magnitud absoluta del
nmero.
18 Arquitectura de Ordenadores I
Codificacin y Representacin de la Informacin
Figura 2-5 Conversin del nmero decimal 1492 a binario por divisin
sucesiva entre 2, comenzando desde arriba y trabajando hacia abajo. Por
ejemplo, 93 dividido entre 2 da un cociente de 46 y un resto de 1, que se
escribe en la lnea de abajo.
Arquitectura de Ordenadores I 19
Tema 2
Los sistemas tanto de magnitud con signo como de complemento a uno tie-
nen dos representaciones para el cero: un cero positivo y un cero negativo. Esta
situacin es indeseable. El sistema de complemento a dos no tiene este problema
porque el complemento a dos de ms cero tambin es ms cero. Sin embargo, este
sistema tiene una singularidad distinta. El patrn de bits que consiste en un 1
seguido solamente de ceros es su propio complemento. El resultado es que la
gama de nmeros positivos y negativos es asimtrica; hay un nmero negativo
que no tiene contraparte positiva.
-N -N
N N -N -N
mag. exceso en
decimal binario comp. a 1 comp. a 2
c/signo 128
1 00000001 10000001 11111110 11111111 01111111
2 00000010 10000010 11111101 11111110 01111110
3 00000011 10000011 11111100 11111101 01111101
4 00000100 10000100 11111011 11111100 01111100
5 00000101 10000101 11111010 11111011 01111011
6 00000110 10000110 11111001 11111010 01111010
7 00000111 10000111 11111000 11111001 01111001
8 00001000 10001000 11110111 11111000 01111000
9 00001001 10001001 11110110 11110111 01110111
10 00001010 10001010 11110101 11110110 01110110
20 00010100 10010100 11101011 11101100 01101100
30 00011110 10011110 11100001 11100010 01100010
40 00101000 10101000 11010111 11011000 01011000
20 Arquitectura de Ordenadores I
Codificacin y Representacin de la Informacin
-N -N
N N -N -N
mag. exceso en
decimal binario comp. a 1 comp. a 2
c/signo 128
50 00110010 10110010 11001101 11001110 01001110
60 00111100 10111100 11000011 11000100 01000100
70 01000110 11000110 10111001 10111010 00111010
80 01010000 11010000 10101111 10110000 00110000
90 01011010 11011010 10100101 10100110 00100110
100 01100100 11011010 10011011 10011100 00011100
127 01111111 11111111 10000000 10000001 00000001
128 No existe No existe No existe 10000000 00000000
Figura 2-7 Ejemplos de nmeros negativos en magnitud con signo,
complemento a 1, complemento a 2 y execso 128.
ARITMTICA BINARIA
Arquitectura de Ordenadores I 21
Tema 2
22 Arquitectura de Ordenadores I
Codificacin y Representacin de la Informacin
ltimo dgito octal). Despus puede reemplazar cada grupo de tres dgitos binarios
con el dgito octal correspondiente que aparece en la Figura 2-10.
Binario Octal
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
110101000012 = 011 010 100 0012 = 011 010 100 0012 =32418
Binario Hexadecimal
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
Arquitectura de Ordenadores I 23
Tema 2
Binario Hexadecimal
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F
Ejemplo 2-3
1BF16 = 1BFh
110101000012 = 11010100001b
17048 =1704o
Valores fraccionarios
Con los sistemas numricos posicionales tambin se pueden representar
valores fraccionarios. Los valores fraccionarios se expresan escribiendo dgitos a
la derecha de un punto decimal. El trmino punto decimal se emplea para repre-
sentar el smbolo de separacin de la parte fraccionaria en cualquier sistema
numrico, aunque est ms familiarizado con su uso en el sistema numrico deci-
mal. Los dgitos escritos despus del punto decimal representan potencias cada
vez ms pequeas de la raz, comenzando por 1. En otras palabras,
.d1d2d3...dn
Representa el valor
24 Arquitectura de Ordenadores I
Codificacin y Representacin de la Informacin
Bits
La unidad bsica de memoria es el dgito binario, llamado bit. Un bit pue-
de contener un 0 un 1; es la unidad ms simple. Esto es as debido a que la
tecnologa actual puede diferenciar fcilmente entre dos valores de tensin o
intensidad almacenados en una clula de memoria.
Arquitectura de Ordenadores I 25
Tema 2
usarse cuatro de esos dispositivos para almacenar nmeros binarios, pero slo
empleando 0 y 1. En tal caso, slo podran almacenar 16 combinaciones. Con
tales dispositivos, el sistema decimal obviamente es ms eficiente.
Direcciones de memoria
Ordenamiento de bytes
26 Arquitectura de Ordenadores I
Codificacin y Representacin de la Informacin
Es importante entender que tanto en los sistemas big endian como en los
little endian, un entero de 32 bits con el valor numrico de, digamos, 6, se repre-
senta con los bits 110 en los tres bits de la extrema derecha (de orden bajo) de una
palabra, con ceros en los 29 bits de la izquierda. En el esquema big endian, los
bits 110 estn en el byte 3 ( 7, u 11, etc.), mientras que en el esquema little en-
Arquitectura de Ordenadores I 27
Tema 2
Figura 2-14 (a) Memoria big endian. (b) Memoria little endian.
Una solucin obvia es hacer que el software invierta los bytes de una pala-
bra despus de efectuar el copiado. Esto conduce a la Figura 2-15(d) y hace que
los dos enteros queden bien pero convierte la cadena en " MUTIMS" "H". Esta
inversin de la cadena ocurre porque al leerla, la computadora primero lee el byte
0 (un espacio), luego el byte 1 (M), etctera.
28 Arquitectura de Ordenadores I
Codificacin y Representacin de la Informacin
Figura 2-15 (a) Registro de personal en una mquina big endian. (b) El
mismo registro en una mquina little endian. (c) Resultado de transferir el
registro de una big endian a una little endian. (d) Resultado de
intercambiar los bytes de (c).
En el caso de una palabra de memoria de m bits, estn permitidos los 2'" pa-
trones de bits, pero a causa de la forma en que se calculan los bits de verificacin,
slo 2' de las 2" palabras de cdigo son vlidas. Si al leer la memoria se obtiene una
palabra de cdigo no vlida, la computadora sabr que ocurri un error de memo-
Arquitectura de Ordenadores I 29
Tema 2
Este cdigo tiene una distancia de 5, lo que implica que puede corregir
errores dobles. Si llega la palabra de cdigo 0000000111, el receptor sabe que la
palabra original tiene que haber sido 0000011111 (si no hubo ms de dos errores).
Por otra parte, si un triple error convierte 0000000000 en 0000000111, el error no
podr corregirse.
Imagine que quiere disear un cdigo con m bits de datos y r bits de veri-
ficacin que permita corregir todos los errores de un solo bit. Cada una de las 2m
palabras de memoria vlidas tiene n palabras de cdigo no vlidas a una distancia
de 1. stas se forman invirtiendo por turno cada uno de los n bits de la palabra de
cdigo de n bits que se forma a partir de la palabra de memoria vlida. As, cada
una de las 2m palabras de memoria vlidas requiere n + 1 patrones de bits dedica-
dos a ella (para los n posibles errores y el patrn correcto). Puesto que el nmero
total de patrones de bits es 2n, necesitaremos que (n + 1)2m <= 2n. Si usamos
n = m + r, este requisito se convierte en (m + r + 1) <= 2r. Dado m, esto fija un
lmite inferior para el nmero de bits de verificacin que se requieren para corre-
30 Arquitectura de Ordenadores I
Codificacin y Representacin de la Informacin
Ahora aadimos un bit de paridad a cada una de las tres regiones vacas a
modo de producir una paridad par, como se ilustra en la Figura 2-17(b). Por
definicin, la suma de los bits de cada uno de los tres crculos, A, B y C, es ahora
un nmero par. En el crculo A tenemos los cuatro nmeros 0, 0, 1 y 1, que suman
2, un nmero par. En el crculo B, los nmeros son 1, 1, 0 y 0, que tambin suman
2, un nmero par. Por ltimo, en el crculo C tenemos la misma situacin. En este
ejemplo da la casualidad que todos los crculos son iguales, pero en otros ejem-
plos podra haber tambin sumas de 0 y 4. Esta figura corresponde a una palabra
de cdigo con 4 bits de datos y 3 bits de paridad.
Arquitectura de Ordenadores I 31
Tema 2
Bit 1 verifica los bits 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21.
Bit 2 verifica los bits 2, 3, 6, 7, 10, 11, 14, 15, 18, 19.
Bit 4 verifica los bits 4, 5, 6, 7, 12, 13, 14, 15, 20, 21.
Bit 8 verifica los bits 8, 9, 10, 11, 12, 13, 14, 15.
Bit 16 verifica los bits 16, 17, 18, 19, 20, 21.
Figura 2-17 (a) Codificacin de 1000. (b) Adicin de paridad par. (c) Error
en AC.
En general, el bit b es verificado por los bits b1, b2, ..., bn. tales que
b1 + b2+ ... + bn = b. Por ejemplo, el bit 5 es verificado por los bits 1 y 4 porque
1 + 4 = 5. El bit 6 es verificado por los bits 2 y 4 porque 2 + 4 = 6, etctera.
32 Arquitectura de Ordenadores I
Codificacin y Representacin de la Informacin
ambas listas, o sea 5, 7, 13, 15 0 21. Sin embargo, el bit 2 es correcto, lo que elimi-
na al 7 y al 15. As mismo, el bit 8 es correcto, lo que elimina al 13. Por ltimo, el
bit 16 es correcto, lo que elimina al 21. El nico bit que queda es el 5, que es el
que tuvo el error. Puesto que se ley como 1, debera ser 0. Es as como se corri-
gen los errores.
Arquitectura de Ordenadores I 33
Tema 2
34 Arquitectura de Ordenadores I
Tema 3
Arquitectura de Ordenadores I 35
Tema 3
REPRESENTACIN DE ENTEROS
En el sistema de numeracin binaria (vase el tema 2), cualquier nmero puede
representarse con slo dgitos 1 y 0, el signo menos, y el punto (o coma). Por
ejemplo:
1101.01012 = 11.312510
36 Arquitectura de Ordenadores I
Aritmtica del Procesador
+ 18 = 00010010
-18 = 10010010 (signo-magnitud)
El caso general puede expresarse como sigue:
El nmero cero se identifica como positivo y tiene por tanto un bit de sig-
no 0 y una magnitud de todo ceros. Podemos ver que el rango de los enteros
positivos que pueden representarse es desde 0 (todos los bits de magnitud son 0)
1
La representacin en complemento a la base de esta seccin se basa en una aproximacin sugerida por G. Dattatreya de la
Universidad de Texas (ver [DATT931)
Arquitectura de Ordenadores I 37
Tema 3
hasta 2n-1 (todos los bits de magnitud a 1). Cualquier nmero mayor requerira
ms bits.
Ahora, para un nmero negativo A, el bit de signo, an-1 es 1. Los n-1 bits
restantes pueden tomar cualquiera de las 2n combinaciones. Por tanto, el rango de
los enteros negativos que pueden representarse es desde 1 hasta 2n-1. Resulta
que una asignacin conveniente de valores es hacer que los bits an-1an-2...a1a0 sean
iguales al nmero positivo 2n-1 + A, segn se obtiene con:
as pues
(3-1)
38 Arquitectura de Ordenadores I
Aritmtica del Procesador
-128 64 32 16 8 4 2 1
-128 64 32 16 8 4 2 1
1 0 0 0 0 0 1 1
-128 +2 +1 =125
-128 64 32 16 8 4 2 1
1 0 0 0 1 0 0 0
-128 +8 =120
Arquitectura de Ordenadores I 39
Tema 3
40 Arquitectura de Ordenadores I
Aritmtica del Procesador
Negacin
En la representacin signo-magnitud, la regla para obtener el opuesto de un entero
es sencilla: invertir el bit de signo. En la notacin complemento a dos, la negacin
de un entero puede realizarse siguiendo las siguientes reglas:
1. Obtener el complemento booleano de cada bit del entero (incluyendo el
bit de signo).
2. Tratando el resultado como un entero binario sin signo, sumarle 1.
Por ejemplo:
Arquitectura de Ordenadores I 41
Tema 3
42 Arquitectura de Ordenadores I
Aritmtica del Procesador
En cualquier suma, el resultado puede que sea mayor que el permitido por
la longitud de palabra que est utilizando. Esta condicin se denomina desborda-
miento ("overflow").
Arquitectura de Ordenadores I 43
Tema 3
REGLA DE DESBORDAMIENTO:
44 Arquitectura de Ordenadores I
Aritmtica del Procesador
Multiplicacin
Comparada con la suma y la resta, la multiplicacin es una operacin compleja,
ya se realice en hardware o en software. En distintos computadores se han utiliza-
do diversos algoritmos.
Arquitectura de Ordenadores I 45
Tema 3
La Figura 3-8a muestra una posible implementacin que hace uso de las
ideas anteriores. El multiplicador y el multiplicando estn ubicados en dos regis-
tros (Q y M). Un tercer registro, el registro A, es tambin necesario y es
inicialmente puesto a 0. Hay tambin un registro C de un bit, inicializado a 0, que
retiene los posibles bits de acarreo resultantes de las sumas.
46 Arquitectura de Ordenadores I
Aritmtica del Procesador
Hemos visto que la suma y la resta pueden realizarse con nmeros en notacin de
complemento a dos tratndolos como enteros sin signo. Consideremos:
1001
+0011
1100
Arquitectura de Ordenadores I 47
Tema 3
48 Arquitectura de Ordenadores I
Aritmtica del Procesador
Figura 3-10 Multiplicacin de dos enteros sin signo de 4 bits para producir
un resultado de 8 bits
Arquitectura de Ordenadores I 49
Tema 3
Hay varias maneras de salir de este dilema. Una sera convertir tanto el
multiplicando como el multiplicador en nmeros positivos, realizar el producto, y
obtener despus el complemento a dos del resultado si y slo si el signo de los dos
nmeros iniciales difiere. Los diseadores han preferido utilizar tcnicas que no
requieren esta etapa de transformacin final. Una de las tcnicas ms comunes es
el algoritmo de Booth [BOOT51]. Este algoritmo tiene la ventaja adicional de
acelerar el proceso de multiplicacin respecto de una aproximacin ms directa.
50 Arquitectura de Ordenadores I
Aritmtica del Procesador
pacta en la Figura 3-14a. El resto de la Figura 3-14 da otros ejemplos del algorit-
mo. Como puede verse acta correctamente con una combinacin de nmeros
positivo y negativo. Obsrvese tambin la eficiencia del algoritmo. Los bloques
de unos y ceros se saltan, resultando en promedio una suma o una resta por blo-
que.
Arquitectura de Ordenadores I 51
Tema 3
Por tanto,
As pues, este producto puede generarse mediante una suma y una resta del
multiplicando. Este esquema se extiende a cualquier nmero de bloques de unos
del multiplicador, incluyendo el caso en que un solo 1 es tratado como bloque.
As,
52 Arquitectura de Ordenadores I
Aritmtica del Procesador
Representacin de
Representacin de
Reagrupando se tiene:
Arquitectura de Ordenadores I 53
Tema 3
Pero ahora podemos ver que el algoritmo de Booth se ajusta a este esque-
ma. Realiza una resta cuando se encuentra el primer 1, (10), y suma cuando se
encuentra (0-1), y finalmente resta otra vez cuando encuentra el primer 1 del
siguiente bloque de unos. Por consiguiente, el algoritmo de Booth realiza menos
sumas y restas que un algoritmo directo.
Divisin
54 Arquitectura de Ordenadores I
Aritmtica del Procesador
Este proceso puede, con cierta dificultad, aplicarse tambin a nmeros ne-
gativos. Aqu damos una posible aproximacin para nmeros en complemento a
dos. En la Figura 3-17 se muestran varios ejemplos de esta aproximacin. El
algoritmo puede resumirse como sigue:
1. Cargar el divisor en el registro M y el dividendo en los registros A y Q. El
dividendo debe estar expresado como nmero en complemento a dos de 2n
bits. Por ejemplo, el nmero de 4 bits 0111 pasa a ser 00000111, y el 1001
pasa a 11111001.
2. Desplazar A y Q una posicin de bit a la izquierda.
3. Si M y A tienen el mismo signo, ejecutar A A - M; si no, A A + M.
4. La operacin anterior tiene xito si el signo de A es el mismo, antes y des-
pus de la operacin.
a. Si la operacin tiene xito o (A=0 AND Q=0), entonces hacer
Q0 1.
b. Si la operacin no tiene xito y (A0 OR Q0), entonces Q0 0, y
restablecer el valor anterior de A.
5. Repetir los pasos 2 a 4 tantas veces como nmero de bits tenga Q.
6. El resto est en A. Si los signos del divisor y el dividendo fueran iguales,
el cociente est en Q; si no, el cociente correcto es el complemento a dos
de Q.
El alumno notar en la Figura 3-17 que (-7)(3) y (7)(3) producen restos
diferentes. Esto es debido a que el resto se define como:
D=Q*V+R
dnde
D = dividendo
Q = cociente
V = divisor
R = resto
Arquitectura de Ordenadores I 55
Tema 3
A Q M = 0011 A Q M = 1101
0000 0111 Valor Inicial 0000 0111 Valor Inicial
0000 1110 Desplazamiento 0000 1110 Desplazamiento
1101 Restar 1101 Sumar
0000 1110 Restablecer 0000 1110 Restablecer
0001 1100 Desplazamiento 0001 1100 Desplazamiento
1110 Restar 1110 Sumar
0001 1100 Restablecer 0001 1100 Restablecer
0011 1000 Desplazamiento 0011 1000 Desplazamiento
0000 Restar 0000 Sumar
0000 1001 Poner Qo=1 0000 1001 Poner Qo=1
0001 0010 Desplazamiento 0001 0010 Desplazamiento
1110 Restar 1110 Sumar
0001 0010 Restablecer 0001 0010 Restablecer
56 Arquitectura de Ordenadores I
Aritmtica del Procesador
A Q M = 0011 A Q M = 1101
(a) (7) (3) (b) (7) (-3)
A Q M=0011 A Q M=1101
1111 1001 Valor Inicial 1111 1001 Valor Inicial
1111 0010 Desplazamiento 1111 0010 Desplazamiento
0010 Sumar 0010 Restar
1111 0010 Restablecer 1111 0010 Restablecer
1110 0100 Desplazamiento 1110 0100 Desplazamiento
0001 Sumar 0001 Restar
1110 0100 Restablecer 1110 0100 Restablecer
1100 1000 Desplazamiento 1100 1000 Desplazamiento
1111 Sumar 1111 Restar
1111 1001 Poner Q0 = 1 1111 1001 Poner Q0 = 1
1111 0010 Desplazamiento 1111 0010 Desplazamiento
0010 Sumar 0010 Restar
1111 0010 Restablecer 1111 0010 Restablecer
(c) (7) (3) (d) (-7) (-3)
Figura 3-17 Ejemplos de divisin en complemento a dos
.
Arquitectura de Ordenadores I 57
Tema 4
Introduccin
Virtualmente todos los computadores actuales se han diseado basndose en los
conceptos desarrollados por John Von Neumann en el Instituto de Estudios Avan-
zados (Institute for Adyances Studies) de Princeton. Tal diseo se conoce con el
nombre de Arquitectura de von Neumann y se basa en tres conceptos clave:
Los datos y las instrucciones se almacenan en una sola memoria de lectu-
ra-escritura.
Los contenidos de esta memoria se direccionan indicando su posicin,
sin considerar el tipo de dato contenido en la misma.
La ejecucin se produce siguiendo una secuencia de instruccin tras ins-
truccin (a no ser que dicha secuencia se modifique explcitamente).
Hay un conjunto pequeo de componentes lgicos bsicos que pueden
combinarse de formas diferentes para almacenar datos binarios y realizar las
operaciones aritmticas y lgicas con esos datos. Si se desea realizar un clculo
concreto, es posible construir una configuracin de componentes lgicos diseada
especficamente para dicho clculo. Es posible pensar en el proceso de conexin
de los diversos componentes para obtener la configuracin deseada como si se
tratase de una forma de programacin. El programa resultante es un circuito
electrnico y se denomina programa cableado (hardwired program).
58Arquitectura de Ordenadores I
ALU, UC y Memoria Principal
realiza una operacin aritmtica o lgica con ciertos datos. Para cada paso, se
necesita un nuevo conjunto de seales de control. La solucin consiste en asociar
un cdigo especfico a cada posible conjunto de seales de control, y aadir al
hardware de uso general una parte encargada de generar las seales de control a
partir del cdigo (figura 1b).
secuencia de cdigos. Cada cdigo es, de hecho, una instruccin, y una parte del
hardware interpreta cada instruccin y genera las seales de control. Para distin-
guir este nuevo mtodo de programacin, una secuencia de cdigos o
instrucciones se denomina software.
Arquitectura de Ordenadores I 59
Tema 4
60 Arquitectura de Ordenadores I
ALU, UC y Memoria Principal
una secuencia determinada. Por ello, debe existir un sitio para almacenar tempo-
ralmente tanto las instrucciones como los datos. Ese mdulo se llama memoria, o
memoria principal para distinguirlo de los perifricos y la memoria externa. Von
Neumann indic que la misma memoria podra ser usada tanto para las instruccio-
nes como para los datos. Los datos son los contenidos con los que se realizan los
clculos. Las instrucciones son aquellos contenidos que se interpretan como cdi-
gos para generar las seales de control.
Arquitectura de Ordenadores I 61
Tema 4
62 Arquitectura de Ordenadores I
ALU, UC y Memoria Principal
Arquitectura de Ordenadores I 63
Tema 4
2
En notacin hexadecimal, cada dgito representa cuatro bits. Esta es la notacin ms conveniente para representar los
contenidos de la memoria y los registros cuando la longitud de palabra es mltiplo de 4 (por ejemplo, 8, 16 32). Para los
lectores no familiarizados con esta notacin, se resume en el apndice del captulo S.
64 Arquitectura de Ordenadores I
ALU, UC y Memoria Principal
Operacin con los datos (do, de data operation). Realiza la operacin in-
dicada en la instruccin.
Arquitectura de Ordenadores I 65
Tema 4
Por ltimo, en algunas mquinas, con una nica instruccin se puede espe-
cificar una operacin a realizar con un vector (matriz unidimensional) de nmeros
o con una cadena (matriz unidimensional) de caracteres. Como indica la figura 6,
esto implicara una repeticin de estados de captacin y/o almacenamiento de
operando.
66 Arquitectura de Ordenadores I
ALU, UC y Memoria Principal
unidad aritmtico lgica (arithmetic and logic unit, ALU) y una unidad de
control (control unit, CU). La ALU lleva a cabo la verdadera computacin o
procesamiento de datos. La unidad de control controla las transferencias de datos
hacia dentro y hacia fuera de la CPU y el funcionamiento de la ALU. Adems, la
figura muestra una memoria interna mnima, que consta de un conjunto de lugares
de almacenamiento, llamados registros.
transferir datos entre los diversos registros y la ALU, ya que sta en realidad slo
opera con los datos de la memoria interna de la CPU. La figura muestra tambin
los elementos bsicos tpicos de la ALU. Observe la similitud entre la estructura
interna del computador en su totalidad y la estructura interna de la CPU. En am-
bos casos hay una pequea coleccin de elementos principales (computador:
CPU, E/S, memoria; CPU: unidad de control, ALU, registros) conectados por
caminos de datos.
Arquitectura de Ordenadores I 67
Tema 4
No hay una separacin bien definida de registros dentro de estas dos cate-
goras. Por ejemplo, en algunas mquinas el contador de programa es visible al
usuario (por ej., en el VAX), pero en muchas no lo es. Para el objetivo de la si-
guiente discusin, no obstante, usaremos estas categoras.
Un registro visible al usuario es aqul que puede ser referenciado por me-
dio del lenguaje mquina que ejecuta la CPU. Prcticamente todos los diseos
contemporneos de CPUs estn provistos de varios registros visibles al usuario,
en oposicin a disponer de un nico acumulador. Podemos clasificarlos en las
siguientes categoras: Uso general Datos
Direcciones
Cdigos de condicin
En algunos casos los registros de uso general pueden ser utilizados para
funciones de direccionamiento (por ej., indirecto por medio de registro, desplaza-
miento). En otros casos hay una separacin clara o parcial entre registros de datos
y registros de direcciones. Los registros de datos pueden ser usados nicamente
para contener datos y no se pueden emplear en el clculo de una direccin de
operando. Los registros de direccin pueden ser en s registros de uso ms o
menos general, o pueden estar dedicados a un modo de direccionamiento particu-
lar. Los ejemplos incluyen:
68 Arquitectura de Ordenadores I
ALU, UC y Memoria Principal
Arquitectura de Ordenadores I 69
Tema 4
70 Arquitectura de Ordenadores I
ALU, UC y Memoria Principal
Arquitectura de Ordenadores I 71
Tema 4
entre registros y memoria. Es comn dedicar los primeros (ms bajos) pocos
cientos o miles de palabras de memoria para fines de control. El diseador debe
decidir cunta informacin de control debiera estar en registros y cunta en me-
moria. Surge el habitual compromiso entre coste y velocidad.
72 Arquitectura de Ordenadores I
ALU, UC y Memoria Principal
Arquitectura de Ordenadores I 73
Tema 4
sistema operativo, dependiendo del modo de ejecucin en curso. Los dos registros
se referencian como 7, dado que slo uno de ellos se puede usar en un instante
dado. El MC68000 tambin incluye un contador de programa de 32 bits y un
registro de estado de 16 bits.
EL CICLO DE INSTRUCCION
En la seccin 4.2, describimos el ciclo de instruccin de la CPU. La figura
11 repite una de las figuras usadas en esa descripcin (figura 9). Recordamos que
un cielo de instruccin incluye los siguientes subciclos:
3
Dado que el MC68000 ya usaba registros de 32 bits, el MC68020 [MACG841, que es una ampliacin completa a 32 bits,
usa la misma organizacin de registros.
74 Arquitectura de Ordenadores I
ALU, UC y Memoria Principal
El ciclo indirecto
En la figura 13, que es una versin revisada de la figura 12, se muestra otra
forma de ver este proceso que ilustra ms correctamente la naturaleza del ciclo de
instruccin. Una vez que una instruccin es captada, deben identificarse sus cam-
pos, de operando. Se capta entonces de la memoria cada operando de entrada,
pudiendo requerir este proceso direccionamiento indirecto. Los operandos ubica-
dos en registros no necesitan ser captados. Una vez que se ejecuta la operacin,
puede ser necesario un proceso similar para almacenar el resultado en la memoria
principal.
Arquitectura de Ordenadores I 75
Tema 4
Flujo de datos
La secuencia exacta de eventos que tienen lugar durante un cielo de ins-
76 Arquitectura de Ordenadores I
ALU, UC y Memoria Principal
Del mismo modo que los ciclos de captacin e indirecto, el ciclo de inte-
rrupcin es simple y predecible (figura 16). El contenido actual del PC tiene que
ser salvado de manera que la CPU pueda reanudar su actividad normal tras ser
Arquitectura de Ordenadores I 77
Tema 5
La Ruta de Datos
Introduccin
El Camino de Datos, tambin llamado Unidad de Proceso, es la seccin
del computador encargada de efectuar las operaciones lgicas y aritmticas que
implican las instrucciones que se efectan. Su misin es la de manipular y trans-
formar los datos procedentes de la Memoria o de los registros internos, para
obtener los resultados.
MEMORIA PROCESADOR
INSTRUCCIONES UNIDAD
INSTRUCCIONES DE CON-
TROL
OPERANDOS
RUTA
DATOS RESULTADOS DE
DATOS
Arquitectura de Ordenadores I 78
El juego de instrucciones
1 Esquemas de clculo
Utilizan los recursos disponibles en Electrnica Digital para disear un cir-
cuito capaz de desarrollar algoritmos para la manipulacin de datos, que no tienen
bifurcaciones.
EJEMPLO
Dados los bits a y b, deducir el algoritmo para obtener el bit c, resta de
ambos.
SOLUCIN
c=a+b
2 Mquina algortmica
En esta tcnica se contempla la posibilidad de realizar bifurcaciones en
funcin de una condicin.
EJEMPLO
Obtener el algoritmo que responda a la funcin "escaln" la figura 2.
Y
X
0
0 2
Figura 2. Funcin escaln. .
79 Arquitectura de Ordenadores I
Tema 7
SOLUCION
Si x <= 2, entonces y = 0
Si x > 2, entonces y =1
3 Algoritmo interpretacin
Permite desarrollar sistemas ms complejos que los anteriores, soportando
bifurcaciones.
EJEMPLO
Calcular el algoritmo que permite la obtencin de las races de un polino-
mio de segundo grado.
y = ax2+ bx + c
SOLUCIN
1 Unidad Aritmtico-Lgica.
2 Registros.
Arquitectura de Ordenadores I 80
El juego de instrucciones
OPERANDO A OPERANDO B
SELECCIN
ALU OPERACIN
RESULTADO
Figura 3. Segn la operacin seleccionada, los operandos
son procesados por la ALU para obtener el resultado.
Los registros
Un registro es un dispositivo digital formado por varias bsculas biestables, cada
una de las cuales tiene la capacidad de guardar, todo el tiempo que se desee, la
unidad mnima de informacin, que es un bit 1 0. En consecuencia, un registro
es un elemento digital que almacena temporalmente informacin binaria.
Para cargar informacin sobre los biestables del registro se dispone de una
seal comn para todos (CARGA). Para leer la informacin contenida en los
biestables de un registro, existe otra seal de control (LECTURA), que saca del
estado flotante que impide la salida del estado lgico almacenado. Figura 4.
81 Arquitectura de Ordenadores I
Tema 7
Registros de la ALU
LECTURA
(TRIESTADO)
Q Q Q Q Q Q Q Q
CARGA D D D D D D D D REGISTRO
INFORMACIN DE ENTRADA
Figura 4. El registro de 8 bits pasa a contener la informacin de entrada al
activar la seal CARGA. El valor contenido en los biestables pasa a las l-
neas de informacin de salida al activar la seal LECTURA.
OPERANDO
ACC OPERANDO
SELECCIN
ALU OPERA-
RESULTA-
Figura 5. El Acumulador introduce el operando A en la
ALU.
Arquitectura de Ordenadores I 82
El juego de instrucciones
IGER T
S O
R DE T
SE ADO
Z P C
CEO
R ACARO
ER
PARIDAD
EJEMPLO
Indicar el valor de los sealizadores C, Z y P, si la ALU de la figura 8 rea-
liza una operacin de suma sobre los operandos de entrada. El procesador trabaja
con paridad par, que es la que detecta P.
83 Arquitectura de Ordenadores I
Tema 7
SOLUCIN
Z=0
C=1
P =0
Arquitectura de Ordenadores I 84
El juego de instrucciones
Registros especiales
85 Arquitectura de Ordenadores I
Tema 7
Arquitectura de Ordenadores I 86
El juego de instrucciones
Bus de direcciones
Est formado por las lneas que soportan la direccin binaria de la Memo-
ria. El nmero de lneas de este bus es un parmetro muy importante porque
determina la cantidad de posiciones que puede alcanzar la Memoria. As, si el
nmero de lneas del bus de direcciones es n, la Memoria puede alcanzar un mxi-
mo de 2n posiciones.
Bus de datos
Consta de las lneas que transportan la informacin que se lee o escribe y
que puede consistir en datos o instrucciones. Tambin el nmero de lneas de este
bus es muy importante porque determina la cantidad de bits que pueden transferir-
se en cada operacin de lectura o escritura.
Bus de control
Lo componen las lneas auxiliares que indican el tipo de operacin (lectura
/ escritura), la sincronizacin (seal de reloj), la zona a acceder (Memoria o E/S),
etc.. Los valores que toman las lneas de este bus se obtienen en la Unidad de
Control de la interpretacin del cdigo OP de la instruccin en curso.
EJEMPLO
Si un procesador dispone de una Memoria con 512 posiciones de 32 bits
cada una, deducir el tamao del bus de direcciones y del bus de datos.
SOLUCIN
Bus de datos: 32 lneas para soportar los 32 bits de cada posicin de Me-
moria.
Anlisis de Arquitecturas
El Camino de Datos, como los dems componentes del computador, exige
un tratamiento especial para conseguir un diseo eficaz. En el caso frecuente de
utilizar un solo Recurso de Clculo programable para soportar la ALU, recibe el
nombre de Camino de Datos Secuencializado indicando la necesidad de realizar
algunas operaciones en serie a base de empalmar varias sencillas para desarrollar
un algoritmo complejo.
Dependiendo del nmero de buses de datos que se utilicen, existen tres ar-
quitecturas de Caminos de Datos Secuencializados.
87 Arquitectura de Ordenadores I
Tema 7
Como el bus queda compartido por los registros y por la ALU, hay que uti-
lizar adecuadamente las seales de control (Z) para determinar claramente el
camino de informacin. Debe haber un transmisor cuyo contenido se lee y se
deposita en el bus de datos, y un receptor que se carga con esa informacin. Las
seales de control que gobiernan las transferencias son generadas por la Unidad
de Control al interpretar cada fase de la instruccin en fase de ejecucin (en cur-
so).
Las seales que permiten la lectura del contenido de los registros actan
sobre buffers aritmticos triestado, los cuales dejan pasar la informacin desde el
registro al bus de datos. Si se activasen al mismo tiempo varias seales de lectura
y se desbloqueasen varios buffers, se recibiran diferentes niveles lgicos en las
lneas del bus de datos, dando lugar a "conflictos" que daaran al equipo fsico.
Arquitectura de Ordenadores I 88
El juego de instrucciones
Z SALIDA
0 ALTA IMPEDANCIA
1 ENTRADA
Si Z = 0, por la salida del buffer no sale nada, es decir, no hay nivel lgico
alto ni tampoco bajo. No hay nada; es como si se tratase de una lnea al aire.
Salida en alta impedancia.
En la figura 12 se muestra una lnea del bus de datos que soporta dos l-
neas por las que puede recibir un bit de informacin si se libera el estado triestado
de los buffer controladores. Si ZI = 1 y Z2 = 0, la lnea del bus de datos se carga
con el nivel A. Si Z1 = 0 y Z2 = 1, la lnea del bus se carga con el valor de B. Si
ZI = Z2 = 0, la lnea queda desconectada de A y B. Pero si Z1 = Z2 = 1, se produ-
ce un conflicto porque a la lnea del bus se recibe, simultneamente, el nivel de A
y el de B. Si son opuestos, se producir un cortocircuito y, adems de quedar
indeterminado el nivel en la lnea del bus, se ocasionarn daos a los circuitos
integrados.
Figura 12. Los dos buffer triestado controlan el acceso a la lnea del bus de
datos de las seales digitales A y B. Slo puede activarse en cada momento una
seal Z, para evitar conflictos.
EJEMPLO
SOLUCIN,
EJEMPLO
SOLUCIN
Z3=1 y Z6=1
89 Arquitectura de Ordenadores I
Tema 7
Z1 =Z2=Z4=Z5=0
EJEMPLO
SOLUCIN
Un total de 512 lneas de control, 256 para la lectura y otras tantas para la
escritura.
EJEMPLO
Arquitectura de Ordenadores I 90
El juego de instrucciones
SOLUCIN
EJEMPLO
SOLUCIN
91 Arquitectura de Ordenadores I
Tema 7
EJEMPLO
SOLUCIN
El Bus de Datos 1, figura 16, se encarga de llevar los datos desde los regis-
tros o la Memoria hasta la ALU. El Bus de Datos 2 realiza la funcin inversa, es
decir, lleva el resultado de la ALU al Banco o a la Memoria.
Arquitectura de Ordenadores I 92
El juego de instrucciones
EJEMPLO
En el esquema de la arquitectura de la figura 16, indicar los valores que
deben tomar las seales de control para cargar el Acumulador con el contenido del
registro R1.
SOLUCIN
SOLUCION
93 Arquitectura de Ordenadores I
Tema 7
Sobre el esquema de la figura 18 indicar los valores que deben tomar las
seales de control para realizar la operacin
Una variante de la arquitectura de tres buses es la que agrupa todos los re-
gistros en un Banco, como se muestra en la figura 19.
Arquitectura de Ordenadores I 94
El juego de instrucciones
Unidad Aritmtico-Lgica de la MS
Para soportar las cuatro instrucciones del repertorio, la MS debe disponer de una
ALU que sea capaz de sumar aritmticamente (ADD), realizar la operacin lgica de compa-
racin (CMP), y dejar pasar de forma transparente a uno de sus operandos (MOV).
Para realizar la suma dispone de un sumador binario paralelo de 16 bits, con despla-
zamiento de acarreo en serie. Lamentablemente carece de sealizador de acarreo final.
Finalmente, existe una posibilidad de dejar pasar, sin modificar, el operando introdu-
cido por su entrada B.
95 Arquitectura de Ordenadores I
Tema 7
Indicar, paso a paso, las acciones que se deben ejecutar en la MS para rea-
lizar la suma de dos datos A y B procedentes de la memoria, si A =
0001011010001110 y B = 1000011100100110. Calcular el resultado de la opera-
cin.
SOLUCIN
Arquitectura de Ordenadores I 96
El juego de instrucciones
Figura 23. Las lneas de seleccin ALU1-ALU0 determinan que sea el va-
lor de la suma A + B el que salga por el multiplexor. El sealizador CERO
se cargar con un 0, porque el resultado ha sido distinto de 0.
97 Arquitectura de Ordenadores I
Tema 7
Los registros de la MS
La MS carece de Banco de Registros y de registros independientes. Los
dos registros internos que guardan los operandos de la ALU, A y B, se cargan
automticamente y no son accesibles al programador, es decir, no puede leer ni
escribir su contenido. Su cometido es mantener estables los valores de los operan-
dos durante el transcurso de la operacin.
El Registro de Estado slo dispone de un sealizador, el CERO (Z), que se pone a 1 cuando el
resultado de una operacin de la ALU ha sido 0. Figura 24.
Arquitectura de Ordenadores I 98
El juego de instrucciones
Figura 27. El bus de direcciones de la Memoria se puede cargar, a travs del control del multiplexor,
desde tres sitios: PC, D y F.
Los buses de la MS
La MS dispone de los tres buses tpicos de cualquier computador: Bus de
Direcciones, Bus de Datos y Bus de Control.
99 Arquitectura de Ordenadores I
Tema 7
EJEMPLO
SOLUCIN
Figura 33. Suma de los operandos contenidos en A y B 'N, almacenamiento del resultado en la di-
reccin del operando destino.
EL CAMINO DE DATOS DE LA M+
La Unidad Aritmtico-Lgica
Las tres lneas de control del MPX que determinan la salida de la ALU
(ALU0, ALU1 y ALU2) toman los valores que se indican en la tabla 1 para cada
una de las posibles operaciones.
ALU2 ALU1 ALU0 OPERACIN
0 0 0 SUMA
0 0 1 RESTA
0 1 0 AND
0 1 1 OR
1 0 0 XOR
1 0 1 NOT
1 1 0 PASO TRASPARENTE
1 1 1 INCREMENTO
Tabla 1. Seleccin de la operacin que proporciona la ALU, mediante las tres seales que contro-
lan el multiplexor.
EJEMPLO
SOLUCIN
Finalmente, habr que indicar a los flip-flop que implementan los seali-
zadores de acarreo (FC) y de cero (FZ) que se carguen. El FC se carga con el
acarreo de salida del sumador-restador (Cout) y FZ de la salida de un comparador
de los 8 bits, formado por puertas XOR. Figura 36.
Los registros
La M+ dispone de S registros de 8 bits. Figura 37
Para seleccionar uno de los cuatro registros del Banco formado por B, C,
D y E, existen las seales de control SELregO y SELregl. La carga del registro
seleccionado con el contenido del bus de datos se consigue activando la seal
REGcar, y la apertura de la salida del registro seleccionado al bus de datos se
consigue eliminando el estado flotante mediante la activacin de REGbus. Figura
38.
Figura 38. Las seales SELreg seleccionan el registro a acceder. La seal REG,, deposita el con-
tenido del bus en el registro elegido y la seal REGbus realiza la operacin contraria.
El bus de direcciones tambin puede ser cargado con valores que circulen
por el bus de datos con el objetivo de acceder a posiciones de operandos. Para esta
misin existe el Registro de Direcciones de Datos de 16 bits, que se compone de 2
secciones de 8 bits cada una: dirH y dirL. Las seales Hcar y Lcar permiten
cargar el contenido del bus de datos en dirH y dirL, respectivamente. El conjunto
de los dos registros forman los 16 bits que se depositan en el bus de direcciones
cuando se desea acceder a un operando. Figura 40.
Figura 40. Desde el bus de datos se pueden cargar los dos registros que configuran el Registro de
Direcciones de Datos que sirve para apuntar direcciones de operandos.
Figura 41. El bus de direcciones puede ser cargado desde el PC o desde el Registro de Direcciones
de Datos.
cuando se efecta una resta, FC = 1 si hay llevada en la diferencia de los dos bits
de ms peso de los operandos.
Figura 42. Los dos multiplexores seleccionan la carga de los sealizadores, que puede realizarse
desde las correspondientes salidas de la AGU o desde las lneas D7 y DO del bus de datos.
La seal FLcar, comn para las dos bsculas, determina el momento en que
se cargan los sealizadores con la salida de los multiplexores, los cuales son
controlados con la seal comn selFL. Las lneas D7 y DO del bus de datos se
cargan con el valor de los sealizadores cuando se activa la seal FLbus, que depo-
sita el valor de los biestables sobre dichas lneas del bus de datos.
Figura 43. Conexin y control del Registro de Instrucciones con el bus de datos.
Buses de interconexin
La M+ dispone de un bus de datos de ocho lneas que transfiere datos e
instrucciones entre la Memoria y el Camino de Datos.
El bus de control est formado por 20 lneas, que corresponden a las sea-
les de control que se han descrito en el Camino de Datos, as como la de lectura /
escritura (l/e) que se aplica a la Memoria.
SOLUCIN
Figura 46. Paso transparente del operando contenido en el Acumulador y almacenamiento del re-
sultado en el registro destino.
Introduccin a la Programacin en
Ensamblador
Los Saltos
En cdigo mquina la programacin es totalmente secuencial. Una ins-
truccin se ejecuta detrs de otra indefectiblemente. La nica forma de hacer
programacin estructurada es provocando saltos en la secuencia del programa.
Esto complica notablemente la estructura del programa y su inteligibilidad de cara
al programador (de ah la necesidad de escribir y probar los algoritmos antes de
comenzar a escribir el cdigo mquina).
Los saltos los podemos definir como la ruptura de la secuencia lineal del
programa.
Son saltos incondicionales aquellos en los que una vez decodificada la ins-
truccin el salto se produce siempre. Son tiles para saltar trozos de cdigo de
forma obligatoria y tambin se utilizan para poder hacer algunos trucos que enga-
en al microprocesador, en programas muy elaborados. La instruccin de salto
suele ser tal como:
JMP etiqueta
Los saltos condicionales son ms verstiles. El salto solo se produce si se
dan ciertas condiciones, de lo contrario la secuencia del programa contina de
forma normal. Cada microprocesador en concreto tiene sus propios saltos condi-
cionales. El juego puede ser muy extenso. Algunos de los ms comunes son:
JE Salta si igual
JG Salta si mayor
JGE Salta si mayor o igual
JL Salta si menor
Ejemplo
si contador>0 entonces
decrementar contador
fin si
En ensamblador
si_001: MOV AX, contador ; solo se puede comparar con un
registro
CMP AX, 0 ; evaluamos la condicin
JG entonces_001 ; si condicin verdadera ejecuto la
accin
JMP fin_si_001 ; la condicin no es cierta, omito la
accin
entonces_001: DEC contador ; accin(es)
fin_si_001: ; resto del cdigo
fin si
Ejemplo
si contador>0 entonces
decrementar contador
sino
salir := 1;
fin si
En ensamblador
si_001: MOV AX, contador ; solo se puede comparar con un
registro
CMP AX, 0 ; evaluamos la condicin
JG entonces_001 ; si condicin verdadera ejecuto la
accin1
sino_001: MOV AX, #1 ; ponemos el valor de salir en AX
MOV salir, AX ; actualizamos la variable salir,
accin2
JMP fin_si_001 ; no ejecuto la accin1
entonces_001: DEC contador ; ejecuto la accin1
fin_si_001: ; resto del cdigo
Ejemplo
mientras salir<>0 hacer
contador := contador + 1
fin mientras
En ensamblador quedara:
mientras_001: MOV AX, salir ; solo se puede comparar con
; un registro
CMP AX, 0 ; evaluamos la condicin
JZ fin_mientras_001 ; si la condicin es falsa termino
Ejemplo
repetir
distancia := distancia + 3
hasta que distancia > 100
En ensamblador quedara :
repetir_001: MOV AX, distancia ; solo se puede operar con el
; acumulador
ADD AX, 3 ; incrementamos en 3 (accin)
MOV distancia, AX ; actualizamos la variable
CMP AX, 100 ; evaluamos la condicin
JLE repetir_001 ; si la condicin es falsa, repito
resto_de_cdigo
En este caso aprovechamos que AX ya contiene el valor de la distancia pa-
ra hacer la comparacin. Si nuestras acciones no dejan en ningn registro el valor
que necesitamos para hacer la comprobacin de la condicin, hay que cargar
algn registro con el valor adecuado para la comprobacin.
Esta estructura se caracteriza por tener los lmites bien definidos, lo cual se
corresponde en ensamblador con un bucle tpico.
desde_001: MOV CX, inicio ; cargamos el valor inicial
hasta_001: CMP CX, final ; comparo el comienzo con el final
Ejemplo
para i := 1 hasta N hacer
a := i
fin para
En ensamblador quedara :
desde_001: MOV CX, #1 ; cargamos el valor inicial
CMP CX, N ; comparo el comienzo con el final
JG fin_desde_001 ; salimos del bucle
hasta_001: MOV a, CX ; accin a realizar
INC CX ; incrementamos el contador del bucle
MOV i, CX ; actualizamos la variable
CMP CX, N ; hemos llegado al final ?
JLE hasta_001 ; siguiente iteracin del bucle
fin_desde_001: resto_de_cdigo
En este caso particular podemos recurrir al uso eficiente del juego de ins-
trucciones del microprocesador. Pudiendo quedarnos el cdigo de la siguiente
forma :
desde_001: MOV CX, inicio ; cargamos el valor inicial
CMP CX, 0 ; comparo el comienzo con el final
JG fin_desde_001 ; salimos del bucle
hasta_001: accin ; accin a realizar
4
Solo es necesario si vamos a utilizar la variable dentro del bucle. Si la vamos a utilizar al salir del bucle solo sera
necesario actualizarla una vez fuera del bucle. Si no se utiliza nunca sobra su declaracin y cualquier asignacin.
Problema:
Se recomienda al alumno la implementacin del segn por el mtodo de
las comparaciones sucesivas.
Subprogramas
Por ltimo nos queda ver, para terminar esta introduccin, las llamadas a
subprogramas. Las llamadas vienen a ser algo as como:
Subprograma modulo_1 (parmetros)
variables
inicio
accin1
accin2
accinN
fin subprograma
Para implementar los subprogramas tenemos que introducir una nueva ins-
truccin en nuestro lenguaje ensamblador. Esta instruccin es la llamada a
subrutina, que en mnemnico suele representarse por CALL (llamar), BSR
(Branch to SubRoutine, Ramificacin a subrutina), JSR (Jump to SubRoutine,
salto a subrutina), o algo similar. Para terminar la subrutina, tenemos que decirle
al procesador que la llamada ha terminado, esto lo hacemos indicndole RET
(RETorno) o algo similar. De esta forma, la codificacin en ensamblador quedara
como sigue.
; declaracin del mdulo 1
Modulo_1: accin1
accin2
accinN
RET
; Llamada al mdulo 1
CALL modulo_1
resto_de_cdigo
Una representacin de lo que significa la llamada a un procedimiento, des-
de el punto de vista del flujo del programa, se puede observar en la Figura 6-1:
CALL modulo_1
Accin_1
Accin_2
Accin_N
RET
CALL modulo_1
Figura 6-1. Llamada a subrutina o procedimiento
Nos falta hablar del paso de parmetros. Para pasar los parmetros pode-
mos utilizar los registros del procesador. Esto tiene el inconveniente de que los
parmetros son siempre por referencia, el resultado que tome el registro aparece
en el programa principal tambin, con el consiguiente inconveniente. Si los pasa-
mos mediante variables, no podemos llamar a un procedimiento desde dentro de
l mismo, puesto que destruiramos las variables de la primera llamada. Por otro
lado tenemos que recordar de alguna forma el punto donde hay que retornar cuan-
do se termine de ejecutar el procedimiento.
El juego de instrucciones
Instrucciones aritmticas
Instrucciones lgicas
Las instrucciones lgicas son aquellas que operan sobre los bits de los ope-
randos, transformndolos segn las leyes de la lgica. Operaciones de este estilo
son: OR, AND, XOR y NOT, operaciones de comparacin y de comprobacin.
Tambin son instrucciones lgicas las de desplazamiento lgico rotacin (evi-
dentemente).
Instrucciones de salto
Este grupo se identifica con la instruccin de SALTO INCONDICIONAL, que
tiene como mnemnico JMP. Dentro de este grupo tenemos las instrucciones de
salto condicional, que me permiten variar el flujo del programa dependiendo del
estado de los indicadores del Registro de Cdigo de Condicin.
Instrucciones especiales
En este grupo se pueden incluir instrucciones tales como la NOP (no operar), que
no hace nada, pero ocupa una posicin de la memoria dedicada al programa, y
tarda en ejecutarse un cierto tiempo.
Otras instrucciones especiales son las de entrada y salida, que sirven para
leer o escribir informacin en el mapa de entradas/salidas al que estn conectados
lo perifricos del sistema a travs de los controladores.
Direccionamiento de Memoria
Un modo de direccionamiento es un procedimiento que permite determinar un
operando, o la ubicacin de un operando o una instruccin. Dado que, general-
mente, lo que se especifica es la direccin donde se almacena el dato o la
instruccin, la denominacin genrica de modo de direccionamiento queda justifi-
cada.
Inmediato
de registro
Absoluto de memoria
de pgina base
Direccionamiento
Directo al contador de Pr ograma
Re lativo a un registro
postautodecremento x
preautoincremento + + x
a un registro ndice postautoincremento x + +
preautodecremento x
Indirecto
Im plcito
Direccionamiento inmediato
El direccionamiento se llama inmediato cuando el objeto, en este caso un operan-
do, se encuentra contenido en la propia instruccin.
Ejemplos:
162A MOV AH, 2A es una instruccin del 80x86 con direccionamiento inmediato,
puesto que contiene el valor 2A del operando.
927C47B8 M(X) <-- 7C es una instruccin del IBM 370 con direccionamiento inmediato,
pues el operando que se transfiere a la posicin de memoria X es 7C, que se en-
cuentra en la propia instruccin (la direccin de memoria X se calcula, con la
informacin 4788, mediante un direccionamiento relativo con registro base, co-
mo se ver ms adelante).
Ejemplos:
3A35F7 A M(F735). Instruccin del Z80 que transfiere al registro A el
contenido de la posicin F735.
D08F B B M(8F). Instruccin del MC6800 que resta al acumulador B el conteni-
do de la posicin 8F. Siendo 8F una direccin absoluta de pgina base, que en
este microprocesador se reduce a las direcciones 0 a 255.
Este tipo de direccionamiento suele necesitar menos bits que el directo ab-
soluto, puesto que el desplazamiento D puede tener bastantes menos bits que los
que exige el mapa de direcciones. Ntese que el registro que sirve de puntero
puede ser del tamao deseado. Por ello, este direccionamiento es ms compacto,
pero requiere, en contrapartida, realizar la operacin de suma del puntero mas el
desplazamiento.
Ejemplo:
385B PC PC + 5B si C = 1. Instruccin del Z80 que bifurca, sumando 5B al conta-
dor programa, si el biestable C de acarreo est a 1.
Ejemplos:
927C47B8 M(R4 + 7B8) 7C. Instruccin del IBM 370 que se puso como ejemplo ante-
riormente. El direccionamiento del destino es relativo, y viene especificado por
47B8. El primer carcter representa el registro base (esto es el registro R4) y el
resto representa un desplazamiento de 12 bits de valor 7B8. Por tanto, la direc-
cin del destino es R4 + 7B8. El origen, como se vio antes, es un dato inmediato
de valor 7C.
FD867A A A + M(IX + 7A). Instruccin del Z80 que suma al registro A la
posicin de memoria que se obtiene de forma relativa, sumando el registro IX y
el desplazamiento de 1 octeto 7A.
Ejemplos:
5A4537B8 R4 R4 + M(R3 + R5 + 7B8). Operacin de suma en binario del IBM 370. El
registro 5 es el registro ndice y el 3 el base. Sin embargo, el IBM 370 no tiene ni
autoincremento ni autodecremento.
A0514382 R1 R1 + M(R2 + 2R3); R2 R2 + 2. Operacin del VAX que suma dos
palabras (de dos octetos). El primer operando se encuentra en el registro 1, el se-
gundo operando est en memoria, en la posicin R2 + 2R3, donde el registro R3
se multiplica por dos al ser los operandos de 2 octetos. El registro R2 se
Direccionamiento a pila
El direccionamiento a pila es un caso particular de direccionamiento relativo, muy
empleado en los microprocesadores y minicomputadores.
Ejemplo:
F1 A M(SP + 1); F M(SP); SP SP + 2. Operacin del Z80 que extrae el
primer elemento de la pila y lo transfiere al registro F, extrae el segundo elemen-
to de la pila y lo transfiere al registro A y postautoincrementa SP en 2.
Direccionamiento indirecto
El direccionamiento indirecto comienza con un direccionamiento directo (ya sea
absoluto o relativo), pero se diferencia de aqul en que la direccin obtenida no es
el objeto deseado sino su direccin. Por tanto, para obtener el objeto deseado se
requiere un acceso adicional a memoria principal.
Varias de las instrucciones del Z80 que se han utilizado anteriormente em-
plean direccionamiento implcito del registro A, esto es, del acumulador. Este
registro no viene especificado en la instruccin, pero es uno de los operandos.
Ejemplos:
A[.3, #10] Indica la posicin de memoria M(A + .3 + 10).
A[B[.2, #12]] Indica la posicin de memoria M(A + M(B + .2 + 12)).
A[.2++] Indica la posicin de memoria M(A + .2) y postincrementa el registro .2.
A[.3--, #2] Indica la posicin de memoria M(A+.3) y, adems, postdecrementa el registro .3
en dos unidades.
Problemas
A continuacin se proponen una serie de problemas sencillos.
Solucin: Algoritmo
Definir buffer de 128 bytes
puntero := COMIENZO_BUFFER
repetir
leer(dato)
escribir(dato, puntero)
hasta puntero>=FIN_BUFFER
Puerto Serie
Implementar dos rutinas, una de escritura en el buffer y otra de lectura. La tcnica
utilizada ser la del doble buffer, para evitar la sobreescritura de datos en el buf-
fer.
Esta tcnica consiste en tener dos buffers de igual tamao que se rellenan
alternativamente, cuando uno est lleno se comienza a llenar el segundo, mientras
se llama a la rutina que permite la descarga del primero. Cuando se llene el se-
gundo buffer se vuelve a comenzar con el primero. Con cada buffer se asocia un
indicador que seala que est lleno. En el caso de que se llenen los dos buffers se
debera indicar una condicin de error. Evidentemente, cuando se vace un buffer,
su indicador de lleno debera cambiar para indicar tal circunstancia.
Los saltos condicionales nos permiten seguir con la secuencia natural del
programa o romper al secuencia en funcin del valor de algunos indicadores de
estado. Suelen ir precedidos de una comparacin que coloca las banderas del
registro de estado de la CPU en una forma tal que salta cuando se cumple una
determinada condicin y contina en caso contrario.
La Pila
Una pila es un conjunto ordenado de elementos, en el que solo uno de ellos es
accesible en un instante dado. el punto de acceso se denomina cabecera de la pila.
el nmero de elementos de la pila, o longitud de la pila, es variable. Slo se pue-
den aadir o eliminar elementos en la cabecera de la pila. Por esta razn, una pila
Implementacin de la pila
La pila es una estructura til para la CPU. Un posible uso es la gestin de llama-
das a subrutinas y retorno de stas. Las pilas pueden ser tambin tiles para el
programador. Un ejemplo es la evaluacin de expresiones, que no vamos a tratar
en este tema.
Si el mecanismo de pila va a ser utilizado slo por la CPU, con usos tales
como el manejo de subrutinas, en el repertorio de instrucciones no se contempla-
ra instrucciones orientadas al uso de la pila. En cualquier caso, la implementacin
de la pila requiere que exista un cierto conjunto de posiciones contiguas para la
pila. Una aproximacin tpica se ilustra en la Figura 9-2. En memoria principal se
reserva un bloque de posiciones contiguas para la pila. La mayor parte del tiempo,
el bloque est parcialmente lleno con elementos de la pila, y el resto del bloque
est disponible para que crezca la pila. Para un funcionamiento correcto solamen-
te se necesita una direccin, la de la cabeza de la pila, pero se suelen tener hasta
tres direcciones, normalmente almacenadas en registros de la CPU:
Puntero de pila: Contiene la direccin de la cima o cabecera de la pila.
Si se aade o se elimina un elemento de la pila, el puntero se incremen-
ta o decrementa para que contenga la direccin de la nueva cabecera de
pila.
Base de la pila: Contiene la direccin de la posicin de la base de la pi-
la en los bloques reservados. Si se intenta un POP cuando la pila est
vaca, se utiliza para detectar tal circunstancia y dar un error, bloquean-
do normalmente la CPU. Esta direccin, en algunos procesadores, se
guarda en memoria y hay que evaluarla mediante cdigo, lo que con-
sume tiempo de CPU.
Lmite de la pila: Contiene la direccin del otro extremo de los bloques
reservados. Si se intenta un PUSH cuando los bloques estn utilizados
en su totalidad, se informa de un error. Igual que la base de la pila, no
todos los procesadores implementan esta opcin. En ese caso se calcu-
la por software, si es necesario.
Para acelerar las operaciones con la pila, los dos elementos de la cabecera
se almacenan a menudo tambin en registros. En este caso, el puntero de pila
contiene la direccin del tercer elemento de la pila.
Subrutinas
Cada vez que se llama a una subrutina, se guarda la direccin de retorno en la
pila. Cuando la subrutina llegue al final recuperar de la pila la direccin de retor-
no y de esta forma devuelve el control al programa que la invoc.
INTRODUCCIN
La unidad de control tienen como funcin bsica la ejecucin de la siguiente
secuencia:
Tomar de la memoria principal la instruccin apuntada por el con-
tador de programa, e incrementar adecuadamente este contador.
Interpretar o decodificar la instruccin leda.
Ejecutar la instruccin.
Adems de estas tres funciones de lectura, decodificacin y ejecucin de
las instrucciones, la unidad de control se encarga de resolver las situaciones an-
malas o de conflicto que puedan ocurrir en el computador y de controlar y
comunicase con los perifricos.
Las seales de entrada / salida permiten el dilogo con los perifricos. Es-
tas seales se estudiarn en el captulo 10, de entrada / salida, por lo que no se
tratarn aqu.
OPERACIONES ELEMENTALES
Las operaciones elementales, que puede realizar todo sistema digital, se clasifican
en los dos grupos siguientes:
Operaciones de transferencia.
Operaciones de proceso.
D como las dos entradas del sumador Pasado un cierto tiempo de estabilizacin,
se activa la seal FA para cargar el resultado en el destino A.
Memoria principal
La memoria principal, propuesta en este computador, lleva asociados dos registros
auxiliares el de direcciones D y el de datos RM. Se supone que los ciclos de lectu-
ra y escritura siguen los cronogramas de la figura 7.6, necesitndose las siguientes
seales de control
CM Seal que sirve para iniciar un ciclo de memoria.
L Seal que especifica ciclo de lectura.
ES Seal que especifica ciclo de escritura
FD Seal de flanco, que carga, en el registro de direcciones D, la in-
formacin disponible en el bus de direcciones.
Unidad aritmtica
La unidad aritmtica se alimenta a travs de un par de multiplexores MX y MY,
de tres entradas y una salida, que permiten seleccionar el origen de sus entradas X
e Y. Estos multiplexores se gobiernan mediante las seales XX1 y XX2, que
llamaremos de forma general XX, y las seales XY1 y XY2, que llamaremos de
forma general XY Las entradas 1, 2 y 3 de los multiplexores se seleccionan con
las seales XX o XY a 01, 10 y 11 respectivamente.
Se supone que la unidad aritmtica est basada en las pastillas 74181 (ver
figura 5.35, pgina 218). Se necesitan, por tanto, cuatro seales de control para
seleccionar una de las 16 operaciones que es capaz de realizar e174181, seales
que llamaremos OP7, OP2, OP3 y OP4, y en trminos generales OP
Banco de registros
El banco de registros incluye los registros de propsito general visibles al usuario,
esto es, que se pueden manejar desde el ensamblador o el lenguaje mquina. Se
supondr que se dispone de un banco de 16 registros, con dos puertas A y B de
salida y una A' de entrada. Mediante las dos direcciones DA y DB, cada una de
ellas de 4 bits, se pueden leer simultneamente dos registros, cuyos contenidos se
obtienen por las salidas A y B. Adems, las entradas del registro de direccin DA
quedan conectadas a la entrada A', por lo que puede cargarse con nueva informa-
cin, proveniente del bus de datos, mediante la seal de flanco E.
Dado que las direcciones de los registros empleados toman parte de las
instrucciones, la unidad de control deber tomar los bits correspondientes de la
instruccin, de acuerdo con su formato, y encaminarlos a DA o Di segn se re-
quiera.
rganos de Control
El control del computador exige disponer de unos registros auxiliares de
propsito especfico (PC, I, EST, ...), adems de la unidad de control propiamente
dicha El gobierno de estos registros exige las siguientes seales:
Este registro se carga con la seal de flanco El Dado que los operandos
inmediatos, as como los desplazamientos de los direccionamientos relativos, se
tienen que poder encaminar a la unidad aritmtica, dispone de la seal de activa-
cin triestado TI que, adems, realiza la correspondiente expansin de signo, para
ajustar estas informaciones al ancho de la palabra de la unidad aritmtica.
Aunque no est representado en la figura 7.5, los campos del registro I que
contienen Direcciones de registros han de estar conectados a las entradas de di-
reccin DA y/o DB del banco de registros
Este registro almacena, entre otras, las seales de estado generadas por la
unidad aritmtica. -a carga se hace mediante varias seales de flanco FEST, que
permiten realizar una carga selectiva, dependiendo de la instruccin ejecutada.
puede contar solamente con la primera y la segunda, que servir para determinar
la direccin de bifurcacin.
Cada fase puede requerir uno o varios periodos para su ejecucin, tal y
como muestra la figura 7.7.
ADD .4,.7
Se plantea, en este ejemplo, una instruccin sencilla como es la suma en modelo
de ejecucin Reg-Reg. El formato supuesto en la instruccin es el siguiente:
Todas estas seales se activan durante el periodo 4, al final del cual, la se-
al de flanco E almacena el resultado de la suma en el registro R4, tal y como se
desea.
LD .3,#734[.4++]
Se trata, en este caso, de una instruccin de transferencia entre una posicin de
memoria principal y un registro. La direccin de memoria se especifica mediante
direccionamiento relativo autopostincrementado. La instruccin se supone con el
formato siguiente:
SUB .12,[#1734[.13]]
En esta instruccin, se utiliza direccionamiento indirecto relativo, por lo que se
debern hacer dos accesos a la memoria principal, para obtener el segundo ope-
rando. La instruccin tendr el formato siguiente:
BZ #1342[.6]
Se trata, en este caso, de una instruccin de bifurcacin condicional 'si cero', cuyo
formato es el siguiente:
instruccin que se va a ejecutar, es evidente que una instruccin slo puede gene-
rar seales de control una vez leda e interpretada.
Por otro lado, la duracin de las seales viene determinada por el reloj u
oscilador general, debiendo acomodarse a un nmero entero de periodos.
A todo ello debe aadirse el anlisis y ajuste de los retardos de todos los
distintos caminos internos de la unidad de control, lo cual hace que el diseo de
este tipo de circuitos no sea sencillo.
Introduccin histrica
Hacia el ao 1950 M.V. Wilkes y otros autores proponen la idea de la unidad de
control microprogramada. El esquema propuesto por M.V. Wilkes, que se recoge
en la figura 7.12, se compone de dos memorias A y B, construidas como matrices
de diodos, con el funcionamiento siguiente: Las microinstrucciones se encuentran
almacenadas en la matriz A, de donde son ledas mediante un rbol de decodifica-
cin. La matriz B contiene la direccin de la siguiente microinstruccin. Las
micro bifurcaciones se producen mediante ur , seal que selecciona entre dos
entradas a la matriz B.
Concepto de microprograma
Como se ha dicho, una microinstruccin es una cadena de "unos' y "ceros" que
representa los valores de las seales de control durante un periodo.
con la seal de reloj, lo que se puede hacer, sencillamente, con una puerta AND
por cada seal.
I1 I2 I3 I4 I5
TP 0 1 0 0 0
FD 0 1 0 0 0
CM 0 0 1 0 0
L 0 0 1 1 1
TM 0 0 0 0 1
FI 0 0 0 0 1
DA0 0 0 0 0 0
DA1 0 0 0 0 0
DA2 0 1 0 0 0
DA3 0 0 0 0 0
DB0 0 1 0 0 0
DB1 0 1 0 0 0
DB2 0 1 0 0 0
DB3 0 0 0 0 0
XY1 0 0 0 0 1
XY2 0 1 0 0 1
XX1 0 1 0 0 0
XX2 0 1 0 0 0
OPO 0 1 0 0 0
OP7 0 1 0 0 1
OP2 0 0 0 0 1
OP3 0 1 0 0 0
TA 0 1 0 0 0
E 0 1 0 0 0
TD 0 0 0 0 1
FP 0 0 0 0 1
FEST 0 1 0 0 0
PO 0 1 0 0 0
Ventajas de la microprogramacin
Como ya se ha indicado, la unidad de control microprogramada puede ser dema-
siado compleja para mquinas sencillas y demasiado lenta para mquinas grandes.
Sin embargo, presenta una serie de ventajas que hacen que su uso sea muy atracti-
vo.
Secuenciamiento explcito
Secuenciamiento Implcito
Formato de la microinstruccin
Codificacin de campos
Solapamiento de campos
Los dos inconvenientes de esta tcnica son que hace incompatibles las
operaciones elementales gobernadas por los campos C1 y C2, y que el circuito
demultiplexor introduce, adems de su coste, un inevitable retardo en las seales
de control.
Codificacin total
Microbifurcaciones condicionales
Microbucles y microsubrutinas