MAN30 Fundamentos Computadores

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 300

RAFAEL ASENJO PLAZA

ELADIO GUTIRREZ CARRASCO


JULIN RAMOS CZAR

FUNDAMENTOS DE
LOS COMPUTADORES

UNIVERSIDAD DE MALAGA / MANUALES


Departamento de Arquitectura de Computadores

Universidad de Malaga

Fundamentos de los Computadores

Rafael Asenjo Plaza


Eladio Gutierrez Carrasco
Juli
an Ramos C
ozar
Malaga, 2001
Quinta edicin, febrero 2006

Los autores
Publicaciones y Divulgacin Cientfica. Universidad de Mlaga.

Diseo de Ia coleccin: J. M. Mercado

I.S.B.N.: 84-7496-855-0
Depsito Legal: MA-141/2006

Imprime: Imagraf Impresores, S.A. Tel.: 952 32 85 97

Esta obra est bajo una licencia de Creative Commons


Reconocimiento-NoComercial-SinObraDerivada 4.0 Internacional:
http://creativecommons.org/licenses/by-nc-nd/4.0/legalcode
Cualquier parte de esta obra se puede reproducir sin autorizacin
pero con el reconocimiento y atribucin de los autores.
No se puede hacer uso comercial de la obra y no se puede alterar,
transformar o hacer obras derivadas.
Aviso

Este material ha sido preparado por:


Rafael Asenjo Plaza
Eladio Gutierrez Carrasco
Julin Ramos Czar
Dept. de Arquitectura de Computadores. Universidad de Mlaga.

c Esta obra est bajo una Licencia Creative Commons Atribucin-NoComercial-


SinDerivar 4.0 Internacional.

b Debe dar crdito en la obra en la forma especificada por el autor o


licenciante.

e El licenciante permite copiar, distribuir y comunicar publicamente la


obra. A cambio, esta obra no puede ser utilizada con fines comerciales a
menos que se obtenga el permiso expreso del licenciante.

d El licenciante permite copiar, distribuir, transmitir y comunicar pbli-


camente solamente copias inalteradas de la obra no obras derivadas basadas
en ella.
Indice

Indice de Figuras IX

Indice de Tablas XII

Prefacio XIII

1.- Introducci on a los Computadores 1


1.1. Naturaleza de los computadores . . . . . . . . . . . . . . . . . . 3
1.2. Antecedentes historicos . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1. Progresos mec anicos . . . . . . . . . . . . . . . . . . . . 3
1.2.2. Progresos electromec anicos. Reles . . . . . . . . . . . . . 4
1.2.3. Progresos electronicos . . . . . . . . . . . . . . . . . . . 5
1.3. Arquitectura de von Neumann . . . . . . . . . . . . . . . . . . 6
1.4. Generaciones de computadores . . . . . . . . . . . . . . . . . . 8
1.5. Niveles de descripci
on . . . . . . . . . . . . . . . . . . . . . . . 11
1.5.1. Especificaci
on e implementaci on de un sistema . . . . . 11

2.- Representaci on de la Informaci on 13


2.1. Clasificaci
on de la informaci
on . . . . . . . . . . . . . . . . . . 15
2.2. Representacion de los datos . . . . . . . . . . . . . . . . . . . . 17
2.2.1. Datos Numericos . . . . . . . . . . . . . . . . . . . . . . 17
2.2.2. Enteros . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.3. Reales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.4. Datos No Numericos. Caracteres . . . . . . . . . . . . . 26
2.3. Representacion de las instrucciones . . . . . . . . . . . . . . . . 26
2.3.1. Formatos de instrucciones. Introducci on . . . . . . . . . 27
2.3.2. Modos de direccionamiento . . . . . . . . . . . . . . . . 29
2.3.3. Modificaciones sobre los modos de direccionamiento . . 30
2.3.4. N umero de direcciones . . . . . . . . . . . . . . . . . . . 32

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

3.- Procesador Central 39


3.1. Introducci
on. Estructura b asica de un procesador . . . . . . . . 41
3.1.1. Caractersticas principales del procesador . . . . . . . . 42
3.2. Subsistemas de datos y de control . . . . . . . . . . . . . . . . . 45
3.2.1. Registros . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2.2. Unidad de Datos . . . . . . . . . . . . . . . . . . . . . . 47
3.2.3. Unidad de Control . . . . . . . . . . . . . . . . . . . . . 49
3.3. Ciclo maquina y estados de un procesador . . . . . . . . . . . . 50
3.3.1. Modos de secuenciamiento . . . . . . . . . . . . . . . . . 51
3.3.2. Tecnica pipeline de instrucciones . . . . . . . . . . . . . 52
3.4. Ejemplo: Microprocesador 8086 . . . . . . . . . . . . . . . . . . 53
3.4.1. Caractersticas generales . . . . . . . . . . . . . . . . . . 53
3.4.2. Registros . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.4.3. Gesti
on de memoria . . . . . . . . . . . . . . . . . . . . 55
Esquema de almacenamiento . . . . . . . . . . . . . . . 55
Modos de direccionamiento . . . . . . . . . . . . . . . . 56
3.4.4. Sistema de interrupciones . . . . . . . . . . . . . . . . . 57
3.4.5. Ensamblador del 8086 . . . . . . . . . . . . . . . . . . . 58
3.4.6. La pila . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.4.7. Modulo fuente . . . . . . . . . . . . . . . . . . . . . . . 59
Relaci
on de Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . 65

4.- Seccion de Control 71


4.1. Introduccion. Control cableado versus microprogramado . . 73
4.2. Diseno de una unidad de control microprogramada . . . . . . . 76
4.2.1. Caractersticas temporales . . . . . . . . . . . . . . . . 80
4.2.2. Ejemplos de microprograma . . . . . . . . . . . . . . . . 81
4.2.3. Capacidad de salto . . . . . . . . . . . . . . . . . . . . . 83
4.2.4. Microprogramaci on del conjunto de instrucciones . . . . 85
4.3. Diseno avanzado . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.3.1. Caractersticas temporales . . . . . . . . . . . . . . . . . 91
4.3.2. Codificacion de las microinstrucciones . . . . . . . . . . 95
4.3.3. Expansion funcional del datapath: ALU . . . . . . . . 97
4.3.4. Capacidad de salto y constantes en la microinstrucci on . 98
4.3.5. Microprogramaci on del conjunto de instrucciones . . . . 99
INDICE iii

4.4. Diseno de una unidad de control cableada . . . . . . . . . . . . 103


4.4.1. Metodo de los elementos de retardo . . . . . . . . . . . 104
4.4.2. Metodo del contador de secuencias . . . . . . . . . . . . 108
Relaci
on de Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . 113

5.- Seccion de Procesamiento 141


5.1. Aritmetica de Punto Fijo . . . . . . . . . . . . . . . . . . . . . 143
5.2. Suma y Resta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
5.2.1. Algoritmos de suma y resta . . . . . . . . . . . . . . . . 143
Binario natural . . . . . . . . . . . . . . . . . . . . . . . 143
Signo/Magnitud . . . . . . . . . . . . . . . . . . . . . . 144
Complemento a 1 . . . . . . . . . . . . . . . . . . . . . . 145
Complemento a 2 . . . . . . . . . . . . . . . . . . . . . . 146
5.2.2. Implementaci on de un sumador . . . . . . . . . . . . . . 146
Sumador serie . . . . . . . . . . . . . . . . . . . . . . . . 146
Sumadores paralelos . . . . . . . . . . . . . . . . . . . . 147
5.3. Producto de enteros sin signo o naturales . . . . . . . . . . . . 151
5.3.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . 151
5.3.2. Caso Binario. Algoritmo de Suma y Desplazamiento . . 155
5.3.3. Mejora para saltar sobre ceros y unos consecutivos (bit-
scanning) . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5.3.4. Recodificaci
on del Multiplicador . . . . . . . . . . . . . 158
5.4. Divisi
on de Enteros Sin Signo . . . . . . . . . . . . . . . . . . . 160
5.4.1. Divisi
on Con Restauraci on . . . . . . . . . . . . . . . . 160
5.5. Algoritmos en Punto Flotante . . . . . . . . . . . . . . . . . . . 162
5.5.1. Suma y Resta . . . . . . . . . . . . . . . . . . . . . . . . 162
5.5.2. Multiplicaci
on . . . . . . . . . . . . . . . . . . . . . . . 163
5.5.3. Divisi
on . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Relaci
on de Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . 165

6.- Memorias 167


6.1. Ancho de Banda, Localidad y Jerarqua de Memoria . . . . . . 169
6.2. Organizaci
on de la Memoria . . . . . . . . . . . . . . . . . . . . 170
6.2.1. Memoria Entrelazada . . . . . . . . . . . . . . . . . . . 170
Rendimiento de Memorias Entrelazadas . . . . . . . . . 172
6.2.2. Memoria Asociativa . . . . . . . . . . . . . . . . . . . . 173
6.2.3. Memoria Cache . . . . . . . . . . . . . . . . . . . . . . . 176
Operaci
on . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Organizaci
on . . . . . . . . . . . . . . . . . . . . . . . . 177
iv FUNDAMENTOS DE LOS COMPUTADORES

7.- Entrada/Salida 181


7.1. Introducci
on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
7.1.1. Organizaci on . . . . . . . . . . . . . . . . . . . . . . . . 184
7.2. E/S Dirigida por Programa . . . . . . . . . . . . . . . . . . . . 186
7.3. Interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
7.3.1. Clasificaci
on de las Interrupciones . . . . . . . . . . . . 188
7.3.2. Operaci on . . . . . . . . . . . . . . . . . . . . . . . . . . 189
7.4. Acceso Directo a Memoria . . . . . . . . . . . . . . . . . . . . . 190
7.4.1. Organizaci on . . . . . . . . . . . . . . . . . . . . . . . . 190
7.4.2. Operaci on . . . . . . . . . . . . . . . . . . . . . . . . . . 190

8.- Introduccion a los Sistemas Operativos 193


8.1. Introducci
on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
8.1.1. Tareas que realiza un Sistema Operativo . . . . . . . . . 195
8.1.2. Evolucion de los Sistemas Operativos . . . . . . . . . . 196
8.2. Administracion y Planificacion de Procesos . . . . . . . . . . . 197
8.2.1. Proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.2.2. Estados de un Proceso . . . . . . . . . . . . . . . . . . . 198
8.2.3. Planificaci
on . . . . . . . . . . . . . . . . . . . . . . . . 202
8.2.4. Operaciones sobre Procesos . . . . . . . . . . . . . . . . 203
8.3. Memoria Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . 204
8.3.1. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

Ap
endices 209

A. Sistemas de representaci on especiales 209


A.1. C
odigos detectores/correctores de errores . . . . . . . . . . . . 209
A.1.1. Bit de paridad . . . . . . . . . . . . . . . . . . . . . . . 209
A.1.2. Codigos polinomicos . . . . . . . . . . . . . . . . . . . . 210
A.1.3. Codigo Hamming . . . . . . . . . . . . . . . . . . . . . . 210
A.2. C
odigos de longitud variable . . . . . . . . . . . . . . . . . . . . 211
A.2.1. Codigo Human . . . . . . . . . . . . . . . . . . . . . . 211
A.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

B. Rendimiento de un computador 215


B.1. Ley de Amdahl . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
B.1.1. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
B.1.2. Casos lmite . . . . . . . . . . . . . . . . . . . . . . . . . 217
INDICE v

B.2. Observacion de Moore . . . . . . . . . . . . . . . . . . . . . . . 218


B.3. Observacion de Grosch . . . . . . . . . . . . . . . . . . . . . . . 219
B.3.1. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
B.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

C. C
odigos completos para el i8086 223
C.1. C
odigos completos . . . . . . . . . . . . . . . . . . . . . . . . . 223

D. Detalles de dise no de cache 229


D.1. Polticas de Asignaci
on . . . . . . . . . . . . . . . . . . . . . . . 229
D.1.1. Asignaci on directa . . . . . . . . . . . . . . . . . . . . . 229
D.1.2. Asignaci on completamente asociativa . . . . . . . . . . . 230
D.1.3. Asignaci on asociativa por conjuntos . . . . . . . . . . . 230
D.2. Reemplazo y Actualizaci on . . . . . . . . . . . . . . . . . . . . 232
D.3. Rendimiento de memorias caches . . . . . . . . . . . . . . . . . 234
D.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

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

1.1. M aquina de Charles Babbage . . . . . . . . . . . . . . . . . . . 4


1.2. M aquina de von Neumann . . . . . . . . . . . . . . . . . . . . . 6
1.3. Representaci on de un Sistema . . . . . . . . . . . . . . . . . . . 11
1.4. Especificaci
on e Implementaci on . . . . . . . . . . . . . . . . . 11
2.1. Recta real y comportamiento de la caracterstica . . . . . . . . 24
3.1. Unidades del computador . . . . . . . . . . . . . . . . . . . . . 41
3.2. Una posible Secci on de Procesamiento . . . . . . . . . . . . . . 48
3.3. Esquema a alto nivel de una secci on de control . . . . . . . . . 49
3.4. Ubicacion de datos en memoria . . . . . . . . . . . . . . . . . . 56
4.1. Unidad de control cableada . . . . . . . . . . . . . . . . . . . . 74
4.2. Unidad de control microprogramada . . . . . . . . . . . . . . . 74
4.3. Una hipotetica seccion de procesamiento elemental . . . . . . . 76
4.4. Registro de control . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.5. Seccion de control microprogramado inicial . . . . . . . . . . . 79
4.6. Seccion de control microprogramado m as detallada . . . . . . . 80
4.7. Formas de onda de las se nales en el tiempo . . . . . . . . . . . 81
4.8. Esquema parcial de las conexiones de temporizaci on . . . . . . 82
4.9. Seccion de control con capacidad de salto . . . . . . . . . . . . 84
4.10. Secci
on de control completa . . . . . . . . . . . . . . . . . . . . 86
4.11. Secci
on de procesamiento elemental . . . . . . . . . . . . . . . . 91
4.12. Formas de onda de las se nales de tiempo . . . . . . . . . . . . . 93
4.13. Esquema parcial de las conexiones de temporizaci on . . . . . . 94
4.14. Diagrama de tiempos del ciclo m aquina . . . . . . . . . . . . . 95
4.15. Decodificador de microfunci on . . . . . . . . . . . . . . . . . . . 96
4.16. Ampliacion de la ALU . . . . . . . . . . . . . . . . . . . . . . . 99
4.17. Procesador hipotetico completo . . . . . . . . . . . . . . . . . . 101
4.18. Diagrama de flujo a nivel RTL para el procesador . . . . . . . . 105
4.19. Transformacion a elementos de retardo . . . . . . . . . . . . . . 107
4.20. Se
nales de control con elementos de retardo . . . . . . . . . . . 109

vii
viii FUNDAMENTOS DE LOS COMPUTADORES

4.21. Contador de secuencias m odulo k . . . . . . . . . . . . . . . . . 111


4.22. Unidad de control utilizando un contador de secuencias . . . . 111
4.23. Unidades de Proceso y de Control (Prob. 4) . . . . . . . . . . . 115
4.24. Unidades de Proceso y de Control del multiplicador . . . . . . 118
4.25. Unidades de Proceso y de Control (Prob. 6) . . . . . . . . . . . 122
4.26. Unidades de Proceso y de Control (Prob. 7) . . . . . . . . . . . 127
4.27. Procesador microprogramado (Prob. 8) . . . . . . . . . . . . . . 130
4.28. Unidades de Datos y de Control (Prob. 9) . . . . . . . . . . . . 134
4.29. Unidad de Control (Prob. 11) . . . . . . . . . . . . . . . . . . . 136
4.30. Formato de las instrucciones . . . . . . . . . . . . . . . . . . . . 137
4.31. Datapath (Prob. 12) . . . . . . . . . . . . . . . . . . . . . . . . 138
5.1. Semi-sumador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
5.2. Sumador completo (de un bit) . . . . . . . . . . . . . . . . . . . 147
5.3. Sumador serie (de n bits) . . . . . . . . . . . . . . . . . . . . . 147
5.4. Sumador de acarreo propagado (de n bits) . . . . . . . . . . . . 148
5.5. Sumador de acarreo almacenado de 4 bits . . . . . . . . . . . . 150

5.6. Arbol de Wallace para nueve sumandos . . . . . . . . . . . . . 151
5.7. Ejemplo de multiplicaci on con l
apiz y papel . . . . . . . . . . . 152
5.8. Mejora del algoritmo y su implementaci on . . . . . . . . . . . . 153
5.9. Implementaci on de la segunda mejora del algoritmo . . . . . . 154
5.10. Multiplicaci
on binaria . . . . . . . . . . . . . . . . . . . . . . . 155
5.11. Implementaci on del algoritmo bit-scanning . . . . . . . . . . . . 159
5.12. Ejemplo del algoritmo de division con restauraci on . . . . . . . 161
5.13. Algoritmo de divisi
on con restauracion . . . . . . . . . . . . . . 162
5.14. Implementaci on del algoritmo de divisi
on binario . . . . . . . . 163
6.1. Jerarqua de Memorias . . . . . . . . . . . . . . . . . . . . . . . 170
6.2. Memoria Entrelazada de Orden Superior . . . . . . . . . . . . . 171
6.3. Memoria Entrelazada de Orden Inferior . . . . . . . . . . . . . 171
6.4. Diagrama de Bloques de una Memoria Asociativa . . . . . . . . 175
6.5. Ubicacion de la Memoria Cache . . . . . . . . . . . . . . . . . . 176
6.6. Estructura de una Memoria Cache . . . . . . . . . . . . . . . . 177
6.7. Contenidos de la Memoria del Ejemplo . . . . . . . . . . . . . . 178
7.1. Diagrama de bloques de un computador . . . . . . . . . . . . . 183
7.2. Esquema del computador con perifericos . . . . . . . . . . . . . 184
7.3. E/S Mapeada en E/S . . . . . . . . . . . . . . . . . . . . . . . 185
7.4. E/S Mapeada en Memoria . . . . . . . . . . . . . . . . . . . . . 187
7.5. Esquema del DMA . . . . . . . . . . . . . . . . . . . . . . . . . 190
8.1. Capas de un S.O. . . . . . . . . . . . . . . . . . . . . . . . . . . 195
INDICE DE FIGURAS ix

8.2. S.O. Multitarea . . . . . . . . . . . . . . . . . . . . . . . . . . . 199


8.3. Estados de un proceso . . . . . . . . . . . . . . . . . . . . . . . 200
8.4. Ejemplos de transici
on entre estados de un proceso . . . . . . . 201
8.5. Traducci
on de referencia virtual a real . . . . . . . . . . . . . . 206
8.6. Traducci
on paginada . . . . . . . . . . . . . . . . . . . . . . . . 207

A.1. Arbol de generaci


on Human . . . . . . . . . . . . . . . . . . . 212

B.1. Casos Lmite de la Ley de Amdahl. . . . . . . . . . . . . . . . . 218


B.2. Observacion de Moore para las CPUs de Intel . . . . . . . . . . 219

D.1. Asignaci
on directa . . . . . . . . . . . . . . . . . . . . . . . . . 230
D.2. Asignaci
on completamente asociativa . . . . . . . . . . . . . . . 231
D.3. Asignaci
on asociativa por conjuntos . . . . . . . . . . . . . . . 232

E.1. Diagrama de Flujo del programa del problema 8 . . . . . . . . 261


E.2. Diagrama de Flujo del programa del problema 9 . . . . . . . . 262
E.3.
Arbol de Wallace para seis sumandos . . . . . . . . . . . . . . . 273
E.4.
Arbol de Wallace para tres sumandos . . . . . . . . . . . . . . . 274
Indice de tablas

2.1. Codigo de caracteres ASCII en octal . . . . . . . . . . . . . . . 27


2.2. Codigo EBCDIC completo . . . . . . . . . . . . . . . . . . . . . 28
3.1. Programa que se analiza y contenido de la memoria . . . . . . 66
4.1. Funciones de los conmutadores de control . . . . . . . . . . . . 78
4.2. Conjunto de instrucciones de la CPU . . . . . . . . . . . . . . . 88
4.3. Contenido de la memoria de microprograma . . . . . . . . . . . 89
4.4. Funciones de los conmutadores de control . . . . . . . . . . . . 90
4.5. Definici
on de microinstruccion codificada . . . . . . . . . . . . . 98
4.6. Definici
on final de microinstrucci
on . . . . . . . . . . . . . . . . 100
4.7. Repertorio de instrucciones . . . . . . . . . . . . . . . . . . . . 104
4.8. Puntos de control especificados (Prob. 4) . . . . . . . . . . . . . 114
4.9. Memoria de microprograma (Prob. 4) . . . . . . . . . . . . . . 116
4.10. Conjunto de instrucciones (Prob. 4) . . . . . . . . . . . . . . . 117
4.11. Puntos de control del multiplicador (Prob. 5) . . . . . . . . . . 119
4.12. Conjunto de instrucciones (Prob. 6) . . . . . . . . . . . . . . . 121
4.13. Puntos de control (Prob. 6) . . . . . . . . . . . . . . . . . . . . 121
4.14. Memoria de microprograma (Prob. 6) . . . . . . . . . . . . . . 123
4.15. Banco de registros (Prob. 7) . . . . . . . . . . . . . . . . . . . . 124
4.16. Puntos de control de la secci
on de datos (Prob. 7) . . . . . . . 126
4.17. Conjunto de instrucciones (Prob. 7) . . . . . . . . . . . . . . . 126
4.18. Memoria de microprograma (Prob. 7) . . . . . . . . . . . . . . 128
4.19. Conjunto de instrucciones del procesador (Prob. 8) . . . . . . . 131
4.20. Puntos de control del procesador (Prob. 8) . . . . . . . . . . . . 131
4.21. Descripci
on de los puntos de control de la CPU (Prob. 9) . . . 133
4.22. Subconjunto de instrucciones de la CPU (Prob. 9) . . . . . . . 133
4.23. Memoria de microprograma (Prob. 9) . . . . . . . . . . . . . . 135
4.24. Extensi
on del conjunto de instrucciones . . . . . . . . . . . . . 136
4.25. Puntos de control (Prob. 12) . . . . . . . . . . . . . . . . . . . 139
5.1. Tabla de verdad de la suma . . . . . . . . . . . . . . . . . . . . 144

xi
xii FUNDAMENTOS DE LOS COMPUTADORES

5.2. Operacion a realizar en el algoritmo bit-scanning . . . . . . . . 158


5.3. Recodificaci
on de los bits del multiplicador . . . . . . . . . . . 159

E.1. Contenido de la memoria . . . . . . . . . . . . . . . . . . . . . 263


E.2. Memoria de microprograma (Prob. 1, 2 y 3) . . . . . . . . . . . 265
E.3. Problema 4. Memoria de microprograma . . . . . . . . . . . . . 266
E.4. Problema 5. Memoria de microprograma . . . . . . . . . . . . . 267
E.5. Problema 6. Memoria de microprograma . . . . . . . . . . . . . 268
E.6. Problema 7. Memoria de microprograma . . . . . . . . . . . . . 269
Prefacio

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 evolucion de los sistemas basados en computador, su creciente
potencia de c alculo 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 logicas 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
(Fundamentos de los Computadores, Introducci on a los Computadores, ...).
Mas particularmente, los contenidos de este libro nacen de los apuntes de-
sarrollados para la asignatura Fundamentos de los Computadores. Esta asigna-
tura se imparte en el primer curso de la ETSI de Telecomunicaci on de Malaga
durante el segundo cuatrimestre, a raz on de dos horas por semana. A esas
alturas del ano, los alumnos ya han cursado la asignatura de Electr onica Di-
gital 1 y Elementos de Programaci on, impartidas en el primer cuatrimestre.
Por tanto, en este libro queremos cubrir el desnivel sem antico que existe en
un sistema computador entre los contenidos de estas dos asignaturas previas
(electr
onica digital y lenguajes de alto nivel), contemplando el control micro-
programado y cableado, el lenguaje ensamblador y los sistemas operativos,
segun desglosamos a continuaci on por temas.
El tema 1 introduce los primeros conceptos b asicos y una descripci
on 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
xiv FUNDAMENTOS DE LOS COMPUTADORES

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. En esta segunda edici on se ha incluido material adicional en
algunos temas y varios apendices nuevos para cubrir tambien los contenidos
de la asignatura que con el mismo nombre se imparte en segundo curso de la
ingeniera tecnica de telecomunicaci on.
Hemos credo conveniente recoger en un u nico libro estos contenidos en el
orden y con la extensi on con que se imparten en esta asignatura. De esta forma,
se facilita al alumno de primero el seguimiento de la asignatura, ahorr andole
en gran medida el tiempo necesario para consultar la extensa literatura que
cubre este campo e interpretar los distintos puntos de vista con que se tratan
los mismos conceptos en cada uno de los libros. De cualquier modo, el alumno
interesado siempre puede consultar la bibliografa propuesta al final del libro
cuando su curiosidad le demande una mayor profundidad en sus conocimientos
de arquitectura.
Por otro lado, hemos omitido en el libro la referencia a arquitecturas con-
cretas que pueden quedar obsoletas en poco tiempo. Por ejemplo, la arquitec-
tura PC (la m as familiar al alumno) del curso en que empezamos a impartir
esta asignatura (94/95), contena probablemente un Pentium a 75Mhz con 3.1
millones de transistores, cache L1 de 8Kbytes de instrucciones y otros tantos
de datos, 16Mbytes de RAM FPM en m odulos SIMM, 800 Mbytes de disco
duro IDE-ATA, por citar algunos n umeros y est andares. Han pasado seis anos
y para el curso que llaman del nuevo milenio ya disponemos de un Pentium4
con 42 millones de transistores, cache de m as 256K, 128Mbytes de SDRAM,
DDR o RDRAM en m odulos DIMM o RIMM y m as de 20Gbytes de disco duro
Ultra-DMA ATA-100. Aunque pensamos actualizar este texto cada dos a nos,
hemos preferido reflejar en el libro s olo los aspectos de la arquitectura mas in-
variantes en el tiempo (arquitectura del conjunto de instrucciones, estrategias
de control, algoritmos aritmeticos, entrelazamiento de memoria, cache, inte-
rrupciones, DMA, etc.) que ser an completados con ejemplos de arquitecturas
actuales durante cada clase.
Evidentemente, otra fuente de informaci on actualizada es la WEB. Por
ello, mantenemos desde el a no 96 paginas de las asignaturas:
http://www.ac.uma.es/academia/educacion/cursos/FundCompTel/

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

teres para completar conocimientos de arquitectura y otras noticias, como


notas de los examenes, aportaciones de alumnos, etc., que esperamos sea de
utilidad y tambien motive al alumno a familiarizarse con su ordenador perso-
nal.
En u
ltimo lugar, aunque no menos importante, queremos agradecer la co-
laboracion de los miembros del Departamento de Arquitectura de Computa-
dores, en particular a Jose Mara Gonz alez, por sus aportaciones y revisiones,
a Oscar Plata, por administrar el servidor web del departamento, y a Emilio
L. Zapata que fue quien nos ense no arquitectura de computadores cuando era-
mos nosotros los alumnos. Tampoco olvidamos las aportaciones de nuestros
alumnos, que nos han se nalado las erratas y nos han ayudado a detectar los as-
pectos que necesitaban una explicaci on mas detallada mediante sus cuestiones
y comentarios en clase. A ellos dirigimos y dedicamos este texto.

Los Autores
1
Introducci
on a los
Computadores

OBJETIVOS

Describir las caractersticas b


asicas de los computadores del tipo von
Neumann
Proporcionar una perspectiva hist orica
CAPITULO 1: INTRODUCCION
A LOS COMPUTADORES 3

1.1. NATURALEZA DE LOS COMPUTADORES

Empecemos esta introduccion a la arquitectura de computadores recordando


dos definiciones b
asicas:
Computador: Sistema (conjunto de elementos interrelacionados) al que se
le suministran datos y nos aporta unos resultados acordes con la resolu-
ci
on de un determinado problema. Luego el objetivo del computador es
resolver problemas. Para ello ejecuta programas de forma r apida, eficaz
y comoda.
Programa: Secuencia de instrucciones que resuelven el problema mencionado
en la definici
on anterior.
Para resolver problemas mediante programas tambien se utilizan al-
gunas herramientas:
Sistema Operativo (S.O.): facilitan la gesti
on de los recursos.
Compiladores de lenguajes de alto nivel.

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.

1.2.1. Progresos mec


anicos
A partir del siglo XVII se realizan progresos mec anicos en los sistemas de
c
alculo. Aparecen las calculadoras mec anicas por varios motivos: investigaci
on,
y principalmente econ omicos, para el c
alculo de tablas astron
omicas (utiles en
navegacion) y para recaudar impuestos.
En 1623, W. Shickard (astronomo amigo de Kepler) construye la primera
calculadora, basada en ruedas dentadas y capaz de sumar y multiplicar.
En 1642, B. Pascal, a los 19 a nos de edad construye una m aquina que
suma y resta. Quera ayudar a su padre que era recaudador de impuestos.
En 1671, Leibnitz mejora la m aquina de Pascal, dise
nando la multipli-
caci
on por iteraciones. Ahora la nueva m aquina suma, resta, multiplica
y divide. Realiza algunas aportaciones importantes:
consigue cierto avance en la mec
anica de precisi
on
4 FUNDAMENTOS DE LOS COMPUTADORES

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.

The Mill The Store


Datos OUT
(ALU) (Memoria)

Instrucciones Datos

Tarjetas de Tarjetas de
Operaciones Variables

Programa

Figura 1.1: M
aquina de Charles Babbage

En 1880, Herman Holleritz, crea una m


aquina capaz de hacer estadsticas
sobre censos.

1.2.2. Progresos electromec


anicos. Rel
es
En 1914, Leonardo Torres Quevedo, con tecnologa electromec anica di-
se
na los esquemas de una calculadora digital de prop
osito general. Em-
plea representaci
on en coma flotante.
En 1938, G. Stibitz, construye una m aquina denominada Model I que
CAPITULO 1: INTRODUCCION
A LOS COMPUTADORES 5

trabaja con n umeros complejos, para realizar c alculos balsticos. Fue el


primer sistema con terminales remotos. Uno de sus sucesores, el Model
V, consta de dos procesadores y un total de 9000 reles. El Model VI
es gestionado por uno de los primeros sistemas operativos (proceso por
lotes -batch-).
En 1941, K. Zuse (Alem an) construye las m aquinas Z1, Z2 y Z3. Esta
u
ltima es de proposito general con 2600 reles. El programa sigue siendo
externo.
En 1942, Atanaso, fsico de la universidad de Iowa, construy o una
maquina de proposito general con tubos de vaco (conmutador electr o-
nico). Realmente construy o un prototipo de m aquina para el c alculo de
ecuaciones diferenciales. Por culpa de la guerra no termin o la m aquina,
pero es considerado el inventor del ordenador.

1.2.3. Progresos electr


onicos
En 1943, Mauchly y Eckert construyeron el ENIAC (Electronic Numeric
Integrator and Calculator). Fue considerado el primer computador di-
gital electronico hasta el 1973. Su m aquina estaba orientada a resolver
ecuaciones diferenciales y tablas balsticas.
Caractersticas:
18000 tubos de vaco
Consume 150 Kw
Dimensiones: 30m de largo por 2.5m de alto
Tena 20 registros de 10 dgitos decimales
Trabajaba con aritmetica en punto fijo
Velocidad: 200 s para sumar, 2.8 ms para multiplicar y 6 ms para
dividir
Introducci on de datos mediante tarjetas perforadas
La secuencia de operaciones se estableca mediante un conexionado
manual entre elementos, y por las posiciones de ciertos interrupto-
res. Introducir o modificar programas era muy tedioso.
En 1945, John von Neumann entra en el proyecto ENIAC. Ser a el encar-
gado de facilitar la programaci on del ENIAC. Conoca bien el trabajo
de Babbage y su m aquina analtica. Aporta una idea innovadora: Alma-
cenar en una memoria r apida datos e instrucciones, y as modificar el
programa consistira sencillamente en modificar las instrucciones alma-
cenadas en memoria.
Disena el EDVAC (Electronic Discrete Variable Automatic Compu-
6 FUNDAMENTOS DE LOS COMPUTADORES

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

1.3. ARQUITECTURA DE VON NEUMANN

La mayora de los computadores se han construido siguiendo la arquitectura


de la m
aquina de von Neumann.
1. ESTRUCTURA (figura 1.2):

Unidad de
Control

Entrada ALU Salida

Datos Control

Datos

Memoria
Instrucciones

Figura 1.2: M
aquina de von Neumann

a) Entrada.- Unidad que transmite instrucciones y datos del exterior


a la memoria (pasando por la ALU).
CAPITULO 1: INTRODUCCION
A LOS COMPUTADORES 7

b) Memoria.- Unidad que almacena instrucciones y datos, as como los


resultados parciales y finales de los programas.
c) A.L.U.- Unidad que realiza las operaciones aritmetico-l
ogicas (su-
ma, multiplicacion, OR, con datos de memoria). Tiene registros
para almacenar operandos: RALU.
d) Unidad de Control.- Interpreta las instrucciones y coordina el resto
del sistema.
e) Salida.- Transmite los resultados al exterior.

2. ARQUITECTURA:

a) Una sola memoria direccionada secuencialmente. La memoria tie-


ne una estructura lineal (vector de palabras direccionables). Es el
cuello de botella del sistema.
b) No hay distincion explcita entre instrucciones y datos. Los datos
no tienen ningun significado explcito.
c) El procesamiento es totalmente secuencial. Las fases de ejecuci
on de
las instrucciones son secuenciales (solo hay una unidad de control).
d) Hay instrucciones que permiten la ruptura de secuencia (es decir,
se permiten los saltos en el programa).

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

1.4. GENERACIONES DE COMPUTADORES

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

Maquinas: UNIVAC 1107, BURROUGH D-805, PDP-5 de DEC, y


las cientficas IBM 7070, 7090, 7094.
Avances del equipo fsico: se consolidan las memorias de ferrita.
Aparecen los canales de E/S.
Avances del equipo l ogico: aparecen los lenguajes de alto nivel
(FORTRAN, COBOL, ALGOL, PL1). Se impone el procesamien-
to tipo batch o por lotes: ejecuci
on automatica y secuencial de los
programas de usuario, uno a uno.
3. GENERACION 3.a (1963 - 1971)
Tecnologa: se integran los transistores y aparecen los Circuitos In-
tegrados (C.I.): SSI, MSI.
Maquinas: IBM 360. Aparecen las Familias de Computadores:
computadores de distinta potencia y precio pero con la misma ar-
quitectura y totalmente compatibles. Se produce una explosi on de
los mini-computadores: recursos m as limitados pero muy asequibles
(PDP-8, PDP-11).
Avances del equipo fsico: tarjetas de circuito impreso (PCB); me-
morias electronicas sustituyen a las de ferrita; aparecen las memo-
rias cache; la CPU est a basada en registros de prop osito general.
Avances del equipo l ogico: nuevos lenguajes de alto nivel (BASIC,
PASCAL); gran avance en el S.O.; aparece la multiprogramaci on.
4. a
GENERACION 4. (1972 - 1987)
Tecnologa: se incrementa la escala de integraci
on (LSI, VLSI). Se
puede integrar en un chip todo un procesador. Los computadores
con microprocesador se llamaron microcomputadores.
Maquinas: se pueden distinguir 4 fases:
a) 1.a fase (1971 - 74): microprocesador de 4 bits, como el INTEL
4004 con 2300 TRTs y LSI.
b) 2.a fase (1974 - 76): microprocesador de 8 bits, como el 8080 de
INTEL con 5000 TRTs, el 6800 de Motorola con 6000 TRTs,
o el Z80 de Zilog.
c) 3.a fase (1976 - 80): microprocesador de 16 bits, como el 8086
de INTEL (con 29000 TRTs), el Z8000 de Zilog o el 68000 de
Motorola.
d) 4.a fase (1980 - 87): microprocesador de 32 bits, como el 80286
(con 134000 TRTs), el 80386 (con 275000 TRTs) de INTEL,
o el 68020 y el 68030 de Motorola.
Avances del equipo fsico: m
as integraci
on de las memorias; los dis-
10 FUNDAMENTOS DE LOS COMPUTADORES

cos duros tienen m as capacidad; aparecen los coprocesadores para


el tratamiento en punto flotante FPU y los gestores de memoria o
MMU.
Avances del equipo l ogico: se normaliza el uso de la memoria vir-
tual; los S.O. permiten la multitarea y el multiproceso; se producen
avances en los lenguajes de alto nivel.
5. GENERACION 5.a (desde 1988 hasta hoy)
Tecnologa: los modernos CIs son hoy en da capaces de integrar
mas de 1 millon de TRTs.
Maquinas: Distinguimos tres apartados:
a) Procesadores de altas prestaciones. Las familias de procesa-
dores siguen evolucionando: INTEL 1 : 486 (1.2, 25-100MHz),
Pentium (3.1, 60-233MHz), Pentium Pro (5.5, 150-200MHz),
PentiumII (7.5, 233-450MHz), PentiumIII (44, 450MHz-1.4GMHz),
Pentium M (144, 1.2-2GHz), Pentium 4 (108, 2-3.8GHz), y
otros (Pentium D, Pentium EE, Itanium II ...); AMD: K5, K6,
K6 3D, K6+ 3D, Athlon (K7), Athlon 64, Opteron; Procesa-
dores RISC: Power 4 y 5, Alpha 21064 - 21364, UltraSPARC,
R10000 - R16000, etc.
b) Supercomputadores de alta velocidad. Aparecen porque se bus-
caba m as velocidad. Se emplean fundamentalmente para pro-
cesado de imagen, control de robots, simulaci on, etc. Para au-
mentar la velocidad se incrementa el HW, se utilizan m as mi-
croprocesadores, dando lugar a sistemas multiprocesador y al
paralelismo, y empleando la segmentaci on y las m aquinas
vectoriales.
c) Computadores de funciones inteligentes. Inicialmente la com-
putacion se realizaba sobre datos. Posteriormente se realiz
o so-
bre informaci on (conjunto de datos relacionados). Pero ahora,
lo que se pretende con este tipo de maquinas es la computaci on
sobre el conocimiento (es decir, cuando a la informaci on se le
da valor sem antico). Se quieren dise
nar computadores capaces
de tomar decisiones inteligentes en funci on de un conjunto de
conocimientos (base de conocimientos). Aparecen los sistemas
expertos, como el MYCIN, que se emplea para diagn osticos de
enfermedades infecciosas a partir de determinados sntomas.
1
Los dos n umeros entre parantesis indican los millones de transistores y el rango de
frecuencias de trabajo de esos procesadores.
CAPITULO 1: INTRODUCCION
A LOS COMPUTADORES 11

1.5.
NIVELES DE DESCRIPCION

Se define un sistema como una combinaci on de elementos que actua conjunta-


mente y cumplen con un determinado objetivo o funci on. Podemos represen-
tarlo seg
un se ve en la figura 1.3, donde z = F (x), y llamamos a F funcion de
transferencia.

X Sistema Z

Figura 1.3: Representaci


on de un Sistema

El comportamiento de entrada/salida es el conjunto de relaciones que el


sistema establece entre la entrada y la salida. Podemos hablar de sistema fsico,
sistema digital, sistema analogico, sistema de telecomunicaci
on, ...

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

Figura 1.4: Especificaci


on e Implementaci
on
12 FUNDAMENTOS DE LOS COMPUTADORES

Si nos centramos en un sistema particular como puede ser un sistema de


computadores, lo podemos describir tambien siguiendo esas dos alternativas:
1. Dando una descripci on funcional del microprocesador. Esta descripcion
es la que viene en las hojas de datos comerciales, que cuentan c omo
funciona, que instrucciones m aquina puede ejecutar (ISP), c
omo se ges-
tionan las interrupciones, etc.
2. Dando una descripci on l
ogica del microprocesador. Consiste en describir

el circuito a nivel de puertas. Esta es una informaci
on que suele estar
reservada por los fabricantes. Es en definitiva la implementacion.
Conociendo la descripci on funcional, se sabe que hace el computador y
c
omo funciona, pero no c omo est a construido (implementado). Por el contra-
rio, conociendo la descripci on l
ogica se sabe como esta hecho, pero es muy
difcil determinar su funcionamiento y el modo de operaci on a partir de esa
informaci on.
Entre estos dos niveles de descripcion extremos de un microprocesador, se
puede considerar otro, el denominado nivel de transferencia de registros, RTL.
Mediante este nivel de descripci on intermedio, se especifican los registros y
c
omo se transfiere informaci on entre ellos: como pasa la informaci on por la
ALU, c omo se guarda en memoria, etc. De esta forma, sabremos un poco de
la implementacion (a alto nivel) y, por otro lado, ser
a m
as sencillo determinar
el funcionamiento del computador a partir de la descripci on RTL. Es el nivel
que basicamente utilizaremos en esta asignatura.

SINOPSIS

Resumiendo, este tema ha servido tanto para introducir y repasar algunos


conceptos b asicos, como para recorrer las etapas cubiertas en la evoluci
on de
los sistemas de c alculo y computacion. Tambien hemos hecho especial hinca-
pie en la arquitectura de von Neumann debido a que es la base sobre la que se
han construido los computadores modernos. Como apunte final, subrayar la
vertiginosa evoluci on del campo del que trata esta asignatura: por poner solo
un ejemplo, comparando el ENIAC con un PentiumIII a 500MHz, el tiempo
necesario para realizar una suma se ha reducido en 5 ordenes de magnitud en
apenas 50 a nos.
2
Representaci
on de la
Informaci
on

OBJETIVOS

Estudiar los modos de representaci on de enteros y flotantes


Entender el formato de las instrucciones y los modos de direccionamiento
CAPITULO 2: REPRESENTACION
DE LA INFORMACION
15

2.1. DE LA INFORMACION
CLASIFICACION

El ordenador para resolver problemas ejecuta programas en los que se procesa


informacion. Para representar informaci on normalmente se utiliza un alfabeto
de smbolos (el alfabeto de las letras, los dgitos, las notas musicales...). El
alfabeto del ordenador solo tiene dos smbolos: 0 y 1.
Las razones de que solo se utilicen dos smbolos son:
1. Es m as f
acil trabajar con dispositivos de dos estados, que con dispositivos
de diez estados. Por ejemplo: los reles, las valvulas y los TRTs. Aunque
los TRTs tienen 4 modos de funcionamiento, tan s olo 2 de ellos (corte
y saturaci on) son los que se emplean en electr onica digital. Un estado
representa el 0 y el otro el 1. Adem as, la conmutaci on entre estos dos
estados ha de ser lo m as r
apida posible (en ruedas dentadas con 10
estados estas conmutaciones eran muy lentas).
2. El sistema binario tiene casi la mejor eficiencia de almacenamiento de la
informaci on.
Sea X codificado como un vector de dgitos

xn , xn1 , ..., x1 , x0 , x1 , ..., xm ,

teniendo en cuenta que:


a) b es la base o radix.
b) El rango
!n de cada dgito va desde 0 a b-1.
c) |x| = m xi b .i

d) Con n dgitos, se pueden representar N = b n n


umeros posibles.
e) Sea la magnitud E = nb = (ln N/ ln b) b, que expresa el coste
asociado a almacenar bn valores distintos usando una base b y un
vector de n dgitos.
El valor que minimiza E, es decir, la base que fuerza dE/db = 0 y
d2 E/d2 b > 0, es b = e. Como la base ha de ser un n umero entero y
2 < e < 3, la base de los computadores digitales es 2.
Los inconvenientes de esta eleccion son basicamente:
1. Cada vez que queremos comunicar algo al computador es necesario rea-
lizar una conversion al c
odigo binario, y viceversa.
2. A veces los n umeros binarios tienen una longitud excesiva, y las secuen-
cias pueden ser muy largas y engorrosas.
En un computador la informaci on se representa por medio de secuencias
binarias, las cuales se organizan en palabras. Se define una palabra como
16 FUNDAMENTOS DE LOS COMPUTADORES

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

mite identificar que posiciones de memoria contienen una instrucci


on y cu
ales
un dato.

2.2. DE LOS DATOS


REPRESENTACION

2.2.1. Datos Num


ericos
Los factores a tener en cuenta para representar numeros son:
1. el tipo de los n
umeros a representar (enteros, reales, etc)
2. el rango de numeros representables
3. on del dato numerico (n.o de n
la precisi umeros para un rango dado)
4. el coste HW requerido para almacenar y procesar los n umeros a repre-
sentar.

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

En principio hablaremos, en esta secci on, u


nicamente de n umeros
enteros, por lo tanto no encontraremos potencias negativas en el suma-
torio de la ultima ecuaci on (es decir el rango de posibles valores de i es
i = {0, 1, 2, ..., n}). Los n
umeros fraccionarios (reales) s tienen potencias
negativas de la base en el sumatorio.
Con este tipo de representaci on, el problema es que leer y escribir
largas cadenas de 1s y 0s es engorroso y una tarea propensa a cometer
errores. Como soluci on, se suele utilizar la base octal (b = 8) y la base
hexadecimal (b = 16). Como las dos bases son potencias de dos, las
conversiones son triviales.
18 FUNDAMENTOS DE LOS COMPUTADORES

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

HW que implementa el C2 se puede construir sin ning un su-


mador y por otra parte, normalmente no es necesario construir
el HW para el C2 explcitamente. Por ejemplo, para realizar la
resta, debemos sumar el C2 del sustraendo, pero en la imple-
mentacion sumamos el C1 del sustraendo poniendo adem as a
1 el carry de entrada del sumador, con lo que la operacion es
totalmente equivalente. Es decir:

A B A + C2(B) A + C1(B) + (Carry in = 1)

Como conclusi on, podemos decir que es la representaci


on m
as uti-
lizada a la hora de representar n
umeros enteros negativos.
2. Posicionales 2
No
a) BCD (decimal codificado en binario natural)
Cada dgito decimal se codifica por 4 bits binarios (16 valores po-
sibles). Ello da lugar a V16/10 = 2.9 1010 codigos BCDs posibles.
El codigo BCD m as utilizado es el BCD natural, en el que la co-
dificaci
on de cada dgito es equivalente a la codificaci on binaria.
Podramos decir que cada dgito se expresa mediante un nibble en
el que se utilizan los pesos 8,4,2,1; pero ademas la posici
on del nib-
ble esta pesada segun potencias de 10.
La ventaja de este tipo de representaci on, es que facilita al
hombre la comprensi on de los numeros representados. Adem as,
la conversi
on de numeros decimales a BCD es m as rapida que
la conversi
on a binario.
Como gran inconveniente, la eficiencia de almacenamiento de-
crece en 10/16 veces respecto de la eficiencia de almacenamien-
to en binario. Ello es debido a que de los posibles 16 n umeros
que podemos representar en binario con 4 bits, en BCD s olo
representamos 10 (del 0 al 9). Adem as, con este tipo de co-
dificaci
on se ocupa m as memoria, y las operaciones son m as
lentas.
Como conclusi on, este tipo de codificacion es beneficiosa cuando
las operaciones de entrada/salida dominan a las de computaci on
(aunque no suele ser as).
b) EXCESO A 3
2
En un sentido estricto los c
odigos comentados bajo este epgrafe no son posicionales ya
que el valor del n
umero no se puede calcular directamente a partir de la ecuaci
on 2.1
CAPITULO 2: REPRESENTACION
DE LA INFORMACION
21

Es otro BCD construido a partir del BCD natural al que se le suma


3 a cada dgito. Como ventaja, es m as c
omodo hacer operaciones
aritmeticas, ya que es autocomplementario, puesto que la represen-
taci
on negativa es igual al C9 del n umero decimal que representa.
c) AIKEN
Es otro c odigo BCD en el que los pesos dentro de cada nibble son
1, 2, 4, 2 en vez de 1, 2, 4, 8. Es autocomplementario.
d) GRAY
No es un c odigo BCD. Tambien se conoce con el nombre de binario
reflejado. Los codigos de dos enteros consecutivos difieren en un
s
olo bit. Adem as es cclico.

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

En esta representaci on, el punto decimal flota, es decir, cambia de


posicion dependiendo del exponente. Como en el computador la repre-
sentacion ha de ser u nica, se requiere una representaci on normalizada.
En principio podemos considerar la representaci on normalizada como
aquella que sit ua el dgito mas significativo distinto de cero a la derecha
del punto.
Antes de entrar en detalle sobre distintos tipos de representaci on en
punto flotante, y para dar una perspectiva hist orica sobre este aspecto,
veamos que pensaba von Neumann acerca de la representaci on en punto
flotante: von Neumann deca que los prop ositos del punto flotante pa-
recan ser, por un lado, retener tantos dgitos significativos como fuera
posible y, por otro, obviar los factores de escala. Pero seg un su pun-
to de vista, opinaba que estas ventajas eran ilusorias por las siguientes
razones:
el tiempo que lleva programar el escalado es menor que el tiempo
para programar la operaci on completa (se puede decir que despre-
ciable en aquella epoca).
adem as, en vez de reservar un campo para representar el exponente,
sera conveniente utilizar los bits de ese campo para ampliar la
mantisa, consiguiendo as m as precisi
on.
los numeros flotantes no s olo ocuparan m as memoria, sino que
adem as necesitan una l ogica (HW) m as costosa y compleja.
La experiencia y la historia han demostrado que von Neumann se
equivoc o. Hay que tener en cuenta que para los antiguos dise nadores de
computadores era preferible ahorrar memoria y tiempo de ejecuci on a
ahorrar tiempo de programaci on.
Existe una gran cantidad de formatos en punto flotante, en cada uno
de los cuales se especifican el n umero de bits para la mantisa, el n umero
de bits para el exponente, la base, el convenio de normalizaci on, etc.
Nosotros veremos dos posibilidades:
a) Formato IEEE 754
b) Formato del IBM/360
CAPITULO 2: REPRESENTACION
DE LA INFORMACION
23

A) FORMATO PUNTO FLOTANTE IEEE 754


Hasta 1985 los formatos en punto flotante cambiaban de una familia
de computadoras a la siguiente. Ello daba lugar a gran cantidad de pro-
blemas para los analistas numericos que no podan portar sus programas
de unas maquinas a otras, as como para los arquitectos de computadores
que no saban que formato implementar y mejorar. Para evitar estos pro-
blemas se adopta un formato est andar para n umeros en punto flotante
de 32 y 64 bits, el denominado IE 3 754.
A-1) Formato IE 3 754 simple precisi
on (32 bits)
La palabra de 32 bits se organiza en los siguientes campos:
1 bit para el signo (S)
8 bits para la caracterstica (C)
23 bits para la mantisa (M)
Puesto que la base es 2, el n
umero representado es:

N = (1)S (1.M ) 2C127

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.

0 ... 0.25 0.5 1 2 1.9999x2127


C=0 C=125C=126 C=127 C=128 C=254

Figura 2.1: Recta real y comportamiento de la caracterstica

De manera que el comportamiento de la caracterstica y del


exponente es el siguiente (suponiendo una mantisa 1.0):

C > 127 E>0 N


umero > 1
C = 127 E=0 N
umero = 1
C < 127 E<0 N
umero < 1
C =0 N
umero = 0
CAPITULO 2: REPRESENTACION
DE LA INFORMACION
25

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

Pero ahora la base es 16, el exponente en exceso 64 y no existen


casos especiales. Por tanto, el n
umero representado vendr
a dado por la
siguiente expresi
on:
N = (1)S (0.M ) 16C64
Para que el exponente crezca o decrezca una unidad, los desplaza-
mientos seran de 4 bits. El n
umero estar
a normalizado cuando el primer
dgito hexadecimal a la derecha de la coma sea distinto de 0. Ello
dara lugar a que desde el punto de vista binario (que ser a como se al-
macene finalmente el n umero), algunos numeros no esten normalizados,
porque puede haber hasta tres 0s a la derecha de la coma. De esta forma
se pierde precisi
on. La ventaja de esta representaci on, es que el rango
representado aumenta.

2.2.4. Datos No Num


ericos. Caracteres
El objetivo es codificar 26 letras may usculas y min usculas, 10 dgitos, signos
de puntuaci on y algunos caracteres especiales (smbolos matem aticos, letras
griegas..). Tambien es necesario representar caracteres de control tales como
CR (Carriage Return), BS (Back Space), Del (Delete), etc, y caracteres de
transmision como ACK (Acknowledge), NAK (No Acknowledge), EOT (End
Of Transmision), ETB (End of Transmision of Block), etc.
Para codificar estos caracteres, se emplean:
6 bits. Da lugar a 64 caracteres distintos. Son pocos.
7 bits. Da lugar a 128 caracteres. Uno de los codigos mas estandares de 7
bits es el conocido como ASCII (American Standard Code for Informa-
tion Interchange). En la tabla 2.1 encontramos los 128 caracteres ASCII
con su codificaci
on en octal.
8 bits. Da lugar a 256 caracteres. Un c odigo de 8 bits definido por IBM
es el EBCDIC. En la tabla 2.2 tenemos el c odigo EBCDIC completo. En
esta tabla los bits 0-3 son los m
as significativos (por ejemplo, la letra D
se codifica 1100 0100).
En muchas m aquinas se extiende el ASCII a 8 bits, pero s
olo son estandares
los primeros 128 caracteres.

2.3. DE LAS INSTRUCCIONES


REPRESENTACION

Trataremos, en esta secci


on, que convenios se utilizan para representar e inter-
pretar las instrucciones en un computador. Es decir, cada computador tiene
CAPITULO 2: REPRESENTACION
DE LA INFORMACION
27

0 NULL Nulo 20 DLE Escape de transmision


1 SOH Comienzo de cabecera 21 DC1 Mando aparato aux. 1
2 STX Comienzo del texto 22 DC2 Mando aparato aux. 2
3 ETX Fin del texto 23 DC3 Mando aparato aux. 3
4 EOT Fin de la comunicacion 24 DC4 Mando aparato aux.4
5 ENQ Pregunta 25 NAK Acuse recibo negativo
6 ACK Acuse de recibo 26 SYN Sincronizaci
on
7 BEL Timbre 27 ETB Fin bloque transmitido
10 BS Retroceso 30 CAN Anulacion
11 HT Tabulacion horizontal 31 EM Fin del soporte
12 LF Cambio de rengl on 32 SUB Sustituci
on
13 VT Tabulacion vertical 33 ESC Escape
14 FF Present. formulario 34 FS Separador archivo
15 CR Retroceso del carro 35 GS Separador grupo
16 SO Fuera de codigo 36 RS Separador artculo
17 SI En c
odigo 37 US Separador subartculo

40 Espacio 60 0 100 @ 120 P 140 160 p


41 ! 61 1 101 A 121 Q 141 a 161 q
42 62 2 102 B 122 R 142 b 162 r
43 # 63 3 103 C 123 S 143 c 163 s
44 $ 64 4 104 D 124 T 144 d 164 t
45 % 65 5 105 E 125 U 145 e 165 u
46 & 66 6 106 F 126 V 146 f 166 v
47 67 7 107 G 127 W 147 g 167 w
50 ( 70 8 110 H 130 X 150 h 170 x
51 ) 71 9 111 I 131 Y 151 i 171 y
52 * 72 : 112 J 132 Z 152 j 172 z
53 + 73 ; 113 K 133 [ 153 k 173 {
54 , 74 < 114 L 134 \ 154 l 174 |
55 - 75 = 115 M 135 ] 155 m 175 }
56 . 76 > 116 N 136 156 n 176
57 / 77 ? 117 O 137 157 o 177 Del

Tabla 2.1: C
odigo de caracteres ASCII en octal

un conjunto de instrucciones, y este debe ser codificado de alguna manera me-


diante cadenas de unos y ceros. Pero adem as, como vimos en el captulo 1, las
instrucciones deben especificar, no solo el c
odigo de operacion, sino tambien
los operandos.

2.3.1. Formatos de instrucciones. Introducci


on
El formato de las instrucciones es el modo en que organizamos una cadena de
1s y 0s para que nos de informaci
on tanto del c
odigo de operaci
on como de los
operandos. Dentro de esa cadena de 1s y 0s debe existir, por tanto, un campo
que llamaremos C.O. (c odigo de operaci
on) con el suficiente n
umero de bits
para poder codificar todos los posibles c odigos de operacion. Adem as, deben
28 FUNDAMENTOS DE LOS COMPUTADORES

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)

existir campos adicionales para especificar el numero de operandos necesarios.


Entenderemos por operandos tanto los datos a la entrada (argumentos de la
operacion) como a la salida (resultados de la operaci on).
En funcion de los modos de direccionamiento (como veremos en el siguiente
epgrafe) en el campo operando podemos almacenar directamente el dato con
el que vamos a operar; o la direcci on de memoria donde se encuentra el dato;
o el registro del procesador donde est a el dato, etc.
Uno de los problemas que podemos encontrar al dise nar el formato de las
instrucciones, aparece si estas instrucciones operan sobre una gran cantidad
de operandos, digamos n. En ese caso, el formato de la instrucci on tendr
an
campos operando y, por tanto, necesitaremos bastantes bits para codificar
las instrucciones. Si queremos que las instrucciones no ocupen tanta memoria
podemos hacer los siguiente: vamos a especificar de forma explcita m operan-
dos (donde m < n) y los n m operandos restantes que espera la instrucci on,
deben ser colocados en ciertos registros predeterminados. De esta forma, el
numero de campos operando del formato de la instrucci on se ve reducido de
n a m.
CAPITULO 2: REPRESENTACION
DE LA INFORMACION
29

2.3.2. Modos de direccionamiento


Existen diversas formas de especificar los operandos en una instrucci
on. A estas
distintas formas se les denomina modos de direccionamiento. Los tres modos
de direccionamiento b asicos son el inmediato, directo e indirecto. Vamos a
comentar estos tres modos de direccionamiento para la misma instrucci on: por
ejemplo, la instrucci
on LOAD operando cuya misi on es cargar el operando
en un registro que llamaremos acumulador o AC.
1. Direccionamiento inmediato
Si el operando es una constante, podemos especificarlo directamente
en la instrucci
on.
Ej.: LOAD x en el acumulador se cargar a el n
umero x.
2. Direccionamiento directo
No siempre trabajamos con constantes. En los programas se sue-
le trabajar con variables, que son aquellos datos cuyo valor vara en
el transcurso de la ejecucion del programa. La implementaci on de una
variable en el nivel maquina se traduce en reservar una zona de alma-
cenamiento fija donde se guarda el dato (por ejemplo, una posici on de
memoria o un registro -que es m as r
apido-).
Cuando hacemos referencia a una variable, utilizaremos el direccio-
namiento directo. Es decir, el campo operando nos proporcionar a la
direcci
on de memoria (o el registro en su caso) donde se encuentra el
dato con el que queremos operar.
Ej.: LOAD [x] trata x como la direcci on de memoria donde est a el
valor que se quiere cargar en el acumulador.
Diremos que el direccionamiento es directo a memoria si especifi-
camos la direccion de memoria donde est a el operando. Diremos que el
direccionamiento es directo a registro si especificamos el registro en
el que se encuentra el operando.
El direccionamiento directo a registro es evidentemente m as r
apido
que el direccionamiento directo a memoria. Pero, adem as, el n
umero de
bits del campo operando ser a menor con el direccionamiento a registro,
ya que hay menos registros que posiciones de memoria y, por tanto, los
registros se direccionan con pocos bits.
3. Direccionamiento indirecto
A veces no trabajamos con variables, sino con punteros a variables.
Un puntero no es m as que otra variable que contiene la direccion de me-
moria donde se encuentra almacenada una variable. El direccionamiento
indirecto nos permite trabajar con punteros.
30 FUNDAMENTOS DE LOS COMPUTADORES

Ej.: LOAD [[x]] trata x como la direcci on de memoria donde est a la


direccion del operando3 .
Diremos que el direccionamiento es indirecto a memoria si espe-
cificamos la direccion de memoria donde est a la direcci
on del operando.
Diremos que el direccionamiento es indirecto a registro si especifica-
mos el registro donde est a la direcci
on del operando.
El modo de direccionamiento puede estar indicado de forma implci-
ta en el codigo de operaci on o de forma explcita mediante un campo
adicional. Evidentemente, tambien se debe especificar de alguna forma
(mediante un campo adicional en el formato de instrucci on o de forma
implcita en el C.O.) si el direccionamiento es a registro o es a memoria.
Como es facil suponer, el principal inconveniente del direccionamien-
to indirecto es su lentitud, ya que necesita un primer acceso (a memoria o
a registro) para conseguir la direccion del operando, y un segundo acceso
a memoria para conseguir el operando en s.

2.3.3. Modificaciones sobre los modos de direccionamiento


Llamaremos a partir de ahora direcci on efectiva a la direccion en la que se
encuentra el operando. En general, podemos decir que los distintos tipos de
direccionamiento se distinguen unos de otros en el modo en que se calcula la
direcci
on efectiva (es decir, en el modo en el que se determina donde est a el
operando).
Sobre los tres modos de direccionamiento b asicos vistos anteriormente,
podemos definir algunas variaciones y combinaciones como las que veremos
ahora:
1. El direccionamiento directo a memoria puede ser:
Direccionamiento absoluto: el campo operando proporciona la di-
recci
on completa del operando en memoria. Para especificar la di-
recci
on completa necesitamos que el campo operando tenga un
numero de bits igual al del bus de direcciones. Es decir, el tama
no de
las instrucciones que utilizan direccionamiento absoluto es grande.
Direccionamiento relativo: el campo operando contiene un des-
plazamiento respecto una posici on conocida (direcci on base) que
almacenamos en un registro determinado (registro base, registro
3
Modificamos la sintaxis de la instrucci
on (de LOAD a LOAD[[...]]) para indicar que uti-
liza direccionamiento indirecto. Es decir, el c
odigo de operaci
on de la instrucci
on LOAD[[...]]
debe ser distinto al de la instrucci
on LOAD, y para hacerselo notar al ensamblador utiliza-
remos esta sintaxis.
CAPITULO 2: REPRESENTACION
DE LA INFORMACION
31

de direccion, contador de programa, etc). El direccionamiento re-


lativo al Contador de Programa (PC), se emplea cuando los datos
est
an cerca de la instrucci on que se esta ejecutando. En este ti-
po de direccionamiento la direcci on efectiva se calcula sumando el
desplazamiento a la direccion base.
Ventajas del direccionamiento relativo:
Se reduce la longitud de la instruccion.
Podemos mover o relocalizar un bloque de memoria en otra zona.
Por ejemplo, un programa donde s olo se utilice direccionamiento
relativo al PC funcionar a de la misma forma independientemente
de cual sea la direcci
on inicial en la que este cargado el programa.
Otro ejemplo lo podemos encontrar en el manejo de vectores: si que-
remos realizar una misma secuencia de accesos sobre dos vectores
almacenados a partir de dos posiciones distintas de memoria, pode-
mos escribir un codigo que realice esa secuencia de accesos relativa
al comienzo de un vector y, posteriormente, repetir la ejecuci on del
mismo c odigo modificando unicamente la direcci on de comienzo del
vector. En este caso, llamaremos direcci on base a la direcci on de
comienzo del vector, y registro base al registro que almacena la
direcci
on base. A este tipo de direccionamiento se le conoce con el
nombre de direccionamiento relativo a base.
Facilita el acceso secuencial a zonas de almacenamiento consecuti-
vo (vectores, matrices y arrays en general). Este tipo de acceso se
consigue utilizando una constante que apunta al comienzo de un
vector, a la que se suma el contenido de un registro (que llamare-
mos registro ndice). El registro ndice especifica que ndice del
vector es el que va a ser accedido. A este tipo de direccionamiento
se le conoce con el nombre de direccionamiento indexado. Un
caso particular del direccionamiento indexado es el direccionamien-
to autoindexado. En este modo, el registro ndice se incrementa
o decrementa (dependiendo de como lo especifique el programador)
autom aticamente despues de cada acceso. Los dos modos b asicos
de direccionamiento autoindexado son:
con postincremento: el registro ndice se autoincrementa des-
pues del acceso al operando.
con predecremento: el registro ndice se autodecrementa an-
tes del acceso al operando.
Inconvenientes del direccionamiento relativo:
32 FUNDAMENTOS DE LOS COMPUTADORES

Aumento de los circuitos l ogicos para calcular la direcci


on efectiva,
lo que supone mayor coste.
Aumento del tiempo de c alculo de la direcci
on efectiva.
2. Direccionamiento de Pila
En ciertas ocasiones resulta u til emplear la memoria principal como
si fuese una pila. Una pila es una estructura LIFO: los datos est an
accesibles s
olo en el tope de la pila. La pila se direcciona implcitamente
mediante el SP (Stack Pointer). El SP siempre apunta a la ultima po-
sici
on llena de la pila. Las instrucciones asociadas a una estructura pila
utilizan el direccionamiento de pila. Estas instrucciones son:
PUSH mete un dato en la pila
POP saca un dato de la pila

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.

2.3.6. Tipos de instrucciones


No olvidemos que aunque programemos en alto nivel, las m aquinas no entien-
den directamente estos lenguajes, sino que ejecutan instrucciones m aquina.
Es necesario un compilador para que traduzca cada sentencia de alto nivel en
instrucciones de c
odigo m
aquina. Elegir un conjunto de instrucciones apropia-
34 FUNDAMENTOS DE LOS COMPUTADORES

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

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 n umero 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.
2. Es posible dise nar un c odigo 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,
b) 255 instrucciones con un registro,
c) 16 instrucciones con cero registros
3. Cierta m aquina tiene instrucciones de 16 bits y direcciones de 6. Algunas
instrucciones tienen una direcci on y otras dos. Si hay n instrucciones
de dos direcciones, cu al es el n
umero m aximo de instrucciones de una
direccion?
4. Queremos dise nar el formato de instrucciones de un procesador con 16
registros internos, y que puede direccionar 1 Kbyte de memoria. Dentro
del conjunto de instrucciones encontramos las siguientes:
a) 15 instrucciones del tipo:
Codigo de Op. Desp, Direcci on, Direcci
on
b) 63 instrucciones del tipo:
Codigo de Op. Desp, Direcci on, Registro
c) 60 instrucciones del tipo:
Codigo de Op. Direcci on, Registro
d) 15 instrucciones del tipo:
Codigo de Op. Registro, Registro, Registro
e) 16 instrucciones del tipo:
Codigo de Op.
Donde el campo desplazamiento (Desp) nos permite implementar el
direccionamiento relativo, desplaz andonos como m aximo 63 bytes res-
pecto de la direcci
on base apuntada por la primera Direcci on. El despla-
zamiento siempre ser a positivo.
Se pide:
38 FUNDAMENTOS DE LOS COMPUTADORES

a) Decir de cu antas direcciones es cada tipo de instrucciones (0, 1, 2


o 3).
b) Dise nar el formato de cada tipo de instrucciones mediante c odigos
de operacion con extension.
5. Dados los contenidos de las celdas de memoria que siguen y una m aquina
de una direcci on con un acumulador, que valores cargan en el acumu-
lador las instrucciones siguientes?
la palabra 20 contiene 40
la palabra 30 contiene 50
la palabra 40 contiene 60
la palabra 50 contiene 70
a) LOAD 20
b) LOAD [20]
c) LOAD [[20]]
d) LOAD 30
e) LOAD [30]
f) LOAD [[30]]
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?
3
Procesador Central

OBJETIVOS

Estudiar a nivel RTL la arquitectura del procesador central


Introducir los conceptos de subrutina, interrupciones y segmentaci
on o
pipeline
Dar unos primeros pasos en el campo del lenguaje ensamblador
CAPITULO 3: PROCESADOR CENTRAL 41

3.1.
INTRODUCCION.
ESTRUCTURA BASICA DE UN PRO-
CESADOR

Volvamos por un momento a la estructura de la m aquina de von Neumann,


reorganizando ahora las unidades del computador desde un punto de vista m
as
moderno, como el presentado en la figura 3.1.
Unidad de CPU
Control

Unidad de
MEMORIA
Control

Entrada ALU Salida

Datos Control

Datos
Unidad de
Memoria Direcciones
Instrucciones Procesamiento
E/S

Figura 3.1: Unidades del computador

Como vemos, el computador se compone de los siguientes m odulos:


1. Unidad Central de Proceso (UCP o CPU). Compuesta por una
unidad de control y otra de procesamiento (ALU m as registros). Nor-
malmente se construye sobre una pastilla de silicio que llamaremos pro-
cesador o microprocesador (P ).
2. Memoria. Subsistema en el que residen los programas y los datos. Este
subsistema se organiza en varios niveles conformando lo que se cono-
ce con el nombre de jerarqua de memoria: cache, memoria principal y
memoria secundaria (disco duro).
3. Unidad de Entrada/Salida. Mediante la cual se controla la entrada
y salida de informacion. Gestiona el manejo de perifericos en general:
teclado, monitor, impresora, raton, etc.
Estas tres unidades se encuentran interconectadas mediante buses de co-
municacion. Estos buses, no son m as que lneas que transportan informacion
binaria entre los diversos subsistemas. Los podemos clasificar en funci on del
tipo de informacion que llevan:
Bus de direcciones. Mediante el cual la CPU selecciona la posici on de me-
moria o la unidad de E/S de la cual va leer informaci
on o en la cual va a
42 FUNDAMENTOS DE LOS COMPUTADORES

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.

3.1.1. Caractersticas principales del procesador


1. Longitud de palabra.
Definida por el n.o de bits del bus de datos, bus de direcciones, ta-
mano de los registros o por el n.o de bits con que la ALU puede operar en
paralelo. En los procesadores modernos la longitud de palabra impone
un limite m aximo al rango de direccionamiento de memoria.
Normalmente los registros de la m aquina tienen la misma anchura,
pero no tiene porque ser as. Por ejemplo, el 68000 de Motorola tiene
registros de 32 bits, pero tiene un bus de datos de 16 bits. El Intel 8088
tiene registros de 16 bits y un bus de 8 bits.
De cualquier modo, el que la longitud de palabra sea 32 bits (por
ejemplo), no quiere decir que toda la informaci on en este P particular
ocupe 32 bits. Es decir, podemos codificar caracteres con 8 bits, codigos
de operacion con 16 bits y numeros en punto flotante de doble precision
con 64 bits.
En general nos referiremos con longitud de palabra del procesador al
CAPITULO 3: PROCESADOR CENTRAL 43

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

CISC (Complex Instruction Set Computer) y RISC (Reduced Ins-


truction Set Computer). Con relaci on a este parametro se utiliza
la metrica MIPS (millones de instrucciones por segundo) que viene
definida como:
NI
M IP S = 106
TCP U
La principal ventaja de los MIPS es que son f aciles de comprender.
Sin embargo, son dependientes del repertorio de instrucciones, pues
a mayor complejidad de las instrucciones m aquina de un procesa-
dor, menor n umero de MIPS producir a un programa concreto, sin
que eso indique que el programa se esta ejecutando m as lentamente.
b) Operaciones que puede realizar la ALU (aritmetica entera, BCD,
formato en punto flotante de simple o doble precisi on, divisi
on y
multiplicaci
on por HW o por SW, etc...). Los MFLOPS o millo-
nes de operaciones en punto flotante por segundo (del ingles Mi-
llion of FLoating-point Operations Per Second), caracteriza la velo-
cidad de la unidad en punto flotante y por otro lado es una metrica
que esta basada en operaciones en lugar de instrucciones como los
MIPS.
4. Gesti on de memoria.
Se refiere a las caractersticas que posee el P en relaci on con la
gestion de memoria. Por ejemplo, si incluye HW para el manejo de cache,
si lleva un nivel de cache interno, si implementa una unidad de manejo
de memoria (MMU) para gestionar la memoria virtual, etc.
Los dos parametros principales que influyen en las prestaciones de
una memoria son su tama no en n umero de palabras y su latencia o
tiempo de respuesta expresado normalmente en nanosegundos (ns.). El
tama no aumenta la funcionalidad del sistema al permitir ejecutar apli-
caciones m as complejas, mientras que la latencia est a mas ligada a la
rapidez de ejecucion de los programas. El numero de bytes que la memo-
ria sea capaz de proporcionar por unidad de tiempo, es decir, su ancho
de banda vendr a dado como:

longitud de palabra de memoria


BW =
latencia
Capacidad y latencia son par ametros inversamente ligados con res-
pecto al precio, es decir, a mayor tamano, menor rapidez por el mismo
precio. Por ejemplo, las memorias cache actuales tienen un tamano de
CAPITULO 3: PROCESADOR CENTRAL 45

256-512 Kbytes y una latencia de unos pocos ns., la memoria principal


o RAM presenta un tama no de entre 16 y 128 Mbytes y una latencia
de decenas de ns., y la memoria secundaria o disco duro llega a varios
Gbytes, pero sube la latencia a los milisegundos.
5. Manejo de interrupciones y capacidad de interfaz.
Se refiere a las capacidades del P para relacionarse con otros dispo-
sitivos externos. Por ejemplo, como maneja las interrupciones, si soporta
dispositivos de acceso directo a memoria (DMA) para acelerar la trans-
ferencia de datos entre perifericos y memoria, etc.

3.2. SUBSISTEMAS DE DATOS Y DE CONTROL

Como hemos repetido en otras ocasiones, el procesador engloba las unidades


de control, de datos y los registros. En este apartado daremos una primera
introducci
on a estos tres bloques:

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

registro transparente al usuario, es decir, el usuario o el programador


no pueden acceder a ese registro y modificar su valor, sino que es un
registro que actualiza autom aticamente la secci
on de control del P.
4. Acumuladores: En muchos P hay uno (o varios) registros acumulador
(AC) en el que implcitamente hay un operando y donde se acumula
el resultado. En caso de no tener registro AC, podemos utilizar registros
de prop osito general.
5. Registro ndice y registro base: Pueden ser registros de direcciones
que se utilizan para el direccionamiento relativo a base (el registro base
contiene la direcci on base a cierta posici
on de memoria) o para el di-
reccionamiento indexado (el registro ndice va apuntando a las distintas
posiciones de una estructura de datos con almacenamiento consecutivo:
arrays, cadenas alfanumericas, etc).
6. Puntero de Pila (Stack Pointer -SP-): Puede ser un registro de
direcci
on que contiene el puntero a la posici on de la pila escrita m as
recientemente (la cima de la pila).
7. Registros temporales: Normalmente incluidos dentro del P para
guardar resultados intermedios de algunas operaciones (por ejemplo, la
instruccion XCHG, que intercambia el contenido de dos registros necesita
de un registro temporal para realizar el intercambio). Estos registros no
suelen ser accesibles por el usuario (son transparentes al usuario).
8. Registro de estado o de banderas (Flags Reg. o SR): Es un regis-
tro en el que cada bit o campo de bits tienen informaci on independiente,
normalmente relacionada con el resultado de las operaciones realizadas
en la ALU. A cada uno de esos bits independientes se le llama bandera
(flag) y se activan o desactivan en funcion de la ejecuci
on de ciertas ins-
trucciones. Estos flags son testeados o chequeados por otras instrucciones
para realizar saltos condicionales.
Los flags m as comunes son los siguientes:

a) Cero (Z): Se pone a 1 si el resultado de una operacion es 0.


b) Carry (C): Se pone a 1 si el resultado de una operacion provoca un
acarreo de salida.
c) Signo (S): Se pone a 1 si el resultado de una operaci
on es negativo.
d) Overflow (O): Se pone a 1 si el resultado de una operaci on se ha
salido del rango de valores representables.
e) Paridad (P): Se pone a 1 si el resultado de una operacion da lugar
a una palabra con un n umero par de 1s (o un n umero impar de
1s, dependiendo del convenio).
CAPITULO 3: PROCESADOR CENTRAL 47

Otros flags no son el resultado de realizar operaciones con datos, sino


que son activados o desactivados por el programador para obligar al P
a trabajar en uno de varios modos posibles:
a) Habilitaci on/Deshabilitaci on de interrupciones: El progra-
mador pone a 1 este flag si quiere permitir las interrupciones de
otros dispositivos. En caso de no aceptar interrupciones, estas pue-
den ser enmascaradas poniendo a 0 este flag.
b) Traza: A 1 habilita la ejecuci
on de instrucciones paso a paso (modo
de depuracion de programas).
c) Supervisor: A 1 el procesador trabaja en modo supervisor (modo
de alta prioridad en el que se pueden ejecutar instrucciones privi-
legiadas y no hay limitaciones en el acceso a datos -es el modo en
que trabaja el Sistema Operativo-). A 0 el procesador trabaja en el
modo normal o modo de usuario.

3.2.2. Unidad de Datos


Tambien llamada Secci on de Procesamiento, donde el m odulo principal es la
Unidad Aritmetico-L ogica. Este modulo (ALU) contiene la circuitera necesa-
ria para realizar las operaciones aritmeticas y l
ogicas. Normalmente la ALU
s
olo realiza operaciones enteras, por lo que tambien se la conoce con el nom-
bre de unidad entera para diferenciarla de la unidad en punto flotante o
FPU4 .
La unidad entera, tambien es la encargada de calcular la direcci
on efectiva
del operando (ya que en los direccionamientos relativos es necesario realizar
sumas o restas para determinar la direcci on del operando).
El numero de operaciones que puede realizar la ALU y la velocidad de
procesamiento dependen en gran medida de la cantidad de HW que utilicemos
para implementar las distintas funciones. Podemos abaratar costes en el desa-
rrollo de la ALU emulando ciertas operaciones mediante SW, de forma que no
sea necesario incluir un HW especfico para esas operaciones. Sin embargo, el
tiempo de ejecucion de estas instrucciones emuladas mediante SW es mayor.
Como vemos en la figura 3.2 la ALU se alimenta de los registros o de
memoria (a traves del bus de datos). La salida de la ALU tambien puede
almacenarse en registros o en memoria. Tambien debe existir una entrada de
control que indique a la ALU que operaci on debe realizar (en el caso de la
4
La FPU tambien puede estar incluida dentro del P o colocarse externamente como
coprocesador matem
atico.
48 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

Figura 3.2: Una posible Secci


on de Procesamiento

Como vemos en la figura 3.2, esta secci on de procesamiento tiene varios


puntos de control (de c1 a c11) que deben ser activados adecuadamen-
te para que el secuenciamiento de las operaciones de lugar a una ejecuci on
correcta de las instrucciones.
El modo particular en el que interconectamos los registros, la ALU, el
SR, etc, determina lo que llamaremos el flujo de datos (Data Path). Este
flujo de datos determina cu ales son los posibles caminos que puede tomar la
informacion durante su procesado.
CAPITULO 3: PROCESADOR CENTRAL 49

3.2.3. Unidad de Control


Tambien llamada Secci on de Control. Es la unidad que genera las se nales de
control que atacan los puntos de control de la secci on de procesamiento.
Por tanto, esta unidad debe tener la circuitera de control, temporizaci on, y
decodificaci
on de instrucciones.
En la figura 3.3 podemos ver un esquema a alto nivel de una secci on de
control. A partir del contenido del registro de instrucciones, la secci on de
control debe generar las se
nales de control para que se ejecute dicha instruccion
adecuadamente.
Despues del ciclo de b
usqueda (fetch), en el registro de instruccion encon-
traremos la instruccion que vamos a ejecutar. El c odigo de operaci on de esta
instrucci
on debe ser decodificado durante la fase de decodificaci on, de forma
que la secci
on de control interprete el objetivo de la instrucci
on en curso. Una
vez decodificada la instruccion, debemos ejecutarla generando de forma se-
cuencial las se
nales de control que activan las distintas funciones de la secci
on
de procesamiento.

RI C.O. MD Op 1 Op 2

DECOD

SECUENCIADOR CK

.....
c1 c2 c3 c4 c5 cn

Figura 3.3: Esquema a alto nivel de una secci


on de control

Para conseguir este objetivo, la secci


on de control contiene un decodificador
y un secuenciador (una m aquina de estados secuencial alimentada por una
50 FUNDAMENTOS DE LOS COMPUTADORES

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

Como hemos comentado en alguna otra ocasi on, la ejecuci


on autom atica de
un programa por un computador se lleva a cabo mediante el procesado de
las instrucciones contenidas en el programa. A su vez, la ejecuci on de estas
instrucciones se efect
ua por el uso repetitivo de ciertas operaciones del sistema,
a saber:
B
usqueda de instrucci on. El procesador busca en la posici on de memo-
ria apuntada por el registro PC una instrucci on que carga en el registro
RI.
Decodificaci
on. El C.O. de la instrucci on se analiza para determinar que
funci
on debe realizar la instrucci
on. En terminos m
as realistas, podemos
decir que el C.O. decodificado proporciona un estado inicial a la unidad
CAPITULO 3: PROCESADOR CENTRAL 51

de control, de forma que esta genere la informacion de control necesaria


para ejecutar esta instruccion en particular. Tambien en esta fase se
incrementa el PC para que apunte a la siguiente instrucci on a ejecutar.
C
alculo de la direcci on efectiva. En caso de que la instrucci on necesite
operandos almacenados en memoria, se determina la direcci on en la que
se encuentran dichos operandos: la direcci on efectiva o EA (efective ad-
dress).
B
usqueda de operandos. Acceso a memoria para leer los operandos de la
instrucci
on.
Ejecucion. Realizacion de la funcion especificada por la instrucci on. Una
vez concluida esta fase volvemos a la fase de b usqueda de la siguiente
instrucci
on.
Antes de entrar en este bucle de ejecuci
on de instrucciones hay que ini-
cializar el computador para ejecutar un determinado programa. Para ello el
sistema operativo debe:
1. Cargar el programa y los datos en memoria
2. Inicializar el PC para que apunte a la primera instrucci
on del programa
a ejecutar.
Llegados a este punto podemos formular las siguientes definiciones:
Ciclo de instrucci on. Tiempo necesario para leer y ejecutar una instruc-
ci
on. El ciclo de instrucci
on es mayor para instrucciones m as lentas y
menor para instrucciones m as r
apidas. Normalmente el ciclo de instruc-
ci
on se mide en ciclos de reloj. Por ejemplo, en el 8086 de Intel la ins-
trucci
on ADD necesita 3 ciclos de reloj para completarse; la instruccion
MUL necesita de 70 a 77 ciclos de reloj.
Ciclo m aquina. Subperiodos en que se divide un ciclo de instrucci on. Estos
subperiodos pueden necesitar tambien uno o varios ciclos de reloj. En el
tema siguiente veremos en detalle en que consiste el ciclo m
aquina.

3.3.1. Modos de secuenciamiento


Nos referiremos aqu a la secuencia en que se pueden ejecutar las instrucciones
dentro de un programa. B asicamente podemos distinguir cuatro modos:
1. Ejecuci on secuencial: Las instrucciones se ejecutan de forma secuen-
cial increment
andose el PC sin discontinuidades. Es decir, se ejecutan en
orden las instrucciones almacenadas consecutivamente en memoria.
2. Salto (transferencia de control): Mediante las instrucciones de salto el
PC se puede cargar con una direcci on distinta a la siguiente. De esta
52 FUNDAMENTOS DE LOS COMPUTADORES

forma se transfiere el control a otro punto del programa. El valor previo


del PC (antes del salto) se pierde al modificar el contenido de este.
3. Subrutina (transferencia de control): El valor del PC se modifica de
forma que se provoca una transferencia de control a otro punto del pro-
grama (donde comienza una subrutina). La diferencia con el salto estriba
en que el valor del PC (antes de su modificaci on) se salva en la pila.
Para llamar a la subrutina se utiliza la instrucci on call. La subrutina
termina con una instrucci on ret (de return) de forma que se recupera el
valor del PC almacenado en la pila y la ejecucion sigue por la instruccion
siguiente al call.
4. Interrupci on (transferencia de control): Mediante este modo tambien
se produce una transferencia de control a una subrutina (llamada aho-
ra subrutina de tratamiento de interrupci on), pero, en general, dicha
transferencia no la provoca el programador, sino que puede ocurrir en
cualquier momento de la ejecuci on del programa. Por tanto, en la pila
no debemos salvar u nicamente el PC, sino tambien el resto del estado
de la maquina (registro de estados, registros de proposito general, etc.).
Al terminar la rutina de tratamiento de interrupci on recuperamos el PC
y el estado de la maquina y contin ua la ejecuci
on del programa.

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

En general, podemos utilizar tantas unidades funcionales como subtareas


queramos ejecutar. Por ejemplo, podramos haber dedicado una unidad fun-
cional para cada una de las 5 fases: b
usqueda de instrucci
on, decodificaci
on,
c
alculo de la EA, b
usqueda de op. y ejecuci
on; de forma que, en el caso ideal,
el tiempo de ejecuci
on de un programa se divide por 5.

3.4. EJEMPLO: MICROPROCESADOR 8086

3.4.1. Caractersticas generales


El 8086 y 8088 son microprocesadores de Intel de prop osito general. Ambos son
practicamente identicos excepto por el tama no de su bus de datos externo. En
el caso del primero, el bus de datos es de 16 bits, mientras que en el segundo,
es de 8 bits. La raz on para crear el 8088 con este bus de datos reducido fue
prever la continuidad entre el 8086 y los antiguos procesadores de Intel (8085).
En este ejemplo nos centraremos en el 8086.
Resumen de las caractersticas:
Microprocesador de 16 bits (ancho del bus de datos)
Bus de direcciones de 20 bits (m axima memoria direccionable: 1 Me-
gaByte).
E/S no mapeada en memoria. El espacio de direcciones de E/S es inde-
pendiente del de memoria. Tama no del espacio de E/S es de 64Kbytes
Encapsulado de 40 pines. Algunas se nales multiplexadas.
Segmentaci on. Dos etapas: B.I.U (unidad de interfaz con el bus), que
realiza la b
usqueda (prefetch), y E.U (unidad de ejecuci on), que recoge
las instrucciones de la cola de la B.I.U. y las ejecuta.

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

Registros de segmento : Contienen la direcci on de comienzo de los segmen-


tos de memoria que conforman un programa.
CS o registro de segmento de c odigo. Contiene la direcci
on del segmento
donde est an las instrucciones del programa.
DS o registro de segmento de datos. Hace referencia al comienzo del
segmento de datos.
SS o registro de segmento de pila.
ES o registro del segmento extra. Se trata de un segmento que es utiliza-
do para efectuar transferencias entre los tres segmentos principales.
Punteros : Se utilizan para designar el desplazamiento actual dentro de un
segmento.
SP Puntero de pila.
BP Puntero base.
IP Puntero de instrucciones. Contiene el desplazamiento de la instruc-
ci
on siguiente a ejecutar respecto al segmento de c odigo del progra-
ma en ejecuci on.
Registros de ndice : Se utilizan como desplazamiento relativo a un campo
de datos.
SI Indice fuente.
DI Indice destino.
Registro de banderas (flags) : S olo 9 de los 16 bits son significativos.
Los flags registran el estado del procesador despues de una operaci on.
CF (Carry). Indica acarreo en las operaciones aritmeticas.
OF (Overflow). Desbordamiento aritmetico.
ZF (Zero). Se activa cuando el resultado de una operaci on es cero.
PF (Parity). N umero par de bits.
SF (Sign). Bit de signo del resultado.
AF (Auxiliar). Relativo al uso de n umeros en BCD.
Las banderas de control son tres. Registran el modo de funciona-
miento del procesador.
DF (Direction). Controla la direcci on (hacia delante o atr as) en las
operaciones con cadenas de caracteres, incrementando o decremen-
tando SI y DI.
IF (Interrupt). Controla la habilitaci on de las interrupciones.
TF (Trap). Controla la operaci on modo paso a paso.
CAPITULO 3: PROCESADOR CENTRAL 55

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

Este procesador sigue la regla el byte menos significativo ocupa la posici on


mas baja (Little Endian). As, si escribimos un dato en una posicion de me-
moria, dependiendo si es byte, word, doble word,... se ubica en memoria seg un
se esquematiza en la figura 3.4. La direcci on de un dato es la de su byte me-
56 FUNDAMENTOS DE LOS COMPUTADORES

nos significativo. La memoria siempre se referencia a nivel de byte, es decir,


si decimos la posici
on N nos estamos refiriendo al byte N -esimo de memoria,
aunque se escriba una palabra, doble palabra,...

N+3 N+3 N+3 12


N+2 N+2 N+2 34
N+1 N+1 12 N+1 56
N 12 N 34 N 78

MOV BYTE PTR LAB, 12H MOV WORD PTR LAB, 1234H MOV DWORD PTR LAB, 12345678H

EA(LAB)=N

Figura 3.4: Ubicaci


on de datos en memoria

Modos de direccionamiento

Direccionamiento inmediato: MOV AX,100H


Direccionamiento directo a registro: MOV AX,BX
Direccionamiento directo a memoria: MOV AX, [LABEL]
Direccionamientos indirectos a registro:
Direccionamiento relativo a registro ndice (SI,DI): MOV AX,[SI] ;
MOV AX,[SI-3]
Direccionamiento relativo a registro base (BX,BP): MOV AX,[BP+2]
Direccionamiento base-ndice con/sin desplazamiento:
MOV AX,5[BX+DI]; MOV AX,LABEL[BX][DI];
MOV AX,LABEL[BP+DI+5]
Direccionamiento de pila: PUSH AX; POP AX
Nota: En los modos de direccionamiento relativo a registro, el contenido
del registro es el desplazamiento de la direccion de memoria. El segmento de
la posici
on que esta referenciando es por defecto DS, salvo que el registro base
sea BP en cuyo caso el segmento es el contenido de SS. Tambien se puede
indicar explicitamente el semento, por ejemplo: MOV AX, SS:[BP]
CAPITULO 3: PROCESADOR CENTRAL 57

3.4.4. Sistema de interrupciones

Dicho sistema emplea interrupciones vectorizadas que se pueden activar bien


por hardware o software. Existen 256 interrupciones posibles (IN T 0...IN T 255).
Cada interrupci on tiene asociado un vector formado por 4 bytes, que recoge
la direcci
on de memoria donde se encuentra la rutina de tratamiento de dicha
interrupcion (CS:IP). Estos vectores de interrupci on forman una tabla que se
encuentra en la parte m as baja de la memoria, al comienzo de la RAM. En
total existen 256 vectores de interrupci on, de forma que la tabla de vectores
ocupa 2564 = 1Kb de memoria. La disposici on fsica del vector de interrup-
ci
on de la interrupci
on N es: [N 4 + 3, N 4 + 2] =CS, [N 4 + 1, N 4] =IP,
donde CS:IP es la direcci on de la rutina de atenci on a la interrupci on. (Con
[K + 1, K] denotamos el contenido de la palabra situada en la posici on K de
memoria). Como se acaba de ver, el vector de interrupci on de la IN T N , es
una doble palabra situada en la posici on fsica de memoria N 4.
Las fuentes de interrupcion en este procesador son:
- Lneas de interrupci on (hardware): INTR (interrupci on enmasca-
rable) y NMI (interrupci on no enmascarable). La interrupci on no en-
mascarable da lugar a la ejecuci
on de la interrupci on IN T 2. Si se quieren
atender m as de una interrupcion enmascarable (teclado, rat on, ...), se
ha de usar un controlador de interrupciones (PIC), por ejemplo el 8259.
- Interrupci on software: Invocada desde el programa con la instrucci on
INT N, siendo N el n umero de la interrrupci on a ejecutar.

El mecanismo de atenci on a una interrupci on sigue el siguiente esquema:


1. Cuando se activa la interrupci on, se debe guardar en la pila la direcci
on
de la instrucci
on que est
a ejecutando la CPU, para poder volver despues
a ella. Tambien se debe guardar el registro de estado, por si la rutina
modifica alguna de las banderas.
2. Se busca en la tabla de vectores de interrupci on la direcci
on donde se
encuentra la rutina que se debe ejecutar.
3. Se carga CS:IP con el contenido del vector de interrupci on asociado.
4. Se ejecuta la rutina de atenci on a la interrupci
on.
5. La ultima instrucci on de la rutina es IRET, que se encarga de restaurar
desde la pila CS, IP y el registro de banderas.
6. Se contin ua ejecutando el programa por la instrucci on siguiente a la que
se interrumpio.
58 FUNDAMENTOS DE LOS COMPUTADORES

3.4.5. Ensamblador del 8086


La principal caracterstica de un m odulo fuente en ensamblador es que existe
una clara separaci on entre las instrucciones y los datos. De hecho, un modulo
fuente esta formado por tres bloques independientes que se van a ubicar en
tres segmentos distintos en la memoria RAM.
La estructura m as general de un m odulo fuente es:
* Segmento de datos. En este bloque se definen todas las variables que
utiliza el programa con el objeto de reservar memoria para contener los
valores asignados.
* Segmento de c odigo. Este segmento incluye todas las instrucciones que
forman el programa. En un mismo m odulo fuente pueden existir mas de
un segmento de c odigo.
* Segmento de pila. La pila es un tipo de memoria auxiliar donde se al-
macenan datos temporalmente. Es una memoria de tipo LIFO y existe
un puntero que direcciona la cima de la pila. El segmento de pila indica
la direccion de memoria donde se posiciona la pila y reserva un n umero
determinado de posiciones consecutivas en memoria.
De estos tres segmentos, el u nico que obligatoriamente debe existir es el
segmento de c odigo.

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

Un m odulo fuente est a formado por instrucciones y directivas. Las instruc-


ciones son representaciones simb olicas del juego de instrucciones del procesa-
dor (c
odigo maquina). Las directivas indican al ensamblador cierta manera de
proceder a la hora de compilar, asi como para definir segmentos y reserva de
espacio en memoria (variables, pila...). Las instrucciones se aplican en tiempo
de ejecuci
on mientras que las directivas se aplican en tiempo de ensamblaje.
Una constante es un nombre simb olico al que se le asocia un valor, el cual
permanece invariable en el proceso de ejecuci on del programa. El ensamblador
permite varias formas de representaci on de las constantes. Los valores numeri-
cos pueden expresarse en base decimal (D), binaria (B), Hexadecimal (H) y
octal (O). Por defecto, la representaci
on se entiende que es decimal. As, 10,
10D, 1010B, 0AH, 12O representan al mismo valor numerico. Los caracteres
alfanumericos se representan encerrados entre comillas o bien expresando su
c
odigo ASCII.
Una etiqueta es un nombre simb olico que acompa na a una instruccion
o a una directiva en el m odulo fuente y equivale al valor de la direcci on de
memoria donde se encuentra esa instrucci on, es decir, la etiqueta apunta a
esa posici
on.

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

ser registros, direcci


on de memoria o bien valores inmediatos. En cualquiera
de los casos el tama no debe ser byte o palabra.
E1 campo comentario es opcional y debe comenzar con el car acter ; . Tam-
bien se puede especificar una lnea completa de comentario si comienza por ; .

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

7. ROL AX,n / ROR AX,n: Rotaci on de n bits a la izquierda/derecha


Instrucciones de transferencia de control. Se utilizan para controlar la
secuencia de ejecucion de las instrucciones del programa, tales como JMP,
JXX, JNXX, LOOP, CALL, RET:
1. JMP LABEL: Salto incondicional. Salta a la instrucci on etiquetada
con LABEL
(IP LABEL)
2. JXX y JNXX: Saltos condicionales:
JE/JNE: Salto si igual/no igual
JZ/JNZ: Salto si cero/no cero
JG/JL: Salto si mayor/menor
JGE/JLE: Salto si mayor-igual/menor-igual
JC/JNC: Salto si carry/no carry
JS/JNS: Salto si negativo/no negativo
JO/JNO: Salto si overflow/no overflow
3. LOOP LABEL: Equivalente a DEC CX + JNZ LABEL
4. CALL: Salto a subrutina
5. RET: Retorno de Subrutina
Directivas
Las directivas son expresiones que aparecen en el m odulo fuente e indican
al compilador que realice determinadas tareas en el proceso de compilaci on. El
uso de directivas es aplicable s
olo al entorno del compilador, por tanto varan
de un compilador a otro y para diferentes versiones de un mismo compilador.
Las directivas m as frecuentes en el ensamblador son:
Directivas de asignacion: Se utilizan para dar valores a las constantes o
reservar posiciones de memoria para las variables (con un posible valor
inicial). DB y DW son directivas que expresan al compilador que reserve
memoria para las variables indicadas. Por ejemplo,
VAR1 DW 5
VAR2 DB A
VAR3 DB 5 DUP (0)
VAR4 DW 2 DUP (5)

La directiva EQU es utilizada para asignar un valor a una constante.


BASE EQU 25

Directivas de segmento: La directiva ASSUME nos indica cual es el registro


de segmento que se usara para direccionar las etiquetas de un segmento
l
ogico definido por SEGMENT. Por ejemplo:
62 FUNDAMENTOS DE LOS COMPUTADORES

ASSUME CS:CODIGO, DS:DATOS, SS:PILA


Para indicar el comienzo y fin de un segmento l
ogico en un m
odulo
fuente se utilizan las directivas SEGMENT y ENDS. Un programa tpico
consta de las siguientes secciones:

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

Directiva de Fin de programa: La directiva END indica al compilador


d
onde termina el modulo fuente. Generalmente lleva a continuacion la
direcci
on de memoria en donde se encuentra la primera instrucci
on que
se debe ejecutar.

END INICIO

La palabra inicio es alguna etiqueta o el nombre de alg un proce-


dimiento en el cual se encuentra la primera instrucci
on a ejecutar en
nuestro programa.

Directivas de operando: Se aplican a los datos en tiempo de compilaci on.


Act
uan sobre los datos para obtener informaci on sobre ellos tales como
OFFSET, que devuelve el desplazamiento de una variable con respecto al
segmento en el que se encuentra. SEG devuelve el segmento en el que se
encuentra una variable. La directiva PTR modifica moment aneamente el
tamano de una variable para una asignaci on concreta.

MOV BX, OFFSET VAR1 ; BX <- Dir. de VAR1


MOV AX, SEG VAR1 ; AX <- Segmento de VAR1
INC BYTE PTR [DI] ; Considera el operando
; apuntado por DI de tama~
no BYTE

A ttulo ilustrativo se muestra un programa fuente con vistas a ser ejecu-


CAPITULO 3: PROCESADOR CENTRAL 63

tado en un entorno MS-DOS (las interrupciones se refieren a los servicios de


este sistema operativo).

CR EQU 13 ; Retorno de carro


LF EQU 10 ; Llena una linea
;-----------------------------------------------------
; Segmento de datos
DATOS SEGMENT
D1 DB 00H, 4CH
D2 DW 2H, 1234H
D3 DD ?
CADENA1 DB FUNDAMENTOS DE LOS COMPUTADORES,CR,LF,$
CADENA2 DB Dpto. Arquitectura de Computadores,CR,LF,$
DATOS ENDS
;-----------------------------------------------------
; Segmento de pila
PILA SEGMENT STACK
DB 512 DUP (?)
PILA ENDS
;-----------------------------------------------------
; Segmentos de codigo
CODIGO1 SEGMENT
ASSUME CS:CODIGO1, SS:PILA, DS:DATOS
INICIO: MOV AX,SEG DATOS
MOV DS,AX
; Escribir texto
CALL CERCANO
CALL FAR PTR ESCRIBIR
MOV AX,[D1]
FIN: INT 21H ; VOLVER AL DOS
CERCANO PROC
LEA DX,CADENA1
RET
CERCANO ENDP
CODIGO1 ENDS
;-----------------------------------------------------
CODIGO2 SEGMENT
ASSUME CS:CODIGO2
ESCRIBIR PROC FAR
PUSH AX ; Salva el registro AX en la pila
MOV AH,9H ; Funcion 9 del DOS
INT 21H ; Llamada a la interrupcion 21
POP AX ; Recupera registro AX
RET ; Vuelta al programa principal
ESCRIBIR ENDP
CODIGO2 ENDS
;-----------------------------------------------------
END INICIO
64 FUNDAMENTOS DE LOS COMPUTADORES

SINOPSIS

En este tema hemos profundizado un poco m as en el funcionamiento de un


procesador. Hemos descrito los Registros, la Secci on de Procesamiento y la
Secci
on de Control, a modo de introducci on para los dos siguientes temas. Por
otro, lado hemos visto los conceptos de subrutina, interrupci on y pipeline de
instrucciones. Por u
ltimo, se ha descrito un procesador comercial como el 8086
de Intel y hemos introducido as la programacion en ensamblador.
DE PROBLEMAS
RELACION 65

DE PROBLEMAS
RELACION

1. Para el numero 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
2. Como podras poner a 0 el registro AX si no dispones de una instrucci on
de BORRAR (CLEAR)?
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.
4. Tenemos 250 n umeros en C2 de 16 bits en las posiciones 500 a 998 de
memoria. Escribir un programa en ensamblador del 8086 que cuente los
numeros P 0 y N < 0 y que almacene P en la posici on 1000 de
memoria y N en la 1002.
5. 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.
6. Escribir un procedimiento en lenguaje ensamblador del 8086 que calcu-
le N! y lo almacene en la posici on de memoria 502. Supondremos que
1<N<255, que el n umero N est a en la posici
on 500 de memoria y que
N! cabe en un registro de 8 bits.
7. Escribir una subrutina en lenguaje ensamblador que convierta un entero
binario positivo (menor que 1000 y almacenado en la posici on 2000 de
memoria) a ASCII, guardando cada car acter a partir de la posici
on 3000
de memoria. Por ejemplo, el n umero 345 debe traducirse a los caracteres
ASCII 3, 4 y 5 (33H, 34H y 35H en hexadecimal respectivamente)
8. a) Escribe el diagrama de flujo y el programa en ensamblador del 8086
de Intel para el algoritmo que realiza la siguiente funci on:
Dada una tabla en la posici on 100 de memoria con 50 n ume-
ros de 16 bits en complemento a dos, multiplicar por 2 los
numeros pares y dividir por 2 los impares (divisi on entera),
dejando cada n umero modificado en la misma posici on de
la tabla en la que estaba. No utilizar las instrucciones MUL
y DIV. No considerar el caso de overflow al multiplicar por
dos.
66 FUNDAMENTOS DE LOS COMPUTADORES

b) Que diferencia hay entre los desplazamientos l ogicos y aritmeticos


a la derecha?
9. Escribe el diagrama de flujo y el programa en ensamblador del 8086 de
Intel para el algoritmo que realiza la siguiente funcion:
Dada una tabla en la posici on 500 de memoria con 50 n umeros
de 16 bits en complemento a dos, forzar a cero los n umeros ne-
gativos y multiplicar por tres los positivos, dejando cada numero
modificado en la misma posici on de la tabla en la que estaba. No
utilizar ninguna instrucci
on de multiplicar (MUL). No considerar
el caso de overflow al multiplicar por tres.
10. Suponga que el contenido de la memoria de un sistema basado en el
i8086 es el que se muestra en la tabla 3.1. El valor de los registros
es: DS=SS=E000H, SI=0001H, DI=0002H, BP=0003H, BX=0004H. Se
define as mismo una etiqueta TABLA, que apunta a la direcci on fsica
E0001H y que pertenece al segmento de datos.

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

Tabla 3.1: Programa que se analiza y contenido de la memoria

Para cada una de las instrucciones mostradas, determina como que-


dan afectados los registros correspondientes.
DE PROBLEMAS
RELACION 67

11. Sea el siguiente segmento de datos perteneciente a un programa escrito


para el i8086:
DATOS SEGMENT
I DB DEPARTAMENTO de ARQUITECTURA de COMPUTADORES
II DD 00200020H,1H
III DQ 0B
IV DB 1,2,3
V DW ?
DATOS ENDS
a) Suponiendo que la primera posici on fsica en memoria de dicho
segmento es la 43210H, calcule las posici ones fsicas y l
ogicas de
cada una de las etiquetas (variables) que componen el segmento.
b) Haga un esquema de c omo quedan almacenados en memoria los
datos.
12. El siguiente programa ensamblador para el i8086 fue ensamblado y eje-
cutado con exito:
LF EQU 10
CR EQU 13
A25 EQU 25h
A26 EQU 26h
LP EQU 512
DATOS SEGMENT
F DW 25
G DW 80
H DD ?
MUTEX DB 0
DATOS ENDS
PILA SEGMENT STACK
DB LP DUP (0)
PILA ENDS
CODIGO1 SEGMENT
ASSUME CS:CODIGO1, SS:PILA, DS:DATOS
INICIO:MOV AX,DATOS
MOV DS,AX
CALL FAR PTR FILL_INI
WW : CMP BYTE PTR [MUTEX],01H
IN MUTEX,3F8H
JNE WW
MOV AX,F
PUSH AX
MOV AX,G
PUSH AX
CALL FAR PTR FILL_IN
fin: MOV AH,4CH
INT 21H
68 FUNDAMENTOS DE LOS COMPUTADORES

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

PUSH AX MOV CL,CH


PUSH BX MOV CH,BH
ADD BH,AH ADD CH,AH
MOV CL,BH CMP CL,CH
POP BX JE FIN
FIN: POP AX FIN: ROL CX,08H
(a) (b)
b) No obstante ambos fragmentos no modifican de igual forma el indi-
cador de acarreo final CF. Suponiendo que AX=F0A0H, BX=0F70H,
CX=8001H, antes de la ejecuci on, calcula cuanto vale CF y los re-
gistros (en hexadecimal) AX, BX, CX al terminar la ejecuci on de
los dos c
odigos. Suponemos que s olo las instrucciones ROL y ADD
afectan potencialmente al bit de acarreo, en su ejecucion. 5 (Justifi-
car resultados)
AX=
BX=
CX=
CF(a)=
CF(b)=

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

Presentar una tecnica para el dise


no de una Secci
on de Control micro-
programada
Aprender a codificar microsubrutinas asociadas a instrucciones m
aquina
CAPITULO 4: SECCION
DE CONTROL 73

4.1.
INTRODUCCION. CONTROL CABLEADO VER-
SUS MICROPROGRAMADO

Como se ha visto en el captulo 3, la funci on de una secci on de control es


generar las se
nales necesarias para el funcionamiento del sistema en el estado
de control actual y para determinar cual es el siguiente estado de control. Estas
operaciones las realiza en funci
on del c
odigo de operaci on (C.O.) y el modo de
direccionamiento (MD) de la instrucci on que hay en el registro de instrucci on
(RI), cargada previamente desde la memoria principal.
Normalmente, la ejecuci on de una instrucci on simple causa m as de un
cambio de estado en el sistema computador, envi andose, para cada uno de
ellos, un grupo de senales de control a las unidades del sistema. Cada grupo
de senales causa la ejecucion de unas operaciones b asicas especficas (deno-
minadas microoperaciones), tal como la transferencia entre dos registros, el
desplazamiento de los contenidos de un registro, o la selecci on de la funci on
a realizar por la ALU. El siguiente grupo de se nales de control puede o no
depender de los resultados de la presente microoperaci on, o del estado de cier-
tos flags del sistema6 . De esta manera, la interpretaci on y ejecuci on de una
(macro)instrucci on da lugar a una secuencia de operaciones m aquina b asicas
(microoperaciones), cada una controlada por un grupo especfico de se nales de
control (o microinstruccion).
La tarea principal de la unidad de control ser a secuenciar las microopera-
ciones, estableciendo en cada ciclo el estado de control actual (y siguiente) y
generar las microinstrucciones precisas para la ejecuci on de la macroinstruc-
ci
on. Por consiguiente, la secci
on de control debe contener la l ogica necesaria
para el almacenamiento de la informaci on que identifica al estado de control
actual y la l
ogica de decision para la generaci on del identificador del estado
de control siguiente. El identificador de estado actual puede estar conectado
directamente a los puntos de control de la secci on de procesamiento, o, m as
habitualmente, ser transformado mediante una l ogica de decodificaci on en una
plantilla que activa las se
nales de control.
La unidad de control cableada, cuyo diagrama b asico de bloques se muestra
en la figura 4.1, est
a compuesta por un conjunto de dispositivos de almace-
namiento MSI (registros), para almacenar el estado de control actual y un
conjunto de bloques combinacionales MSI (decodificadores) y SSI (puertas
discretas), para generar el identificador de estado siguiente y las se nales de

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

control. Tpicamente, el dise


no de este dispositivo se hace mediante la apli-
caci
on de heursticos, de forma que, en principio, no existe una metodologa
precisa y concreta para su implementacion. Una seccion de control de este tipo
suele ser (salvo para sistemas muy simples) poco flexible y estructurada, de
forma que una modificaci on de su funci
on requiere normalmente el redise no
parcial o total de la unidad.

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

Figura 4.1: Unidad de control cableada

Frente a esta alternativa cl


asica, la unidad de control microprogramada,
cuyo diagrama de bloques se muestra en la figura 4.2, utiliza un bloque de
memoria LSI (ROM, PROM, PLA), llamado memoria microprograma.

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

Figura 4.2: Unidad de control microprogramada

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

Se desea disenar una unidad de control microprogramada para la secci on de


procesamiento elemental de la figura 4.3. Esta seccion est
a compuesta por re-
gistros de 8 bits (DR, AC, IR, PC, MAR), una ALU con operandos y resultado
de 8 bits, multiplexores y buses de 8 bits para interconectar estos elementos.

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)

AC C15 (right shift)

Figura 4.3: Una hipotetica secci


on de procesamiento elemental

Es importante aclarar que aunque existe un bloque de memoria RAM en


la figura, este no pertenece a la secci
on de procesamiento (sino a la unidad
de memoria del computador). En dicha memoria principal se almacenar an las
instrucciones y los datos que procesar a la secci
on de procesamiento.
Para simplificar el proceso de dise
no, las entradas de control de los diversos
componentes han sido abstradas por conmutadores conceptuales, numerados
CAPITULO 4: SECCION
DE CONTROL 77

del 0 al 16 (c0-c16), y situados en las puertas de entrada y salida de los


registros, estando cada conmutador controlado por una u nica lnea de control.
Un conmutador a la entrada de un registro la habilita cuando su lnea de
control pasa de 0 a 1 (es decir, es activo en flanco de subida) y permanece
activado s olo un breve intervalo de tiempo, suficiente para que el dato sea
almacenado en el registro. Un conmutador a la salida de un componente se
activa cuando su lnea de control pasa a valer 1 y permanece activado hasta
que la lnea vuelve a cero (es decir, es activo por nivel).
Aquellos registros que posean una salida conectada a un bus compartido
poseeran capacidad tri-estado en dicha salida; si por el contrario el bus le
est
a enteramente dedicado, la salida no poseer a esta capacidad.
El direccionamiento y acceso a memoria se realiza a traves de los registros
MAR y DR. El registro MAR posee una salida sin capacidad tri-estado, a
traves de la cual el contenido del registro MAR se usar a como direcci on a
acceder en la memoria. Por su parte, la entrada del registro DR est a controlada
por un multiplexor: si la lnea de control c6 est
a a 0, la entrada al registro DR
ser
a el contenido del bus de datos de la memoria; si, por el contrario, la lnea
c6 esta a 1, el registro DR recibir a la informacion contenida en el registro
AC. El registro MAR es denominado registro de direcci on de memoria,
mientras el registro DR se denomina registro de dato de memoria.
El punto de control c4 habilita el acceso a memoria. En lectura (c3=1),
deja el dato en el bus de datos mientras c4 esta a uno (nivel). En escritura
(c3=0), es en el flanco de bajada de c4 cuando se escribe el dato en la posici on
de memoria contenida en el registro MAR.
En la tabla 4.1 se sumariza la funci on de cada uno de los conmutadores
del diseno.
Los disenos como los de la figura 4.3 son mas un producto de la intuici on y
la experiencia que de la aplicacion de un conjunto preestablecido de principios
de diseno. Esto es, no existe una metodologa exacta que nos diga que, para un
conjunto de instrucciones dados y unos objetivos de rendimiento establecidos,
el dise
no de la seccion de procesamiento es la eleccion optima.
El siguiente paso del dise no consiste en conseguir que esta secci on de pro-
cesamiento haga algo u til. Para ello, crearemos una secci on de control mi-
croprogramada que, para cada instrucci on del conjunto de instrucciones del
procesador que estamos construyendo, genere una secuencia de conjuntos de
se
nales que, ordenadamente, vayan activando los puntos de control pertinentes.
Comenzaremos por introducir un registro de control (o registro de mi-
croinstruccion MicroRI), de 17 bits de anchura, en el que cada bit este co-
78 FUNDAMENTOS DE LOS COMPUTADORES

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)

Tabla 4.1: Funciones de los conmutadores de control

nectado a una u
nica lnea de control, tal como se muestra en la figura 4.4.

MicroRI

c0 c2 c3 c16

Figura 4.4: Registro de control

El problema ahora es el siguiente: colocar un valor en el registro de control,


desde donde? Una segunda consideraci on a tener en cuenta es que el poner un
u
nico valor no ser a suficiente; realmente necesitaremos un conjunto de valores
que vare en el tiempo, de manera que una secuencia preestablecida de valores
de control vaya apareciendo en el registro de control en intervalos peri odicos.
Para conseguir esto, ya imaginamos las dos alternativas b asicas:
Diseno de un dispositivo secuencial (m aquina de estados) formado por
puertas l ogicas, biestables, contadores, etc..., que dilucide en cada mo-
mento (en funci on del estado en el que se encuentre) que valor debe al-
macenarse en el registro de control y a que proximo estado debe cambiar.
Esta soluci on es la que ya habamos identificado en la secci on anterior
con el control cableado.
Ya que tenemos que definir una secuencia de valores de 17 bits a al-
macenar en el MicroRI, por que no almacenamos estos valores en otra
memoria (distinta de la memoria principal de la figura 4.3) y cada vez
que necesitemos una palabra de control (microinstrucci on) la leemos de
dicha memoria? Esta soluci on conduce al diseno de una seccion de con-
CAPITULO 4: SECCION
DE CONTROL 79

trol microprogramada como la de la figura 4.5.

Memoria
INC Contador de
Microprograma

CK

STORE
MicroRI

c0 c2 c3 c16

Figura 4.5: Secci


on de control microprogramado inicial

En la figura 4.6 vemos como el registro MicroRI se conecta a una Memoria


de Microprograma (tambien llamada memoria de control, micromemoria o
Mem.), direccionada por medio de un contador. El registro MicroRI tiene
una se nal Store (activa por flanco de subida). Por su parte, el contador tiene
una entrada INC, activa en una transici on de 0 a 1 (flanco de subida), que le
hara incrementar en uno su valor actual.
Evidentemente, ser a tambien necesario un reloj, CK, que permita realizar
la sincronizacion necesaria para ir leyendo peri odicamente las microinstruc-
ciones de la Memoria de Microprograma y almacen andolas en el MicroRI.
Inicialmente se considerar a un esquema de control muy simple, en el cual la
se
nal de reloj se conectara directamente a la entrada Store del registro MicroRI
y la misma se nal invertida atacar
a el punto de control del registro Contador,
como vemos en la figura 4.6. Por tanto, en cada flanco de subida del ciclo de
reloj, el contenido de la memoria apuntado por el registro Contador se cargara
en MicroRI y en el flanco de bajada se incrementar a el Contador.
Llegados a este punto daremos unas cuantas definiciones:
A este periodo de reloj se le denominar a tiempo del ciclo m aqui-
na y ser a el intervalo entre conjuntos sucesivos de se nales de control
suministradas a la seccion de procesamiento.
Cada palabra de 17 bits de la memoria de control recibe el nombre de mi-
croinstrucci on. Por consiguiente, una microinstruccion es un conjunto
de senales de control o especificaciones que controla el flujo de datos y
las funciones del dispositivo en la secci
on de procesamiento durante un
80 FUNDAMENTOS DE LOS COMPUTADORES

Memoria
INC
Contador de
Microprograma

17

STORE
MicroRI

c0 c2 c3 c16

CK

Figura 4.6: Secci


on de control microprogramado m
as detallada

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.

4.2.1. Caractersticas temporales


Un primer examen de la unidad de control dise nada, r
apidamente revela que el
sistema no funciona, debido a que no se ha tenido en cuenta la temporizaci on
en el uso de los recursos del procesador.
Un problema que se plantea es el hecho de que no hay ning un mecanismo
que garantice que las senales de control asociadas a interruptores activos por
flanco pasen a 0 tras haber tomado el valor 1 y, por tanto, que garantice
la aparici
on del flanco de activaci
on. Por ejemplo, si dos microinstrucciones
sucesivas son del tipo:
XXXXX XXXX1 XXXXX XX
XXXXX XXXX1 XXXXX XX
el 1 de la segunda microinstrucci
on no tendr
a ning
un efecto. Esto es debido
CAPITULO 4: SECCION
DE CONTROL 81

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

n-1 Microinstruccin n n+1 MicroRI

bit i Ci (nivel)

bit j Cj (flanco)

n n+1 MicroPC

Figura 4.7: Formas de onda de las se


nales en el tiempo

Escribiendo ciertas ecuaciones l


ogicas para los puntos de control del sis-
tema se puede dise nar un circuito que permita crear la secuencia descrita
anteriormente. Ello se consigue f
acilmente realizando una operaci
on AND de
los bits que corresponden a se
nales por flanco en MicroRI con CK tal como se
esquematiza en la figura 4.8.

4.2.2. Ejemplos de microprograma


Una vez solucionada la temporizacion del ciclo m
aquina, ya es posible ejecutar
en el procesador un pequeno microprograma. Veamos algunos ejemplos que nos
servir
an mas adelante en la microprogramaci on del conjunto de instrucciones
del procesador.

AC M em(DR) Carga de AC con el contenido de la posici on apun-


tada por DR. Para ello tenemos que llevar la direcci
on al registro MAR,
7
siempre que la microinstrucci
on anterior tenga c9=0
82 FUNDAMENTOS DE LOS COMPUTADORES

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

C7 C9 C11 C12 C13 C14 C15 C16

Figura 4.8: Esquema parcial de las conexiones de temporizaci


on

leer desde memoria en DR y de ah al registro AC.


c0 c4 c8 c12 c16
1.MAR <- DR 0000 0000 0100 0000 0 (activos: c9)
2.DR <- Mem(MAR) 0001 1001 0000 0000 0 (activos: c3,c4,c7)
3.AC <- DR 0000 0000 0001 0000 0 (activos: c11)

M em(DR) AC Cargar en la direcci on de memoria apuntada por DR


el contenido del acumulador AC. Como en el caso anterior la direcci
on
destino se guardara en MAR, el acumulador se guarda en DR y DR se
escribe en memoria.
c0 c4 c8 c12 c16
1.MAR <- DR 0000 0000 0100 0000 0 (activos: c9)
2.DR <- AC 0000 0011 0000 0000 0 (activos: c6,c7)
3.Mem(MAR) <- DR 0000 1100 0000 0000 0 (activos: c4,c5)

DR DR/2 Dividir el contenido de DR por dos. Para ello trasladamos


el contenido de DR a AC, desplazamos a la derecha AC y el contenido
de AC se volcara en DR.
c0 c4 c8 c12 c16
1.AC <- DR 0000 0000 0001 0000 0 (activos: c11)
2.Shift_Right(AC) 0000 0000 0000 0001 0 (activos: c15)
3.DR <- AC 0000 0011 0000 0000 0 (activos: c6,c7)
CAPITULO 4: SECCION
DE CONTROL 83

4.2.3. Capacidad de salto


Otro importante defecto del dise no, relacionado con el secuenciamiento de
la unidad de control, es la falta de capacidad de ramificaci on en el micro-
programa, que obliga a pasar secuencialmente por todas y cada una de las
microinstrucciones contenidas en la memoria de control. Un segundo proble-
ma de la unidad de control, es la ausencia de un mecanismo que permita tomar
decisiones en el microprograma, es decir, dar saltos condicionados al valor de
una o m as variables de estado de la seccion de procesamiento.
Ambos problemas expresan la necesidad de incluir alg un procedimiento
que permita la modificaci on, condicional o incondicional, del contenido del
contador de microprograma. En una aproximaci on simple, suponiendo que la
memoria de control tiene 64 palabras, se ampliar a la microinstrucci on con dos
campos m as. Uno de estos campos, al que se llamar a direccion de salto, tiene
6 bits, y su funcion es contener la direccion de una palabra de la memoria de
control. El otro campo, que llamaremos de Condici on de Salto (o CS) tiene
dos bits, con el siguiente significado:
00 Ejecuci on secuencial normal. El contador de secuencia se incrementa en
1 y la pr
oxima microinstrucci on a ejecutar es la inmediatamente siguiente
a la actual.
11 Salto incondicional. La direcci on de la siguiente microinstrucci on a eje-
cutar esta contenida en el campo direccion de salto de la microinstrucci on
en ejecucion. El contador se cargar a con el valor contenido en los 6 bits
de este campo.
01 Salto condicional asociado al acarreo de salida C de la ALU. Si este
acarreo de salida es 1, la microinstrucci on siguiente viene definida por
el campo de direcci on de salto como en el salto incondicional. En caso
contrario, la ejecuci
on sera secuencial (normal).
10 Salto condicional asociado a la salida Z de la ALU. Si el resultado a la
salida de la ALU es 0 (lnea Z a 1), la microinstrucci on siguiente viene
definida por el campo de direcci on de salto de la actual microinstrucci on
como en el salto incondicional. En caso contrario, la ejecuci on sera se-
cuencial (normal).
Para implementar esta capacidad de salto (condicional o incondicional) de
la secci
on de control podemos utilizar el hardware de la figura 4.9. Los bits
17 y 18 de la microinstrucci on forman la microfunci on de control de salto,
mientras los bits 19 a 24 constituyen el campo de la direcci on de salto.
Vemos como hemos ampliado la funcionalidad del Contador de micropro-
grama (MicroPC a partir de ahora), de forma que adem as de ser incrementado,
84 FUNDAMENTOS DE LOS COMPUTADORES

00
0 M
C 01
U
10
LOAD
MicroPC Memoria
Z X INC
de
1 11 1
Microprograma
c17 c18 CK

MicroRI Puntos de control CS Direcc. salto.

c0 c1 c16 2 6

c19...c24

Figura 4.9: Secci


on de control con capacidad de salto

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

sibilidades del sistema. A cambio, se incrementa sustancialmente el tama no


de la microinstruccion. En este sentido, el campo de direcci
on de salto resulta
especialmente costoso, pues sus 6 bits suponen un incremento de un 35 % en
la longitud de la palabra de control, y s
olo se emplea en unas pocas microins-
trucciones.
Como ejemplo microprogramemos la operaci on JZ DR: saltar a la direcci
on
apuntada por DR cuando Z=1, en caso contrario incrementar PC, esto es:
Si Z=1 P C DR si no P C P C + 1
microprograma
c0 c4 c8 c12 c16 c17 c19
c24
1.Si Z=1 goto 4 0000 0000 0000 0000 0 10 000
100
2.PC <- PC+1 0000 0000 0000 0100 0 00 000
000
3.goto 5 0000 0000 0000 0000 0 11 000
101
4.PC <- DR 0000 0000 0000 1000 0 00 000
000
5.siguiente
microinstrucci
on ...................................
En este ejemplo las operaciones de las microinstrucciones 2 y 3 se podan
haber realizado en una sola microinstrucci
on pero se ha hecho as por claridad.

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

Figura 4.10: Secci


on de control completa

be cargar desde el BUS MEM, con la instrucci on que ha seleccionado el PC


en memoria. El c odigo de operacion de la instrucci
on cargada en el IR debe
inicializar el MicroPC de forma que apunte a la primera microinstrucci on de
la microsubrutina asociada a dicho C.O. Para encontrar la direcci on de una
microrrutina a partir de su C.O. asociado, utilizaremos una tabla implemen-
tada mediante una ROM, (ROM de Proyecci on). Esta ROM contendr a en
la direcci
on indicada por el C.O. la direcci
on de la microrrutina asociada a di-
cha macroinstrucci on. Por ejemplo, si el c
odigo de operaci on de la instrucci
on
ADD es 25 y tiene asociada una microrrutina que est a en la direcci
on 97 de
la Memoria de Microprograma, la posici on 25 de la ROM de proyecci on debe
contener un 97.
Dado que el MicroPC es cargado algunas veces con la direcci on que viene
de la ROM de Proyecci on y otras veces con la que viene del campo Direcci on
del MicroRI, utilizaremos el multiplexor MUX2 para seleccionar cu al de las
direcciones sera la que actualice el MicroPC. Ello implica a nadir un nuevo
punto de control que denominaremos bit de proyecci on. Por cuestiones de
significado, anadimos este bit inmediatamente antes del campo de condici on
de salto, de manera que ser a c17, pasando c18, c19 a ser los puntos de control
de salto y c20 a c25 los bits de direcci
on de salto. En la figura 4.10 se muestra
la unidad de control microprogramada completa. En esta figura no mostramos,
CAPITULO 4: SECCION
DE CONTROL 87

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.

Mnemonico Descripcion C.OP.


LOAD [X] AC Mem(X) 000
STORE [X] Mem(X) AC 001
ADD [X] Suma: AC AC + Mem(X) 010
AND [X] AND l ogico: AC AC Mem(X) 011
JMP Salto incondicional: PC AC 100
JZ Salta si cero: si Z=1 PC AC 101
NOT AC C1(AC) 110
SHR AC 0,AC[7:1] 111

Tabla 4.2: Conjunto de instrucciones de la CPU

Vemos como en total tendremos 8 instrucciones distintas, donde las 4 pri-


meras utilizan direccionamiento directo a memoria, siendo X una palabra de 8
bits que debe estar a continuaci on del C.O. en la memoria principal. Sin embar-
go las u
ltimas cuatro instrucciones son de 0 direcciones y toman implcitamente
el operando del registro AC.
El contenido de la micromemoria resultante para estas instrucciones se
muestra en la tabla 4.3.
Sobre este microprograma cabe hacer los siguientes comentarios:
La b usqueda de instrucciones se realiza en las microinstrucciones 0 a 3.
Las instrucciones se hayan en: LOAD: lneas 4 a 8; STORE: lneas 9 a
13; ADD: lneas 14 a 18; AND: lneas 19 a 23; JMP: lneas 24 y 25; JZ:
lneas 26 a 29; COMP: lnea 30; SHIFT: lnea 31.
Cada instrucci on acaba con la microinstrucci on goto 0, que retorna a
la busqueda de instrucci on.
La decodificaci on se realiza en la lnea 3, siendo esta la u
nica microins-
truccion que activa el bit 17 (proyecci on).
CAPITULO 4: SECCION
DE CONTROL 89

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

Tabla 4.3: Contenido de la memoria de microprograma


90 FUNDAMENTOS DE LOS COMPUTADORES

As pues, propuesto el contenido de la micromemoria, el contenido del


sistema de proyeccion (la direcci
on est
a expresada en binario y la salida en
decimal), que asocia a cada instruccion el comienzo de la microrutina que la
ejecuta, viene dado por:
C.OP. 000 001 010 011 100 101 110 111
Lnea 4 9 14 19 24 26 30 31

4.3. AVANZADO
DISENO

En esta seccion se propone un dise no avanzado para una secci on de control


asociada a la seccion de datos que se muestra en la figura 4.11. Esta sec-
ci
on est
a compuesta por cuatro registros (I, A, B y D), un sumador binario
completo, un desplazador y un multiplexor de dos entradas; adicionalmente,
existen dos registros cuyo contenido es siempre cero. Todos estos componentes
estan conectados mediante un conjunto de buses. En particular el BUS X
proporciona la entrada a los registros, el BUS MEM. es el bus de datos de
la memoria RAM, el BUS L alimenta la entrada izquierda (Left) de la ALU,
as como el BUS R hace lo propio con la derecha (Right). Aunque la anchura
de los componentes y las vas de datos no es importante para el dise no de
la unidad de control, supondremos una anchura de 16 bits. Las entradas de
control de los dispositivos est
an sumarizadas en la tabla 4.4.

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

Tabla 4.4: Funciones de los conmutadores de control


CAPITULO 4: SECCION
DE CONTROL 91

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

Desplazador L/R c17


SE c16

Figura 4.11: Secci


on de procesamiento elemental

4.3.1. Caractersticas temporales


En el dise
no de la unidad de control propuesta en la seccion 4.2 se temporizo las
se
nales de control mediante un u nico reloj. Ello impone una gran limitaci on en
cuanto a la ejecucion de una microinstrucci on, ya que el numero de registros
que puede atravesar un dato por cada periodo de reloj es uno, es decir,
en cada periodo de reloj un dato puede ser transferido de un registro a otro
nada m as. Sin embargo, nuestro objetivo puede ser m as ambicioso y podemos
desear que en un periodo de reloj, esto es, en una sola microinstrucci on, se
pueda realizar la transferencia de un dato por un camino que implique m as de
un registro.
Podemos, para ello, dividir el ciclo maquina en una secuencia de subciclos,
en los que se carguen una serie de registros, con lo que en un s
olo ciclo podamos
trasladar un dato, si quisieramos, desde la memoria hasta la salida de la ALU.
92 FUNDAMENTOS DE LOS COMPUTADORES

Esta divisi on podra ser:


Fase 1. Habilitaci on de la memoria de microprograma y lectura de la mi-
croinstruccion actual.
Fase 2. Carga del MicroRI con la microinstrucci on actual.
Fase 3. Habilitaci on de la salida del MicroRI. Deshabilitaci on de la memoria
de microprograma.
Fase 4. Si la microinstrucci on actual lo requiere, habilitaci
on de los controles
de salida c1 a c7 y c13 y de la selecci on de memoria principal, c18.
Fase 5. Si la microinstrucci on actual lo requiere, habilitaci
on del conmutador
c8 para pasar la salida del sumador al desplazador. Generaci on de una
transici
on 0-1 en la entrada INC del contador de microprograma.
Fase 6. Deshabilitaci on de los conmutadores c1 a c7, c13 y c18. Si la mi-
croinstruccion lo requiere, habilitaci
on del conmutador c16 para realizar
un desplazamiento.
Fase 7. Si la microinstrucci on actual lo requiere, habilitacion de los conmu-
tadores c9 a c12 para almacenar la salida del desplazador a traves del
bus X.
Las se nales de control c14, c15, c17 y c19 son se nales asncronas (activas
por nivel), pues no inician ninguna acci on. En consecuencia, no requieren un
control temporal, bastando con garantizar que tomen el valor deseado desde
el momento en que se habilita la salida del registro MicroRI.
Una posible implementaci on de esta secuencia podra ser la generaci on
de 7 pulsos de reloj dentro de cada periodo de 200 ns, para distinguir cada
fase, pero eso implica subir la frecuencia del reloj. Sin embargo, es posible
simplificar el circuito de reloj necesario usando una u nica senal de reloj para
crear cuatro pulsos temporales (denominados T1 a T4), tambien de periodo
200 ns, pero desfasados del reloj principal en tal forma que se solapen.

Esto se puede conseguir mediante una cadena de elementos de retardo
(que pueden consistir simplemente en dos inversores en secuencia). Dado que
la fase de acceso a la memoria de control es, presumiblemente, la m as lenta, se
tomar a un retardo de 50 ns entre T1 y T2 y 23 ns de retardo entre T2 y T3 y
entre T3 y T4. En la figura 4.12 se muestran las formas de onda resultantes.
El solapamiento de las se nales permite discriminar un considerable n umero de
intervalos temporales, definidos simplemente mediante el producto (AND) y
suma (OR) l ogicos de las senales T1 a T4.
Las ecuaciones l ogicas para los puntos de control del sistema deben impli-
car la secuencia de siete pasos, como se describir a m
as adelante. As, seg un
se vio en dicho esquema de fases, las acciones iniciales deben ser habilitar la
CAPITULO 4: SECCION
DE CONTROL 93

0 50 100 150 200

T1

T2

T3

T4
ns

CK Retardo Retardo Retardo


50 ns 23 ns 23 ns

T1 T2 T3 T4

Figura 4.12: Formas de onda de las se


nales de tiempo

memoria de microprograma, cargar el MicroRI con la salida de esta memoria


de microprograma, tras un tiempo igual al tiempo de acceso a dicha memo-
ria y, por ultimo, habilitar la salida del MicroRI y deshabilitar la lectura de
la memoria de microprograma. La gesti on de la memoria de microprograma
puede hacerse simplemente conectando la se nal T 1 AN D T 2 como se nal de
control Enable de la memoria de microprograma.
Por su parte, si se supone que el tiempo de acceso de la memoria de mi-
croprograma es de 40 ns, la se nal de habilitaci
on de escritura en el MicroRI,
Store, deber a conectarse a T2 y, por tanto, el registro MicroRI se cargar a en el
flanco de subida de T2. Por u ltimo, puesto que el MicroRI debe proporcionar
las senales de control a la unidad de procesamiento desde ese instante hasta
el final del ciclo maquina, se conectara la habilitaci
on de lectura del MicroRI,
Enable, a la se nal T2 OR T4. En la figura 4.13 se representa parte del esquema
de conexionado que permite el secuenciamiento descrito.
El control de los conmutadores c1 a c7, c13 y c18, necesario en las fa-
ses 4 y 6, se logra simplemente realizando el AND de las se nales de control
correspondientes con la se nal T3. El conmutador c8, que debe abrirse en un
instante posterior, se controla mediante la se nal resultante del AND de la lnea
de control c8 y de la se nal T4.
Por su parte, la operaci on de desplazamiento debe retardarse hasta que
el registro de desplazamiento haya recibido la informaci on procedente del su-
94 FUNDAMENTOS DE LOS COMPUTADORES

CK Retardo Retardo Retardo


50 ns 23 ns 23 ns

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

Figura 4.13: Esquema parcial de las conexiones de temporizaci


on

mador; en este caso, se conectar a al conmutador c16 el AND de la lnea de


control c16 y de T 2, de forma que el desplazamiento este controlado por el
flanco de bajada de T2 y, por tanto, ocurrir a (si procede) unos 50 ns despues
de la habilitaci
on del conmutador c8.
Finalmente, los conmutadores c9 a c12 deben habilitarse para terminar el
ciclo (fase 7); en consecuencia, para cada una de sus respectivas se nales de
control deber a realizarse el AND con T 4, de forma que los registros I, A, B
y/o D almacenar an la informaci on desde el bus X en el flanco de bajada de la
senal T4. La figura 4.14 muestra el diagrama de tiempos de las distintas fases
durante un ciclo m aquina del procesador.
En dicha figura, las lneas discontinuas indican que el punto de control
asociado se activa s olo si el bit correspondiente vale 1.
CAPITULO 4: SECCION
DE CONTROL 95

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

0 50 100 150 200 ns

Figura 4.14: Diagrama de tiempos del ciclo m


aquina

4.3.2. Codificaci
on de las microinstrucciones

Hasta este punto, la filosofa seguida en el dise no de la microinstruccion ha


sido una filosofa que llamaremos horizontal o sin codificaci on, en la que a
cada bit corresponde una se nal de control. Sin embargo, los 19 bits emplea-
dos dan lugar a 524.288 combinaciones diferentes, cantidad mucho mayor que
el numero m aximo de microinstrucciones distintas que se emplear an previsi-
blemente. Esto significa que la palabra de control contiene una redundancia
considerable. Si el tama no de la memoria de control es un factor importante en
el coste final del dise
no, ser
a necesario reducir el tamano de la microinstrucci
on
introduciendo codificaci on, a costa de reducir la velocidad de ejecuci on.
La metodologa b asica consiste en localizar en la microinstrucci on grupos
de bits de control que sean mutuamente exclusivos o redundantes y codifi-
carlos. El ejemplo m as sencillo son los bits 1 al 4, que controlan cu al de los
registros (I, A, B o cero) depositar a su contenido en la entrada izquierda del
sumador, L. Dado que s olo uno de estos cuatro registros puede ser seleccio-
nado simult aneamente, es posible codificarlo usando tan s olo dos bits, de la
siguiente manera:
C
odigo Registro
00 ceros
01 I
10 A
11 B
96 FUNDAMENTOS DE LOS COMPUTADORES

Para que esta representacion funcione, es necesario incluir una l


ogica de
decodificaci
on entre el registro de microinstruccion y los conmutadores del
datapath. As, por ejemplo, si los bits empleados para codificar el registro
seleccionado son el 1 y el 2, la se
nal de habilitaci
on del conmutador c1 de-
bera cumplir la ecuaci
on:

c1 = b1 AN D b2 AN D T3

En la figura 4.15 se representa la l


ogica necesaria para la generaci
on de es-
ta se
nal. Una logica de decodificaci
on analoga deber
a ser incluida para los
conmutadores c2 a c4.

b1 b2 MicroRI

T3

c1

Figura 4.15: Decodificador de microfunci


on

Como se observa, al codificar la informaci on contenida en los bits b1 y


b2 del registro de microinstrucci on, ahora ninguno de ellos tiene sentido por
separado, sino que significan algo s olo cuando son analizados juntos. A este
conjunto de uno o m as bits en una microinstrucci on que controlan un frag-
mento del datapath y que s olo tienen sentido al ser analizados juntos, es lo que
habamos denominado microfunci on o microorden.
Examinando el datapath, es posible reducir a un m as el n
umero de bits de
control. As, los conmutadores c5 a c7, que controlan el registro origen en la
entrada derecha del sumador, pueden codificarse con dos bits, quedando una
combinaci on sin usar. Por otra parte, los conmutadores c9 a c12 controlan
el destino del contenido del bus X. Teniendo en cuenta que no es necesario
almacenar este contenido en m as de un registro distinto y que es preciso incluir
un caso en que el bus X no sea almacenado en ning un registro, deberan usarse
tres bits, en los que se puede usar la siguiente codificacion de destino:
CAPITULO 4: SECCION
DE CONTROL 97

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

Microorden Bits Caso Funci


on
Entrada izquierda del Sumador 1-2 00 0
01 I
10 A
11 B
Entrada derecha del Sumador 3-4 00 0
01 B
10 D
11 No usada
Carry de entrada al Sumador 5 0 Carry=0
1 Carry=1
Desplazamiento 6-7 00 No desplazamiento
01 Desplazamiento Izq.
10 Desplazamiento Der.
11 No usada
Destino del BUS X 8-10 000 Ninguno
001 I
010 A
011 B
100 D
101-111 No usada
Operaci
on de Memoria 11-12 00 No operacion
01 Leer a D
10 Escribir de D
11 No usada

Tabla 4.5: Definici


on de microinstrucci
on codificada

suma. Este defecto es f acilmente solventable sustituyendo el sumador binario


completo por una ALU capaz de realizar las siguientes funciones: L + R + C;
L + R + C; L OR R y L AN D R.
Con cuatro posibles operaciones para ejecutar, se necesitaran dos bits para
su selecci
on, c20 y c21, por lo que deber
a incrementarse en dos bits el tama no
de la microinstruccion. En la figura 4.16 vemos que esta ALU tambien pro-
porciona dos flags de estado, C (carry) y Z (cero), que son almacenados en
un registro de FLAGS. Un bit de control adicional, c22, se nalara la carga de
dicho registro.

4.3.4. Capacidad de salto y constantes en la microinstrucci


on
El campo direcci
on de salto en las microinstrucciones s
olo es u
til en aque-
llas que supongan un salto en el microprograma, siendo un conjunto de bits
desaprovechados en el resto. No obstante, podemos ampliar la funcionalidad
CAPITULO 4: SECCION
DE CONTROL 99

L R
c20 2 c22
c21 ALU
c5
C
Z
FLAGS

Figura 4.16: Ampliaci


on de la ALU

de las microinstrucciones, permitiendo que, en las instrucciones de no salto, el


contenido de este campo pueda ser usado como una constante (valor) en la mi-
croinstruccion. Para ello, abrimos un camino de datos que permita cargar en la
ALU el contenido del campo direcci on de salto del registro MicroRI. Este ca-
mino estar a controlado con un nuevo punto de control, c23, que se muestra en
la figura 4.17. A este campo le llamaremos desde ahora direcci on/constante.
Respecto a los esquemas de temporizaci on necesarios para el buen funcio-
namiento de estas unidades de procesamiento y control mejoradas, es necesario
realizar un cambio importante relativo al momento en que se debe cargar el
MicroPC. Es decir, si queremos que en una misma microinstrucci on se pueda
realizar una operaci on aritmetica y un salto condicional al resultado de esta,
tendremos que permitir la carga o el incremento del MicroPC una vez haya
concluido la operaci on en la ALU y se haya actualizado convenientemente el
registro de FLAGS. Por ejemplo, en la fase 5 de la p agina 92, en que se habilita
c8 para cargar el registro de desplazamiento con el resultado de la ALU, tam-
bien podemos activar c22 para actualizar el registro de FLAGS si es necesario,
es decir, con el flanco de subida de T4. De esta forma, el incremento o carga
del MicroPC, condicionada al valor de los flags, se puede realizar con el flanco
de bajada de T3 o T4.

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

Tabla 4.6: Definici


on final de microinstrucci
on
Seccin de 0 Unidad de
M MEMORIA
Procesamiento R/W Memoria
1 Mpx RAM
c19
BUS X c28 c18
CAPITULO 4: SECCION

miento con codificaci


B c25 c26
0 1
D-Mpx c14 U
c9 c10 c11 S
c12 PC RI Seccin de Control
I A B D M
E ROM de
c1 c2 c3 M Proyeccion
c13 c24

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

Figura 4.17: Procesador hipotetico completo. Secciones de control y procesa-


101
102 FUNDAMENTOS DE LOS COMPUTADORES

Aclararemos con un ejemplo el problema de escribir una microrrutina aso-


ciada a una instrucci
on m
aquina dada para este procesador. Consideremos la
instrucci
on ejemplo:
AND 25(A),B
Esta instrucci on debe almacenar en el registro B el resultado de hacer el
AND l ogico entre el contenido de este mismo registro y el contenido de la
posici
on de memoria apuntada por el registro A m as 25. Es decir:
(25 + A) AN D B B
Dado que el C.O. ocupa la palabra completa de memoria, el desplazamien-
to, 25, del direccionamiento relativo, se almacena en la siguiente palabra. Por
tanto, las microinstrucciones que se deben ejecutar son las siguientes:
1. RI (P C): Cargar el contenido de memoria apuntado por el PC en RI,
es decir, busqueda de instrucci on.
2. c27 1; CS = 11; P C P C + 1: Decodificaci on (carga del MicroPC
con la direccion que viene de la ROM de Proyecci on) e incremento del
PC.
3. D (P C); P C P C + 1: Extraemos el desplazamiento de la me-
moria (el 25) e incrementamos el PC para que apunte a la siguiente
instruccion.
4. A A+D: Completamos el c alculo de la direccion efectiva sumando
al registro A el desplazamiento previamente almacenado en D.
5. D (A): B usqueda del operando en memoria a partir de su direcci on
efectiva almacenada en A.
6. B (B AN D D); CS = 11; Dir = 0: Ejecuci on, realizando el AND
l
ogico, y salto final a la posici on 0, donde se encuentra la rutina de
fetching.
Siguiendo la codificacion de las microordenes presentada en la tabla 4.6 y
suponiendo que el n ucleo de la microrrutina se almacena a partir de la posici
on
12 de la memoria de microprograma, tendremos que el contenido parcial de
esta memoria es el siguiente:
CAPITULO 4: SECCION
DE CONTROL 103

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.

4.4. DE UNA UNIDAD DE CONTROL CABLEA-


DISENO
DA

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

de control para la secci


on de procesamiento que se present o anteriormente en
la figura 4.3. Asociada a esta secci
on se detallaron los puntos de control en la
tabla 4.1 .
Desde el punto de vista del diseno consideraremos que los senales de con-
trol del procesador son activas a nivel alto. No obstante aquellas que act uen
por flanco de subida o bajada sobre el commutador, (carga, desplazamiento,
incremento de registros) tendr an que ser combinada con la se nal de reloj.
Consideraremos un repertorio de instrucciones reducido, que se muestra
en la tabla 4.78 .

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

Tabla 4.7: Repertorio de instrucciones

Vamos a aplicar los metodos antes citados para la construcci


on de este pro-
cesador simplificado. En la figura 4.18 se representa el diagrama de flujo del
funcionamiento del procesador. BEGIN representa una se nal de inicio. Como se
puede observar la tarea del procesador se divide en dos fases b asicas: busque-
da de instrucci
on y ejecucion. Durante la b
usqueda se accede a la posici on de
memoria apuntada por el PC y se transfiere ese contenido al registro de ins-
trucci
on IR. El PC es incrementado apuntando ahora a la siguiente direcci on
de memoria. El contenido de IR se decodifica (identificacion de a que instruc-
ci
on pertenece el c
odigo de operaci
on) y seg
un la operaci
on a realizar se ejecuta
una u otra cosa. En la fase de ejecuci on se busca el operando, se ejecuta la
operacion de ALU y/o se almacena datos en memoria seg un proceda.

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

formato de instruccin fetch


DR<-(MAR) cycle

INC PC
IR<-DR
DECOD OP

MAR<-PC MAR<-PC MAR<-PC MAR<-PC

DR<-(MAR) DR<-(MAR) DR<-(MAR) DR<-(MAR)

INC PC INC PC INC PC INC PC


execution
cycle

MAR<-DR MAR<-DR MAR<-DR

NO
Z?
DR<-(MAR) DR<-ACC DR<-(MAR)

YES

ACC<-DR (MAR)<-DR ACC<-ACC+DR PC<- DR

LOAD A STORE A ADD A JMPZ A

Figura 4.18: Diagrama de flujo a nivel RTL para el procesador de la fig. 4.3

Vamos a introducir un conjunto de se nales auxiliares C ji cuyo significado


es: Cji se activa en un intervalo ti si la se
nal de control Cj debe estar activa
en ese intervalo.
Consideremos el problema de generar la siguiente secuencia de se nales de
control en los instantes t1 ,t2 ,...,tn :
t1: Activar Cj1;
t2: Activar Cj2;
...
tn: Activar Cjn;
Aqu con Cji representamos la activaci on del punto de control C j en el
106 FUNDAMENTOS DE LOS COMPUTADORES

instante ti . (Cuidado! no todas las se nales se activan en todos los instantes;


en cada instante se activar an aquel subconjunto de se nales que intervenga en
la transferencia de registros que queramos realizar). En cada ciclo o intervalo
ti se ejecuta una microoperaci on.
Podemos producir la cadencia de se nales de control introduciendo elemen-
tos de retardo (delay element) y propagando la se nal de activaci on. Con
este metodo la translaci on entre el diagrama de flujo y la secci on de control
es directa ya que el diagrama de flujo expresa la secuencia de activaci on de
los puntos de control. El circuito dise nado tiene esencialmente la misma es-
tructura que el diagrama de flujo. La forma de obtener el circuito a partir del
diagrama de flujo nos la indica unas reglas simples, que se ven en la figura
4.19. A continuaci on se explican dichas reglas.
1. Cada secuencia de dos microoperaciones sucesivas requiere un elemento
de retardo. Las se nales que activan las lneas de control se toman di-
rectamente de las lneas de entrada y salida del circuito de retardo. Las
se
nales que activan una misma lnea de control C i se unen con una puer-
ta OR cuya salida es Ci . Esta lnea puede conectarse al punto de control
que activa (introduciendo la temporizaci on adecuada si fuera preciso).
2. k lneas en el diagrama de flujo que se unen a una lnea com un se trans-
forma en una puerta OR de k entradas, como muestra la figura 4.19
3. Un bloque de decisi on (operacion de salto condicional) o bifurcaci on se
implementa con puertas AND, como aparece en la figura 4.19.
No olvidemos que las se nales de control as generadas C j pueden necesitar
ser combinadas con la se nal de reloj para generar los flancos adecuados cuando
conectemos las se nales con la secci
on de procesamiento.
Aplicando esta filosofa el resultado para el procesador que estamos cons-
truyendo es el que se muestra en la figura 4.20.
En este esquema hay que tener en cuenta:
Como se puede observar el c odigo de operaci on contenido en IR, es de-
codificado para producir 4 se nales (LOAD, STORE, ADD, JMPZ) que
nos sirven para escoger que rama del diagrama de flujo seguir seg un la
instruccion que represente el codigo de operaci on.
Es necesario introducir una se nal BEGIN (no aparece en el esquema)
que ponga a cero (CLEAR) todos los elementos de retardo (y as todas
las se
nales de control) salvo el primer elemento (se nalado con ) de
retardo que se pondr a a uno (PRESET) cuando comience la ejecuci on.
Esta senal as mismo debera poner el PC a un valor conocido apuntando
a la primera instruccion a ejecutar (lo m as sencillo sera iniciarlo a cero).
CAPITULO 4: SECCION
DE CONTROL 107

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

Figura 4.19: Transformaci


on entre diagrama de flujo y circuito con elementos
de retardo

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

El elemento de retardo (DE), se construye simplemente con un biestable


tipo D activo por flanco (por ejemplo de subida). Construido de esta manera
la se
nal de reloj de los elementos de retardo debe ser aquella que sincronice
tambien los puntos de control activos por flanco en la secci
on de datos. As por
108 FUNDAMENTOS DE LOS COMPUTADORES

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

C3,2 C4,2 C7,2


LOAD ADD

DE STORE JMPZ

C13,3 C14,3

DE

LOAD STORE ADD JMPZ

DE DE DE DE

C8,4 C9,4 C8,10 C9,10 C8,16 C9,16 C8,22 C9,22

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

C13,6 C13, 12 C13, 18 C13, 24


not(Z)
Z
DE DE DE

C9,7 C9,13 C9,19

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

C11,9 C4,15 C5,15 C0,21 C10,21 C11,21


C16,21

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

Figura 4.21: Contador de secuencias m


odulo k
BEGIN
IR modulo - 9 END
RESET
sequence counter
DEC CK

S1 S2 ................ S9

LOAD
STORE
ADD
C1
JMPZ combinational
C2
circuit
N
................

C16

Figura 4.22: Unidad de control utilizando un contador de secuencias

SINOPSIS

La tecnica de control microprogramado permite el dise


no de una unidad de
control de forma sistematica y estructurada. En resumen, hemos visto que
112 FUNDAMENTOS DE LOS COMPUTADORES

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

1. Para la m aquina descrita por la figura 4.17 y la tabla 4.6 de la secci on


4.3.5, dise nar la microsubrutina asociada a la instrucci on maquina BEQ
dir , que carga en el PC el valor dir si el flag Z es igual a 1. La instruc-
ci
on BEQ dir ocupa dos palabras de memoria (una para el c odigo de
operaci on y otra para la direcci on de salto).
2. Dise nar la microsubrutina asociada a la instrucci on m
aquina MAX A,B
que coloca en el registro B el valor m aximo(A,B). El contenido de los
registros A y B ser a siempre positivo y representado en C2.
3. Idem para la instrucci on EXG A,B que intercambia los valores de los
registros A y B.
4. Sean las secciones de procesamiento y de control microprogramado de la
figura 4.23. Sus elementos m as destacados son:
Memoria RAM externa com un para datos e instrucciones asociada
a dos registros: uno de direcciones, M AR y otro de datos, DR.
En una operaci on de lectura se cargar a DR con el contenido de la
memoria apuntada por M AR. En escritura, el contenido de DR se
almacenar a en la posici
on de memoria indicada por M AR.
Tres registros de prop osito general A, B y T M P , m as un registro
a cero (0).
Registro de Instrucci on (RI): Almacena una instrucci on con un
codigo de operaci on de 4 bits.
Contador de Programa (PC): Puede ser cargado desde el BUS, vol-
cado al BUS e incrementado.
Unidad Aritmetico-L ogica capaz de realizar las 4 operaciones b a-
sicas de suma, resta, producto y divisi on. Dispone de dos flags de
estado: Signo (N) y Cero (Z).
Suponer resueltos los posibles problemas de temporizaci on y el si-
guiente tiempo de respuesta para el hardware:
1 ciclo de reloj para completar la siguiente cadena de operaciones:
Volcado de alguno de los registros a la ALU; Operaci on ALU 2

Escritura en alguno de los registros. La carga en el MicroPC se


realiza al mismo tiempo que la escritura en registros, es decir, al
final del ciclo de reloj.
1 ciclo de reloj para la lectura o escritura del dato almacenado en
DR en la posici on de memoria dada por MAR.
1 ciclo para cualquier transferencia entre los registros DR, RI, P C
114 FUNDAMENTOS DE LOS COMPUTADORES

y M AR a traves del BUS.


Se pide:
a) Disenar la microrrutina de f etch y decodificaci on. Describirla en
pseudocodigo y detallar el contenido de la memoria de micropro-
grama en binario a partir de la direccion 0.
b) Disenar las microrrutinas asociadas a cada una de las instrucciones
de la tabla 4.10. Descrbelas en pseudoc
odigo y detalla el contenido
de la memoria de microprograma en binario, colocando cada micro-
rrutina a partir de la posici
on de micromemoria que le corresponda.
Utiliza la tabla 4.9 para escribir las microsubrutinas, utilizando el
campo Comentario para poner en pseudoc odigo el significado de
cada instruccion. Suponer que el ciclo de f etch no modifica los flag
de estado.
c) Detallar el n
umero de palabras y el contenido de la ROM de Proyec-
ci
on teniendo en cuenta el c odigo de operacion de cada instruccion
de la tabla 4.10.

SENAL Significado
c1, c2, c3 Habilitaci
on de entrada a registros A, B y TMP.
c4 Habilitaci
on de entrada a registro RI.
c5, c6, c7, c8 Habilitaci
on de salida de A, B, TMP y 0 a la ALU.
c9 Control del Multiplexor-1.
c10 Vuelca al BUS el dato de salida de la ALU.
c11, c12 Selecciona la operaci
on al realizar en la ALU:
00=Suma. 01=Resta. 10=Producto. 11=Divisi on.
c13 Incrementa el PC.
c14 Carga en PC el dato que haya en el BUS.
c15 Vuelca al BUS el dato almacenado en PC.
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 Carga en MAR el dato que haya en el BUS.
c19 Carga en DR el dato que haya en el BUS.
c20 Vuelca al BUS el dato almacenado en DR.

Tabla 4.8: Puntos de control especificados (Prob. 4)


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

MicroRI CS Dir. de Salto

c1 c2 c3 c20 2

Figura 4.23: Unidades de Proceso y de Control (Prob. 4)


115
FUNDAMENTOS DE LOS COMPUTADORES

Registros M ALU PC Mem. MAR DR Salto


Comentario Dir. c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 CS Dir. Salto
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Tabla 4.9: Memoria de microprograma (Prob. 4)
116
DE PROBLEMAS
RELACION 117

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]

Tabla 4.10: Conjunto de instrucciones (Prob. 4)

5. Sean las secciones de procesamiento y de control de la figura 4.24. La


secci
on de procesamiento est a disenada para permitir eficientemente la
multiplicaci on de dos numeros enteros positivos de 8 bits (A B, con-
siderando que para que A y B sean positivos deben tener su bit m as
significativo a 0).
Inicialmente el multiplicando, A, se almacena en el registro Y , el
multiplicador, B, en el registro X, y el registro AC debe ser puesto a 0.
Durante 8 iteraciones haremos lo siguiente: Si el bit menos significativo
de X est a a 1 (X(0) = 1), acumularemos en el registro AC su contenido
mas el de Y y desplazaremos un bit a la derecha el par de registros AC
X. Si, por el contrario, X(0)=0, sencillamente desplazaremos sin sumar
previamente. En el desplazamiento a la derecha, el bit menos significativo
de AC pasar a a ser el mas significativo del registro X. Despues de 8
iteraciones, el resultado de la multiplicaci on (de 16 bits) queda en el
par de registros AC X. Un contador de cuatro bits, que puede ser
inicializado a 0 y que puede ser incrementado, nos permite saber cuando
se han producido las 8 iteraciones.
En la tabla 4.11 se describe la funci
on de cada uno de los 9 puntos
de control implicados en este dise no. El formato de cada microinstrucci on
no codifica puntos de control en microordenes, sino que asigna un bit del
registro de microinstrucci on por cada punto de control. Adem as anade
un campo de condici on de salto, CS, para controlar el Multiplexor-2 y
un campo de direcci on de salto. El punto de control c9 permite la carga
del contador de microprograma con la direcci on de salto (si vale 0), o con
la direccion que proporciona la ROM de Proyecci on (si vale 1). Teniendo
en cuenta las siguientes suposiciones:
Los problemas de sincronizaci on y temporales, relativos a los puntos
de control, se consideran resueltos. Si la se nal c7 se activa en una
microinstrucci on de salto, el incremento del contador se produce
antes que la carga del contador de microprograma.
118

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

Figura 4.24: Unidades de Proceso y de Control del multiplicador


FUNDAMENTOS DE LOS COMPUTADORES
DE PROBLEMAS
RELACION 119

La instrucci on m aquina MUL, de 0 direcciones, toma los operan-


dos implcitamente de los registros X e Y y deja el resultado en
los registros AC y X. Evidentemente, deben existir instrucciones
maquina para la carga de los registros X e Y y para la descar-
ga de los registros AC y X, pero consideraremos ese problema de
microprogramaci on ya resuelto.
El c
odigo de operaci on de la instrucci
on MUL es 24. En la posici on
24 de la ROM de Proyecci on est
a almacenada la direccion 100.
Se pide:
Escribir la microrutina asociada a la instrucci on MUL y detallar
el contenido binario de la memoria de microprograma, indicando la
direccion inicial de la microrutina seg un las suposiciones expuestas
anteriormente. Suponer el problema de la b usqueda y decodificaci
on
de la instruccion MUL ya resuelto.

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.

Tabla 4.11: Puntos de control del multiplicador (Prob. 5)

6. Sean las secciones de procesamiento y de control microprogramado de la


figura 4.25. Sus elementos m as destacados son:
Memoria RAM externa, com un para datos e instrucciones, asocia-
da a un registro de datos, DR. En una operaci on de lectura se
cargara DR con el contenido de la posici on de memoria apuntada
por el bus Y . En escritura, el contenido de DR se almacenar a en la
posici
on de memoria indicada por Y .
Un banco de cuatro registros entre los que se encuentra el Contador
de Programa (P C). Las se nales de control c1 y c2 seleccionan uno
de los cuatro registros para volcar su contenido al bus X (si c5
est
a a 1), o para cargarse con el resultado de la ALU (si c6 estaa
120 FUNDAMENTOS DE LOS COMPUTADORES

1). Los puntos de control c3, c4 seleccionan el registro que volcar a su


contenido al bus Y (independientemente de c1, c2, c5 y c6).
Acumulador (AC): Puede ser cargado desde el BUS y proporciona
uno de los operandos de la ALU.
Registro de Instrucci on (RI): Almacena una instrucci on con un
c
odigo de operaci on de 4 bits.
Unidad Aritmetico-L ogica capaz de realizar las 4 operaciones b a-
sicas de suma, resta, producto y divisi on. Dispone de dos flags de
estado: Signo (N) y Cero (Z).
Suponer resueltos los posibles problemas de temporizaci on y el si-
guiente tiempo de respuesta para el hardware:
1 ciclo de reloj para completar la siguiente cadena de operaciones:
Volcado de alguno de los registros al BUS; Operaci on ALU del
dato volcado con el que hay en AC y Escritura en alguno de
los registros. Evidentemente, si c5 y c6 se activan en una misma
microinstruccion, el registro que vuelca su contenido al bus X al
comienzo del ciclo, es el mismo que se modifica al final de dicho
ciclo maquina. La carga en el MicroPC se realiza al mismo tiempo
que la escritura en registros, es decir, al final del ciclo de reloj.
1 ciclo de reloj para la lectura o escritura del dato almacenado en
DR en la posici on de memoria dada por el bus Y .
1 ciclo para cualquier transferencia entre los registros DR, RI, AC
y alguno del Banco de Registros.
El registro de estado tambien se carga al final del ciclo m aquina si
la se
nal c15 est
a activa. Solo las instrucciones aritmeticas o logicas
deben modificar el registro de estado.
Se pide:
a) Dise nar la microrrutina de f etch y decodificaci on. Descrbela en
pseudocodigo y detalla el contenido de la memoria de microprogra-
ma en binario a partir de la direccion 0. Utiliza la tabla adjunta para
detallar las microinstrucciones, utilizando la columna Comentario
para indicar en pseudoc odigo el significado de cada microinstruc-
ci
on.
b) Dise nar las microrrutinas asociadas a cada una de las instrucciones
de la tabla 4.12. Descrbelas en pseudoc odigo y detalla el contenido
de la memoria de microprograma en binario, colocando cada micro-
rrutina a partir de la posici
on de micromemoria que le corresponda.
c) Detallar el numero de palabras y el contenido de la ROM de Proyec-
DE PROBLEMAS
RELACION 121

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

Tabla 4.12: Conjunto de instrucciones (Prob. 6)

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.

Tabla 4.13: Puntos de control (Prob. 6)


122

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

MicroRI CS Dir. de Salto

c1 c2 c3 c19 2

Figura 4.25: Unidades de Proceso y de Control (Prob. 6)


FUNDAMENTOS DE LOS COMPUTADORES
Banco de Reg. AC, RI, DR ALU SR Mem. Cte M Salto
Comentario Dir. c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 CS Dir. Salto .
RELACION

0
1
2
3
4
5
DE PROBLEMAS

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Tabla 4.14: Memoria de microprograma (Prob. 6)


123
124 FUNDAMENTOS DE LOS COMPUTADORES

7. La figura 4.26 representa la CPU de un microprocesador con una unidad


de control microprogramada. La descripci on de los puntos de control de
la seccion de datos se incluye en la tabla 4.16. Como caractersticas m as
interesantes de esa secci on de datos cabe destacar:
Memoria RAM externa para datos e instrucciones de 64Kx16 bits
(=128Kbytes). La memoria se direcciona directamente desde alguno
de los registros de direccion del banco de registros de direccion. El
dato que se lee de la memoria puede ir a cualquiera de los registros
de cualquier banco, IR, TEMPA o TEMPB. El dato que se escribe en
memoria debe venir de alg un registro de uno de los bancos o de la
ALU.
Banco de 4 registros de direcci on, de 16 bits cada uno. Este
banco incluye el PC, el registro ndice SI, el registro base B y un
registro temporal de direcciones TMP. c3-c4 son las se nales que
controlan la selecci on del registro de direcci on que direcciona la
memoria y que puede volcar su contenido al BUS CPU (si c15=1),
como se indica en la tabla 4.15 (a). El punto de control c5 decide
si se va a leer o a escribir en el registro seleccionado.

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)

Tabla 4.15: (a) Selecci


on del registro de direcci
on; (b) Selecci
on del registro de
datos

Banco de 16 registros de datos (R0:R15), de 16 bits cada uno.


Estan direccionados desde el campo correspondiente de la instruc-
ci
on m aquina, bien Rx o bien Ry, como muestra la tabla 4.17. De
estos registros, el contenido de R0 y R1 viene fijado por el HW
a 0000(16 y 0001(16 respectivamente y no son modificables por el
programador. Las se nales que controlan la seleccion del registro de
datos son c6-c8 seg un se indica en la tabla 4.15 (b). Como se puede
ver, si c7=0 el campo Rx (si c6=0) o el campo Ry (si c6=1) del Regis-
tro de Instruccion (IR) son los que seleccionan el registro del banco
DE PROBLEMAS
RELACION 125

de registros de datos. Sin embargo, si c7=1, el punto de control c8


seleccionara el registro R0 o R1, independientemente del contenido
de los campos Rx o Ry.
Registro de instrucci on (IR) de 16 bits. El formato de instruc-
ci
on consta de: un campo c odigo de operaci on C.O. de 4 bits, un
campo no usado, NU, de 4 bits, un campo registro de datos Ry de
4 bits y un campo registro de datos Rx de 4 bits. Las instrucciones
pueden especificar 1 o 2 operandos explcitamente. El hecho de que
los registros de datos sean seleccionados desde el IR tiene la ven-
taja de no necesitar microrutinas distintas para instrucciones que
realizan la misma operaci on sobre registros de datos distintos. Por
ejemplo, la microrutina asociada a la instrucci on MOVE R2,R3, es la
misma que la microrutina para MOVE R5,R2 ya que el C.O. de la
instruccion ser
a el mismo y la seleccion de los registros vendr a es-
pecificada en los campos Rx y Ry de IR.
ALU con sumador/restador asociado a 2 flags de estado, carry
(C) y cero (Z).
En este diseno se suponen resueltos los problemas de temporizaci on
y, dado que la carga de los registros se realiza al final del ciclo m
aquina,
se requiere 1 ciclo de reloj para:
un acceso de lectura de la memoria y almacenamiento en registro o
lectura de registro y escritura en memoria RAM.
una operaci on con la ALU y transferencia del resultado a alg un re-
gistro.
una transferencia entre registros de bancos diferentes.
una transferencia entre alg un registro de uno de los bancos y cual-
quiera de los registros temporales de la ALU (TEMPA, TEMPB).
Adem as, nos aseguran que la actualizaci
on del registro de estado tiene
lugar antes que la carga del contador de microprograma. El registro de
estado solo se debe modificar en las instrucciones aritmeticas o logicas.
En el problema de dise no se pide:
a) Disenar la microrrutina de fetch y decodificaci on. Describirla en
pseudocodigo y detallar el contenido de la memoria de microprogra-
ma en binario a partir de la direcci on 0. Utiliza la tabla 4.18 para
detallar las microinstrucciones, utilizando la columna Descripci on
para indicar en pseudoc odigo el significado de cada microinstruc-
ci
on.
b) Disenar las microrrutinas asociadas a cada una de las instrucciones
126 FUNDAMENTOS DE LOS COMPUTADORES

de la tabla 4.17. Descrbelas en pseudocodigo y detalla el contenido


de la memoria de microprograma en binario, colocando cada micro-
rrutina a partir de la posici
on de micromemoria que le corresponda.
c) Detallar el n
umero de palabras de la ROM de Proyecci on y el con-
tenido de las posiciones de esta ROM que conozcas teniendo en
cuenta el C.O. de cada instrucci on de la tabla 4.17.

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.

Tabla 4.16: Puntos de control de la secci


on de datos (Prob. 7)

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

Tabla 4.17: Conjunto de instrucciones (Prob. 7)


c1 c2 c5
Banco de Reg. 16 16
CS R/W Direccion
RELACION

c3 00 PC c10 TEMPA TEMPB c11


c4 01 SI
MEMORIA
10 B
RAM C 4 A B
11 TMP ALU c14
64K x 16 Z
16 16 bits
DIR
DE PROBLEMAS

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

Figura 4.26: Unidades de Proceso y de Control (Prob. 7)


Banco de Reg. Datos
c18 MUX1
c13 1 0
ROM de
Proyeccin
127
FUNDAMENTOS DE LOS COMPUTADORES

Mem. Reg. Dir. Reg. Dat. Carga ALU Transf. M Salto


Descripci
on Dir.
c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 CS Dir. Salto
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Tabla 4.18: Memoria de microprograma (Prob. 7)
128
DE PROBLEMAS
RELACION 129

8. Se pretende dise nar la Unidad de Control Microprogramada para el pro-


cesador mostrado en la figura 4.27. La Unidad de Datos contiene los
registros PC e IR, un Banco de registros (B) con 256 registros de 8 bits,
todos ellos accesibles a traves de un registro BAR (que se utilizar a pa-
ra almacenar el n umero de registro al que se quiere acceder, bien para
leer su contenido o bien para modificarlo). El registro BDR se utiliza
como registro intermedio para el almacenamiento temporal de los datos
relacionados con alguno de los registros del banco. Esta CPU tambien
dispone de un registro de estados con 2 flags (Z y N); una ALU con 2
operaciones distintas y 3 registros de prop osito general (L y R a su en-
trada, y TMP a su salida); una Memoria (M) de 256 palabras de 8 bits
cada una, que contiene tanto instrucciones como datos y tiene asociado
el registro MAR para las direcciones, no necesitando ning un registro in-
termedio para almacenar temporalmente los datos, sino que son volcados
directamente sobre el BUS principal del sistema, pudiendo almacenarse
dicho valor en cualquier registro directamente conectado con el BUS.
El tama no de palabra de la ALU, del Banco de Registros (B) y de la
Memoria Principal (M) es de 8 bits.
Es importante resaltar que cada instrucci on est
a almacenada en 1
o varias palabras de memoria, con lo que posiblemente ser a necesario
realizar m as de un acceso a memoria para acceder a la instrucci on com-
pleta. El juego de instrucciones de este procesador se caracteriza por
la peculiaridad de que la primera palabra de la instrucci on es siempre
el codigo de operaci on (COP) de la misma, que es por tanto de 8 bits.
El resto de palabras de la instrucci on son opcionales (depende de cada
instruccion concreta) y se corresponden a n umeros de registro utilizados
en la ejecucion de la instruccion. Estos operandos son tambien de 8 bits
(ver figura 4.27).
El conjunto de instrucciones del procesador junto con sus c odigos de
operacion y su significado, asi como el n
umero de palabras de memoria de
las que se compone (P) y el orden de acceso se muestra en la tabla 4.19.
Los puntos de control que gobiernan el funcionamiento del data-path se
describen en la tabla 4.20.
Se pide:
a) Dise nar la Unidad de Control de dicho procesador, especificando
claramente el formato de la microinstrucci on utilizado y los nuevos
puntos de control si fueran necesarios. Se debe utilizar micropro-
gramaci on horizontal.
130

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

c4 c5 c12 c13 c14 R1 ( opcional )


8 BUS 8
R2 ( opcional )

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)

Figura 4.27: Procesador microprogramado (Prob. 8)


FUNDAMENTOS DE LOS COMPUTADORES
DE PROBLEMAS
RELACION 131

Nemotecnico COP Significado P Orden


SALTA Z R1 00001111 si Z=1, PC B(R1) 2 (COP, R1)
MUEVE R1,R2 00001010 B(R2) B(R1) 3 (COP, R1, R2)
SUMA R1,R2,R3 00000101 B(R3) B(R1)+B(R2) 4 (COP, R1, R2, R3)

Tabla 4.19: Conjunto de instrucciones del procesador (Prob. 8)

Senal Nemotecnico Significado


c1 loadBAR Carga en BAR el contenido del BUS
c2 writeB Escritura en el banco de registros (B(BAR) <- BDR)
c3 readB Lectura del banco de registros (BDR <- B(BAR))
c4 vuelcaBDR Vuelca el contenido de BDR en el BUS
c5 loadBDR Carga en BDR el contenido del BUS
c6 loadL Carga en L el contenido del BUS
c7 loadR Carga en R el contenido del BUS
c8 ALU 0: L+R, 1: L+1
c9 loadTMP Carga del registro TMP con el resultado de la ALU
c10 flags Carga el registro de estado del procesador
c11 vuelcaTMP Vuelca el contenido de TMP al BUS
c12 vuelcaPC Vuelca el contenido de PC al BUS
c13 loadPC Carga el PC con el contenido del BUS
c14 loadIR Carga el IR con el contenido del BUS
c15 loadMAR Carga el MAR con el contenido del BUS
c16 writeM Escritura en memoria
c17 readM Lectura de memoria
c18 vuelcaM Vuelca el contenido de la memoria al BUS
c19 incPC Incremento del Contador de Programa

Tabla 4.20: Puntos de control del procesador (Prob. 8)

b) Escribir el microc odigo correspondiente a la rutina com un de bus-


queda y decodificaci
on, as como las microrrutinas asociadas a cada
una de las instrucciones m aquina mostradas en la tabla 4.19.
c) Si se ha utilizado en el dise no de la Unidad de Control, describir
internamente el Sistema de Proyecci on.
NOTA: Suponer resueltos todos los posibles problemas de tempo-
rizaci
on, y que tanto las operaciones de transferencia entre 2 registros
cualquiera del procesador, cualquier operaci on con la ALU o acceso a
memoria (lectura/escritura) o al banco de registros (lectura/escritura)
requieren un unico ciclo de reloj.
132 FUNDAMENTOS DE LOS COMPUTADORES

9. Sean las secciones de datos y de control microprogramado de la figura


4.28. Sus elementos m as destacados son:
Memoria RAM externa de 232 celdas de 16 bits (4 Giga-palabras),
com un para datos e instrucciones. Est a asociada a un registro de
datos, DR de 16 bits, y otro de direcciones MAR de 32 bits.
Un banco de ocho registros entre los que se encuentran seis
registros de prop osito general, D0-D5 y un registro ndice IX dividido
en 2 partes: IXL, que almacena los 16 bits menos significativos, e
IXH, que almacena los 16 bits m as significativos de una direcci on de
32 bits. Las se nales de control c1, c2 y c3, seleccionan uno de los
ocho registros para volcar su contenido al BUS (si c5 = 1), o para
cargarse con el dato del BUS (si c4 = 1).
Registros temporales (TMP1 y TMP2), que pueden ser cargados
desde el BUS, y proporcionan los operandos de la ALU.
Registro de Instrucci on (IR) de 16 bits que almacena una ins-
truccion con un c odigo de operaci on (OpCode) de 16 bits. Todas las
instrucciones del micro ocupan una palabra en memoria.
Unidad Aritm etico-L ogica de 16 bits capaz de realizar 4 ope-
raciones controladas por las se nales c9 y c10. Notar que la ALU
proporciona el carry C y que este a su vez realimenta la entrada de
carry Cin de la ALU.
Notar tambien que s olo PC y MAR son registros de 32 bits. El resto
de los registros son de 16 bits.
Suponer resueltos los posibles problemas de temporizaci on y, dado
que los registros se cargan al final del ciclo maquina (includo el contador
de microprograma), es necesario:
1 ciclo de reloj para completar la siguiente cadena de operaciones:
Volcado de alguno de los registros TMP1 o TMP2 a la ALU; Ope-
raci
on ALU, y Escritura en alguno de los registros.
1 ciclo para cualquier transferencia entre dos registros cualesquiera
(PC, MAR, D0, IXL, TMP1, ...)
1 ciclo de reloj para la lectura o escritura del dato almacenado en
DR en la posici on de memoria dada por MAR.
Se pide:
a) Dise nar la Unidad de Control microprogramada. Justificar el ta-
ma no del registro de microinstrucci on.
b) Dise nar la microrrutina com un de b usqueda y decodificaci on. Utili-
zar la tabla 4.23 para codificar las microinstrucciones. En la colum-
DE PROBLEMAS
RELACION 133

na Descripci on detallar en RTL el significado de cada microins-


trucci
on. Notar que esta tabla no esta completa.
c) Disenar las microrrutinas asociadas a cada una de las instrucciones
de la tabla 4.22.
d) Detallar el n
umero de palabras de la ROM de Proyecci on y el con-
tenido de las posiciones que conozcas.

SENAL Significado
c1, c2, c3 Selecci
on de registro para lectura/escritura al BUS.
c4 Carga del dato del BUS al registro seleccionado por c1,c2, c3.
c5 Volcado del registro seleccionado por c1,c2,c3 al BUS.
c6 Carga del registro TMP1 con el dato del BUS.
c7 Carga del registro TMP2 con el dato del BUS.
c8 Reset del registro TMP2.
c9, c10 Selecciona la operaci
on a realizar en la ALU:
00=L+R, 01=L-R, 10=L+R+1, 11=L+R+C.
c11 Carga del registro de estado.
c12 Vuelca la salida de la ALU al BUS.
c13 Carga los 16 bits menos significativos de MAR con el dato del BUS.
c14 Carga los 16 bits mas significativos de MAR con el dato del BUS.
c15 Carga del registro DR con el dato del BUS.
c16 Vuelca el registro DR en el BUS.
c17 1 = Habilita acceso a RAM; 0 = Deshabilita acceso a RAM.
c18 1 = Lectura de RAM; 0 = Escritura en RAM.
c19 Carga los 16 bits menos significativos de PC con el dato del BUS.
c20 Carga los 16 bits mas significativos de PC con el dato del BUS.
c21 Vuelca los 16 bits menos significativos de PC al BUS.
c22 Vuelca los 16 bits mas significativos de PC al BUS.
c23 Incrementar PC
c24 Carga del registro IR con el dato del BUS.

Tabla 4.21: Descripci


on de los puntos de control de la CPU (Prob. 9)

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]

Tabla 4.22: Subconjunto de instrucciones de la CPU (Prob. 9)


134

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

Figura 4.28: Unidades de Datos y de Control (Prob. 9)


FUNDAMENTOS DE LOS COMPUTADORES
Banco Regs. TMP ALU MAR DR MEM PC RI
Descripci
on Dir.
c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24
RELACION
DE PROBLEMAS

Tabla 4.23: Memoria de microprograma (Prob. 9)


135
136 FUNDAMENTOS DE LOS COMPUTADORES

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

Tabla 4.24: Extensi


on del conjunto de instrucciones

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

Figura 4.29: Unidad de Control (Prob. 11)

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

Memoria RAM de 32K palabras de 16 bits. La memoria se estruc-


tura en palabras de dos bytes, y su direccionamiento se realiza a
nivel de byte.
El tama no de todos los registros existentes es de 1 palabra, as como
el del bus de datos que se ha denotado con busD. Dado el diagrama
propuesto se observa que para almacenar un dato en OP 2 ha de
ser cargado previamente en OP 1. El registro acumulador ACC se
puede usar como registro temporal si fuera necesario.
La ALU permite 4 operaciones: OP 1 + OP 2, OP 1 OP 2, OP 2 +
0, y OP 2 + 1, generando un bit de estado de cero que puede ser
almacenado en F Z.
Se considera que un solo ciclo de reloj es suficiente para leer o es-
cribir de memoria as como para transferir datos entre registros
conectados. No es necesario considerar en el ejercicio la temporiza-
ci
on de los puntos de control activos por flanco.
Todas las instrucciones ocupan 2 palabras de memoria. La primera
palabra es el codigo de operaci on y la segunda contiene potencial-
mente un operando. Aquellas instrucciones sin operando desapro-
vechan, pues, esta segunda palabra ya que no la usan. Las instruc-
ciones ocupan siempre, un n umero par de bytes, y por ello PC puede
ser incrementado de 2 en 2 a traves de un sumador auxiliar.

..........
8 8
C.OP. word i
Operando word i+1
..........

Figura 4.30: Formato de las instrucciones

Sobre el procesador descrito se pide:


a) Genera el diagrama de estados (flujo) de la unidad de control ca-
bleada, capaz de ejecutar el conjunto de instrucciones reducido que
se muestra en la siguiente tabla. En cada estado ha de indicarse la
operacion de transferencia de registro que corresponda, as como los
puntos de control que se activan. Debe considerarse que la b usque-
da y decodificacion es com un a las instrucciones. Observa que un
decodificador especfico Inst-DEC activa una se nal correspondiente
a la instrucci
on fue cargada en IR.
138 FUNDAMENTOS DE LOS COMPUTADORES

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.

b) Construir la unidad de control cableada, seg


un la metodologa de
los elementos de retardo y escribir las ecuaciones de los puntos
de control correspondientes.

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

UNIDAD DE CONTROL CABLEADA

Figura 4.31: Datapath (Prob. 12)


DE PROBLEMAS
RELACION 139

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=

Tabla 4.25: Puntos de control (Prob. 12)


5
Secci
on de
Procesamiento:
Algoritmos Aritm
eticos

OBJETIVOS

Describir brevemente el HW y los algoritmos encargados de implementar


las operaciones aritmeticas en la ALU
Introducir la aritmetica en punto flotante a partir de los algoritmos de
aritmetica entera
CAPITULO 5: SECCION
DE PROCESAMIENTO 143

5.1.
ARITMETICA DE PUNTO FIJO

Vamos a comenzar este tema estudiando la aritmetica en punto fijo, de la que


los enteros son el caso particular de estar situado el punto decimal a la derecha
del dgito menos significativo del n
umero. Veremos tanto el HW que hay dentro
de la ALU como los algoritmos que se tienen que ejecutar para realizar las
operaciones aritmeticas: suma, resta, multiplicaci on y divisi
on. Adem as
cuando se estudie la aritmetica en punto flotante se podr a comprobar como
esta se basa en operaciones en punto fijo.

5.2. SUMA Y RESTA

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.

5.2.1. Algoritmos de suma y resta


Binario natural
Si nos detenemos a pensar en la forma en que se realiza con l apiz y papel la
suma de dos n umeros A y B de n bits, observamos que para la obtenci on del
dgito i-esimo del resultado, s i , intervienen no solo los dgitos ai y bi de los
sumandos, sino, adem as, el carry ci , que ha sido generado previamente (en la
etapa i-1). Adem as, junto con s i , se va a generar el carry ci+1 , necesario para
el computo de si+1 :

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

ver de la suma anterior, sn+1 = cn+1 . Si la aritmetica es de n bits, es decir, los


n
umeros han de ser representados con n bits, se produce overflow si s i+1 = 1.
Las ecuaciones l
ogicas necesarias para obtener s i y ci+1 son:

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

Tabla 5.1: Tabla de verdad de la suma

En este apartado hemos tratado la suma de n umeros positivos represen-


tados en binario natural con n bits. Si adem
as queremos realizar operaciones
con numeros negativos, debemos utilizar los sistemas de representacion en
Signo/Magnitud, Complemento a 1 o Complemento a 2.

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

Si an = bn Sumandos de distinto signo.


Se restan las magnitudes de n-1 (bits) mediante la ecuaci
on:
si = (ai bi ) ci
(5.3)
ci+1 = ai bi + (ai bi ) ci

donde ci es el acarreo de la resta, tambien llamado borrow .


Si
(
0 Poner sn = an ,
cn =
1 Poner sn = bn y hacer C2(sn1 . . . s2 s1 ).

Para restar A B, habr a que cambiar el bit de signo de B (b n = bn ) y


aplicar el algoritmo de suma comentado anteriormente.
Los inconvenientes de representar los numeros en S/M son claros:
El algoritmo a seguir es complejo.
El coste asociado al HW necesario es elevado, dado que necesitamos una
unidad sumadora que implemente al ecuaci on 5.2 y una unidad restadora
que haga lo propio con la ecuaci
on 5.3. Ademas, es necesario un HW para
hacer el C2 para el caso en que cn = 1.

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

Figura 5.1: Semi-sumador

En la siguiente etapa, un sumador completo o full-adder se construye


CAPITULO 5: SECCION
DE PROCESAMIENTO 147

mediante dos semi-sumadores, como se ve en la figura 5.2, que implementa la


ecuaci
on 5.2 completa.
FA
HA
ci A S si ci si
xi A S B C xi ci+1
yi ci+1
B C yi
HA

Figura 5.2: Sumador completo (de un bit)

Aunque el sumador elemental se emplea normalmente como bloque cons-


tructivo de los sumadores paralelos, que estudiaremos en el siguiente apartado,
es posible construir un sumador utilizando uno s olo de esos elementos suma-
dores. Se tratara de un sumador serie, como el de la figura 5.3, en el que la
suma se ira realizando bit a bit, de un modo secuencial. Para ello, A y B se
pueden almacenar en sendos registros de desplazamiento, debiendose disponer
adem as de un biestable en el que almacenaremos el carry generado por cada
etapa (suma elemental) de cara a su utilizacion en la siguiente.

FA
A an . . . . . . . . . . . . a2 a1 xi si sn . . . . . . . . . . . . s2 s1 S

B bn . . . . . . . . . . . . b2 b1 yi ci+1 FF
ci

CK

Figura 5.3: Sumador serie (de n bits)

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

ci+1 , es el acarreo de entrada para el sumador i+1, con 1 i n 1.


Hay una lnea de entrada, c1 , y una de salida, cn+1 . Un esquema de un
sumador de este tipo para n umeros enteros de n bits se muestra en la
figura 5.4.
FA c2 FA c3 FA c4 FA cn+1= s n+1
c1 ci ci+1 ci ci+1 ci ci+1 ... cn ci ci+1
a1 xi 1 s a2 xi 2 s a3 xi 3 s an xi n s
i b2 i b3 i ... bn i
b1 yi yi yi yi

s1 s2 s3 s n s n+1

Figura 5.4: Sumador de acarreo propagado (de n bits)

El acarreo puede propagarse desde c1 hasta la ultima suma en serie,


a traves de los n sumadores, de forma que, en el peor de los casos,
el tiempo en realizar una suma corresponde a la suma de los tiempos
empleados por n sumadores elementales. Si se disena una ALU sncrona,
este tiempo es el que debemos elegir para realizar una suma completa.
2. Carry look-ahead adders (Sumadores con acarreo anticipado)
Si examinamos la ecuaci on l
ogica del sumador elemental, podemos
ver que la ecuaci
on del acarreo,

ci+1 = ai bi + (ai bi ) ci

puede reescribirse en funci


on de dos terminos:
a) Generaci on del acarreo gi+1 = ai bi
b) Propagaci on del acarreo pi+1 = ai bi
De forma que quedara:

ci+1 = gi+1 + pi+1 ci

Comenzando con un acarreo inicial c1 y g1 = c1, tenemos la ecuaci


on
de recurrencia:
' i i+1
+
ci+1 = gi+1 + pk gj
j=1 k=j+1

donde y representan las funciones l ogicas OR y AND respectiva-


mente.
Cada uno de los ci se expresa ahora en funci on de aj , bj y c1 , con
1 j i. Esto nos permite dise
nar los sumadores con acarreo anticipado
CAPITULO 5: SECCION
DE PROCESAMIENTO 149

(CLA), en donde un acarreo se genera antes de que su bit suma haya


sido obtenido. Si, por ejemplo, comparamos dos sumadores comerciales
de 4 bits, como el 74LS83 (con arquitectura ripple carry) y el 74LS283
(con arquitectura CLA), encontramos lo siguiente:
Tienen aproximadamente el mismo n umero de puertas.
El 74LS283 (CLA) tiene, en el peor de los casos, un retardo de 4
niveles de puertas, en lugar de los 8 que le corresponden al 74LS83.
La velocidad del CLA es 3 veces superior a la del 74LS83
Sin embargo, restricciones electricas de fan-in y fan-out 10 impiden
una extensi on directa del sistema descrito a sumadores para palabras de
gran longitud. La soluci on es conectar en cascada CLAs, con el acarreo
de salida de uno conectado al acarreo de entrada del siguiente.
3. Carry save adders (Sumadores con acarreo almacenado)
Supongamos que se necesita sumar m operandos (m > 2). Esto ocu-
rre, por ejemplo, en una multiplicaci on. La velocidad de esta operaci on
se puede aumentar dejando la propagaci on del acarreo para la u ltima
suma.
Comenzaremos por describir como funciona el bloque elemental, pre-
parado para trabajar con tres valores. Estos m odulos b
asicos se podran
interconectar entre s para ampliar el n umero de operandos, siguiendo
una estructura que veremos un poco m as adelante.
Cuando se va a calcular la suma de tres valores, primero sumamos los
tres n
umeros sin propagar el acarreo, que sencillamente apuntamos en
una variable, c, mientras guardamos los bits de suma en otra variable s.
A continuaci on, realizamos s + 2c para conseguir el resultado final. Por
ejemplo, veamos el modo de proceder para sumar x=10, y=5 y z=12,
que podramos dividirlo en dos etapas: c alculo de s y c y obtenci on del
resultado, s + 2c.
Las ecuaciones necesarias para conseguir s y c son:
si xi yi zi
ci xi yi + (xi yi ) zi
que son pr
acticamente iguales a las que implementa un full-adder (ecua-
10
Por definici
on, el m
aximo n umero de puertas l ogicas que una puerta puede excitar,
permaneciendo los niveles electricos en los m argenes garantizados, es el fan-out de dicha
puerta. Por analoga, el fan-in de una puerta es una medida de cu anto carga una de las
entradas de dicha puerta a la puerta excitadora. En el circuito que implementa un CLA,
la salida de algunas puertas han de conectarse a las entradas de un gran n umero de otras
puertas, tanto mayor cuanto mayor sea el n umero de bits del sumador, pudiendose alcanzar
lo lmites impuestos por el fan-in y fan-out de la tecnologa.
150 FUNDAMENTOS DE LOS COMPUTADORES

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

Para implementar un carry save adder (CSA) vamos a usar n suma-


dores completos, pero en vez de conectarlos como en el caso del ripple-
adder, tomamos como entradas los tres sumandos -x, y, z- gener andose
las dos salidas, s y c, como se muestra en la figura 5.5 (para el caso n=4).
X Y Z

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

Figura 5.5: Sumador de acarreo almacenado de 4 bits

Es evidente que el tiempo de propagaci on de un CSA es igual al


tiempo de propagaci on de los full-adders que lleva dentro, ya que los n
sumadores completos operan en paralelo para obtener s y c.
Utilizando varios CSAs interconectados, podemos realizar imple-
mentaciones del tipo a
rbol de Wallace, que nos permiten sumar un n ume-
ro grande de operandos, como se puede ver en la figura 5.6.
Es importante notar como el u ltimo sumador del arbol de Wallace es
un sumador de acarreo propagado o anticipado de dos sumandos, que a
su salida proporciona la suma total.
CAPITULO 5: SECCION
DE PROCESAMIENTO 151

a b c d e f g h i
4

CSA 1 CSA 2 CSA 3


2c1 s3
s1 s2 2c2 2c3

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. PRODUCTO DE ENTEROS SIN SIGNO O NATURA-


LES

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

basa en expresar el valor del multiplicador en funci on de los dgitos de su


representaci
on Base B (X es igual a la suma de los dgitos de su representaci on
por las sucesivas potencias de la base), es decir, si tomamos B = 10:
X = xn1 10n1 + + x1 101 + x0 100 (5.4)
Al multiplicar Y X aplicamos la propiedad distributiva en la evaluaci on
del producto del multiplicando por la nueva expresi on del multiplicador (ecua-
ci
on 5.4). El c
omputo se descompone en la suma de n factores, escalados por
las sucesivas potencias de la base. Cada factor es el resultado de multiplicar
un dgito del multiplicador por los n dgitos del multiplicando.
En la figura 5.7 mostramos un ejemplo de multiplicaci on de enteros en base
diez siguiendo el algoritmo que utilizamos tpicamente para multiplicar en un
papel.

Ejemplo: 345 123 = 345 (1 102 + 2 101 + 3 100 ) =

(345 1 102 ) + (345 2 101 ) + (345 3 100 )

345 -> Y 345


x 123 -> X x 123
----- -----
(345x3) 1035 -> PP0
(345x2) 690 -> PP1
+ (345x1) + 345 -> PP2
----------- -------
42435

Figura 5.7: Ejemplo de multiplicaci


on con l
apiz y papel

Una implementaci on hardware del algoritmo del producto, tal y como se


realiza con l
apiz y papel, requerira almacenar temporalmente los productos
parciales P Pi . Sin embargo, si, inmediatamente a su obtenci on, sumamos el
producto P Pi , acumul andolo en una u
nica variable P , obtendremos un sustan-
cial ahorro de recursos de almacenamiento. Para cada dgito del multiplicador
obtendremos su producto parcial por el multiplicando y lo acumularemos en
P . La figura 5.8 muestra la realizaci on del mismo producto de la figura 5.7
mediante la acumulaci on de los productos parciales, junto con el hipotetico
HW de multiplicaci on siguiendo este nuevo algoritmo.
Algortmicamente podemos expresar este procedimiento mediante el si-
guiente pseudoc odigo:
CAPITULO 5: SECCION
DE PROCESAMIENTO 153

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

Figura 5.8: Mejora del algoritmo y su implementaci


on

P(0)=0;
for (i=0; i<n; i++)
{
P (i + 1) = xi Y B i + P (i);
}
Z = P(n);

donde los ndices entre parentesis muestran el mismo elemento en distintos


pasos, mientras que los subndices indican componentes de un elemento.
La realizaci
on hardware del algoritmo requerira, como puede observarse en
la figura 5.8, un sumador Base B de 2n dgitos, un multiplicador Base B para
multiplicar un dgito de X por Y y un desplazador a la izquierda de 2n dgitos
para implementar los desplazamientos asociados al termino B i . Al comienzo
del algoritmo el registro Z debe inicializarse a 0. En la primera iteraci
on, i=0 ,
el desplazador no opera, en la iteracion i=1 , realizar
a un desplazamiento a la
izquierda, para i=2 , dos desplazamientos, etc. Tambien, al final de cada itera-
ci
on del algoritmo, el contenido del registro X debe desplazarse una posici on
a la derecha, ya que el dgito menos significativo de X es el que multiplica a
154 FUNDAMENTOS DE LOS COMPUTADORES

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.

Ejemplo: 345 123

Y AC X Y (n)

345 0000 123


*
+ 1035
1035 123 n+1

0103 512
+ 0690 SUMADOR
n+1
0793 512
n+1
0079 351
+ 0345 AC (n+1) X (n)

0424 351
Z= 0042 435

Figura 5.9: Implementaci


on de la segunda mejora del algoritmo

Este algoritmo consiste en inicializar un registro acumulador, AC, a cero


y luego iterar n veces los dos pasos siguientes:
CAPITULO 5: SECCION
DE PROCESAMIENTO 155

Sumar con AC el dgito menos significativo del registro X por el conte-


nido del registro Y, es decir: AC AC + (Y x 0 ). El dgito x0 se ha
marcado en negrita en el ejemplo.
Desplazar el par de registros ACX una posici on a la derecha.
De esta forma, el HW necesario para implementar este algoritmo, tambien
presentado en la figura 5.9, s
olo necesita un sumador de n+1 bits.

5.3.2. Caso Binario. Algoritmo de Suma y Desplazamiento


La particularizacion del algoritmo del anterior apartado y sus estructuras aso-
ciadas, en el caso binario, traen consigo algunas simplificaciones.
Puede observarse que en el caso binario, el c
alculo de x i Y se reduce a 00...0
si xi = 0, e Y si xi = 1. Adem as, el producto de xi Y es un numero de n bits,
lo que permite utilizar un sumador binario de s olo n bits. Deberemos tener
en cuenta que al sumar dos n umeros en binario natural de n bits el resultado
puede ser de n+1. Afortunadamente, en el caso de n umeros binarios natural,
este bit adicional coincide con el acarreo de salida del sumador. Por ello, en
las sumas intermedias, tendremos que considerar este acarreo y salvarlo en
un biestable, F, para introducirlo en el registro AC cuando realicemos el
desplazamiento a la derecha. Todo esto se muestra en la figura 5.10.

Y (n)

CONTROLADOR
SUMADOR
Cout n bits

n
Z (2n)

F AC X (n)

Figura 5.10: Implementaci


on del algoritmo de multiplicaci
on binario

Como vemos, la realimentaci


on del carry de salida, C out , a traves del biesta-
156 FUNDAMENTOS DE LOS COMPUTADORES

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

Este algoritmo implementado en el controlador, ya sea mediante control ca-


bleado o microprogramado, ser a el encargado de generar las se
nales de control
apropiadas para que se realicen las sumas y los desplazamientos necesarios, en
funci
on del contenido del registro X, cuyo bit menos significativo es testeado
desde el controlador.

5.3.3. Mejora para saltar sobre ceros y unos consecutivos (bit-


scanning)

En la formulaci on del algoritmo de multiplicaci on del apartado anterior, la


aparicion de 0s en el multiplicador hace que no se realice la suma y s olo se
efectue el desplazamiento (saltar sobre 0s). A continuaci
on vamos a demostrar
como con un sumador-restador se pueden efectuar tanto saltos sobre cadenas
de 0 como de 1 consecutivos. Sea un n umero binario con una cadena de
k unos consecutivos a partir de la posici on i.

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

. . . + 2i+k1 + 2i+k2 + ... + 2i+1 + 2i + =


= . . . + (2k1 + 2k2 + .. + 21 + 20 ) 2i + =
= . . . + (2k 1) 2i + =
= . . . + 2i+k 2i + . . .

Por lo tanto, la contribuci


on de las k sumas puede sustituirse por una suma
y una resta. De esta forma, podemos reescribir el algoritmo de multiplicacion
binaria, ya que si Y es el multiplicando y el multiplicador, X, contiene en su
representaci
on una cadena de unos de longitud k a partir del bit i- esimo, la
ecuaci
on parcial resultante de desarrollar X Y queda:

Y (2i+k1 + 2i+k2 + ... + 2i+1 + 2i ) = Y 2i+k Y 2i

Es decir, el efecto de una cadena de 1s consecutivos en el multiplicador puede


sustituirse por restar el multiplicando en la posici on en que comienza la cadena
y sumar el multiplicando en la posici on posterior al u ltimo uno de la cadena.
Los desplazamientos, en cada paso, se siguen manteniendo.
En pocas palabras, s olo habra suma o resta del multiplicando al valor
acumulado cuando en el recorrido de los dgitos del multiplicador se produce
un cambio con respecto al dgito anterior.
Esta idea puede ser plasmada en el c odigo del algoritmo de dos formas
distintas:
(a) Con ayuda de un flag que informe si estamos o no en una cadena de 1s.
(b) Analizando conjuntamente el dgito del multiplicador correspondiente a
la etapa actual y el anterior.
En la opci on (b), en lugar de un flag se utiliza el bit anterior del multiplicador
(al comienzo x1 = 0). La decisi on sobre si hay que sumar o restar el multi-
plicando se efectua segun la tabla 5.2, analizando en cada paso de la iteraci on
i el bit i-
esimo del multiplicador y el anterior, x i1 .
Dado que se realizan sumas y restas, los resultados parciales pueden ser
negativos, por lo que habr an de ser almacenarlos considerando su signo. Si
en la implementaci on hardware se utiliza unicamente un sumador binario y la
resta se realiza mediante la suma del complemento a dos del substraendo, los
resultados negativos saldr an en C2. Para respetar el signo de los resultados
parciales, los desplazamientos deber an ser aritmeticos (extensi on de signo).
Como siempre, el resultado de sumar o restar dos n umeros de n bits puede
requerir n+1 bits, pero en este caso (suma/resta en C2) el bit adicional no
158 FUNDAMENTOS DE LOS COMPUTADORES

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)

Tabla 5.2: Operaci


on a realizar en el algoritmo bit-scanning seg
un los bits del
multiplicador, X

coincidira con el carry, por lo que habr


a que utilizar un sumador de n+1
dgitos. El algoritmo quedara:

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;

donde la ultima lnea del c


odigo tiene en cuenta el caso en que el multipli-
cador (en binario natural) tenga su bit m as significativo a uno, con lo cual la
u
ltima operaci on sera una resta y el resultado sera incorrecto. Eso se corrige
sumando Y despues de la u ltima iteracion si la u
ltima operacion fue una resta.
Por u
ltimo, presentamos un ejemplo de ejecuci on de dicho algoritmo y el
HW necesario para su implementaci on en la figura 5.11
En general, el n
umero de sumas/restas efectuadas en este algoritmo ser a me-
nor que el de sumas en el cl asico basado en suma y desplazamiento. Sin em-
bargo, la eficiencia depende de los datos y, en el peor caso (secuencia de unos
y ceros alternados, ...010101...), requiere m as operaciones y, por lo tanto, m as
tiempo de c omputo que el tradicional de suma y desplazamiento.

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

Ejemplo: 0011 0111 (3 7)


0 Y (n)
n+1
Y AC X
0011 00000 0111
+C2(Y) 11101
11101 0111 n+1

11110 1011
SUMADOR Cin
11111 0101 n+1 bits
CONTROLADOR

11111 1010
n+1
+(Y) 00011 Z (2n+1)

00010 1010 AC X (n)


X-1
00001 0101

Figura 5.11: Implementaci


on del algoritmo bit-scanning

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

Tabla 5.3: Recodificaci


on de los bits del multiplicador (para c = 2)

Por ejemplo, si Y=3 y X=30, el multiplicador puede expresarse como:

X = 01 11 10 = (01)24 + (11)22 + (10)20

de forma que:
. /
Y X = Y (01)24 + (11)22 + (10)20 = Y 24 + 3Y 22 + 2Y 20

Este metodo, a su vez, puede combinarse con el de salto sobre ceros y


unos. En el caso de c = 2, esto nos ahorra el c
alculo de 3 X, que es el de
mayor complejidad, ya que implica un desplazamiento y una suma. En el caso
en que c = 1, el algoritmo se llama de Booth cuando los operandos est an
160 FUNDAMENTOS DE LOS COMPUTADORES

representados en C2. El algoritmo es exactamente igual al del bit-scanning


de la p
agina 158 quitando la u ltima lnea (la correcci
on final). Por tanto, el
algoritmo de Booth permite multiplicar n umeros en C2 (ya sean positivos o
negativos). Al igual que le ocurra al algoritmo bit-scanning, un uno (o un
cero) aislado provoca una resta y una suma, cuando el algoritmo de suma
y desplazamiento s olo da lugar a una suma. De esta forma, el algoritmo de
Booth genera, en el caso de un multiplicador con unos y ceros alternados, n/2
sumas y n/2 restas, frente a las n/2 sumas que generara el algoritmo de suma
y desplazamiento. Sin embargo, ese inconveniente se resuelve mediante una
optimizacion del algoritmo de Booth: el algoritmo de Booth modificado, que
detecta unos y ceros aislados, por lo que es uno de los m as usados.

5.4. DE ENTEROS SIN SIGNO


DIVISION

En nuestro estudio de la divisi on s


olo nos detendremos en el caso de que los
operandos sean enteros sin signo. Muchas m aquinas realizan una conversi
on,
desde la representaci
on en C2 o C1, de los operandos involucrados en la divi-
si
on, a su representaci
on en signo magnitud. De esta forma, la divisi
on puede
realizarse conforme a los algoritmos que se exponen en este apartado, tratando
el signo aparte.

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

En el caso binario podemos hacer un an alisis parecido, con la simplificaci


on
de que las unicas posibilidades de los bits del cociente son 0 y 1. Es decir, se
empieza apostando por que el bit del cociente ser a uno, es decir, restando el
divisor. En caso de que el resto sea positivo, hicimos una buena apuesta, pero
en caso contrario, hay que restaurar y cambiar el cociente a 0. En la figura
5.12 vemos un ejemplo de aplicaci on de este algoritmo.

Ejemplo: 15 2 (1111 0010)

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

Figura 5.12: Ejemplo del algoritmo de divisi


on con restauraci
on

El circuito mas simple que implemente la divisi on binaria deber a ir ajus-


tando met odicamente la posicion del divisor en relacion con el dividendo y
realizar una sustraccion. Si el residuo es cero o positivo, se determina el bit
del cociente como 1, el residuo se ampla con otro bit del dividendo, el divisor
se vuelve a ajustar y se efectua otra sustracci
on. Por otra parte, si el residuo
es negativo, se determina el bit del cociente como 0, el dividendo se restaura
sum andole de nuevo el divisor y este divisor se ajusta para otra sustracci on.
El algoritmo quedara entonces como el de la figura 5.13
En la figura 5.14 se muestra un circuito con el que se podra implementar la
162 FUNDAMENTOS DE LOS COMPUTADORES

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

Figura 5.13: Algoritmo de divisi


on con restauraci
on

tecnica anteriormente expuesta de divisi


on con restauraci
on. En el, un divisor
positivo de n bits se carga en el Registro X y un dividendo positivo de n bits
se carga en el Registro Y, al principio de la operaci on. El Registro AC,
de n-1 bits, se pone a 0. Cuando la division se termine, el cociente de n bits
estara en el Registro Y y el residuo en el AC. Las substracciones necesarias
se facilitar
an si usamos aritmetica en Complemento a 2.

5.5. ALGORITMOS EN PUNTO FLOTANTE

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.

5.5.1. Suma y Resta


Dados dos n umeros en punto flotante, X = M 1 B E1 e Y = M2 B E2 , su suma
se realiza en cuatro pasos (la resta es an
aloga):
Detectar el operando de mayor exponente.
CAPITULO 5: SECCION
DE PROCESAMIENTO 163

X (n)

n n

Control
SUM/RES
n bits
1

n-1

AC (n-1) Y (n)

n-1 1

Figura 5.14: Implementaci


on del algoritmo de divisi
on binario

Desplazar la mantisa del operando de menor exponente |E 1 E2 | log 2 B


posiciones. La base B debe ser una potencia de 2 (B=2 en IE 3 754,
B=16 en el IBM-360), para aplicar esta f
ormula.
Sumar las mantisas (o restarlas en caso de que tengan distinto bit de
signo).
Normalizar.

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

Entender los principios de localidad y jerarqua de memoria


Introducir las tecnicas de memoria entrelazada, asociativa y cache
CAPITULO 6: MEMORIAS 169

6.1. ANCHO DE BANDA, LOCALIDAD Y JERARQUA DE


MEMORIA

La Memoria contiene la mayor parte de las instrucciones y datos del programa


que se esta ejecutando. Lo que no cabe se almacenar a en memoria secundaria,
por lo que, si consideramos esta como parte de la memoria, podemos afirmar
que toda la informaci on de nuestros programas se encuentra en memoria.
Las dos caractersticas mas importantes de la memoria son el tama no y el
ancho de banda. El tama no es su capacidad, es decir, el n
umero de palabras
que puede almacenar. El ancho de banda es el n umero de palabras que
podemos acceder por unidad de tiempo, determinando por tanto la velocidad
a la que podemos trabajar con ella.
La disparidad entre la velocidad a la que son capaces de computar hoy da
los procesadores y el ancho de banda de las memorias plantea un importante
problema. Esto es debido a que el micro procesa mucho m as r
apido que la
velocidad a la que las memorias son capaces de suministrarle los datos. La
situacion ideal se alcanzara si Velocidad del Procesador = Velocidad de la
Memoria.
Para paliar este problema se alcanza un compromiso. Se invierte un dinero
en tecnologa de alta velocidad para aumentar el ancho de banda de la memo-
ria. Lo ideal sera construir una memoria suficientemente grande y con gran
ancho de banda, pero la tecnologa es tan cara que resulta prohibitivo, por lo
que solo se usar
a cuando el gasto adicional que supone justifique la inversion.
Tendremos, por lo tanto, un compromiso entre tama no y ancho de banda, de
modo que si aumentamos uno se debe reducir otro si queremos mantener un
precio constante.
La soluci on que se adopta, siguiendo siempre criterios econ omicos y de
factibilidad, es usar diferentes configuraciones de memoria m as r
apidas (y pe-
quenas) donde podamos sacar alguna ventaja por la inversi on adicional que
suponen. Las estrategias m as usadas son:
Entrelazamiento de memoria
Empleo de memorias asociativas (se usan con memorias cache y virtual)
Memoria cache
Memoria virtual
La efectividad de estas soluciones se basan en el principio de localidad, que
puede ser formulado seg un dos vertientes:
a) Localidad Temporal: Si estamos referenciando la posici on de memoria
I, es muy probable que la volvamos a referenciar en un breve periodo
170 FUNDAMENTOS DE LOS COMPUTADORES

de tiempo, es decir, que la informaci on que utilizo en un momento dado


la volvere a utilizar pronto. Se puede ver claramente que esto es lo que
sucede en los lazos.
b) Localidad Espacial: Si la posici on de memoria I es referenciada, es muy
probable que a continuaci on se referencien direcciones cercanas a I o
contiguas en memoria. Esto es lo que ocurre cuando accedemos a datos
relacionados como arrays, matrices. Se debe a que los programas, en su
mayor parte, son secuenciales.
El principio de localidad puede resumirse en lo que se denomina la Regla
90/10, que nos dice que el 90 % del tiempo de ejecuci on de un programa se
consume en el 10 % del c odigo. Si estos dos principios no se cumpliesen, no
tendra sentido aplicar las tecnicas de memoria que vamos a estudiar en este
tema.

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

Figura 6.1: Jerarqua de Memorias

En la parte mas alta de la pir


amide se sit
uan las memorias m as r
apidas,
que al ser tambien las mas costosas ser
an las de menor tama no. En el otro
extremo, tendremos las memorias de m as capacidad, que adem
as ser
an las mas
lentas y econ
omicas.

6.2. DE LA MEMORIA
ORGANIZACION

6.2.1. Memoria Entrelazada


Esta tecnica consiste en dividir la memoria en m
odulos a los que podemos ac-
ceder de manera independiente, de modo que, en un mismo instante, es posible
CAPITULO 6: MEMORIAS 171

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

Mdulo Direccin dentro del Mdulo

DIR DIR DIR DIR


Decodificador ...
M-1 M-2 1 0 0 1 M-2 M-1

... CE CE CE CE
...

Figura 6.2: Memoria Entrelazada de Orden Superior

b) Orden Inferior: Palabras consecutivas van a parar a m


odulos consecuti-
vos.
n-m bits m bits

Direccin dentro del Mdulo Mdulo

DIR DIR DIR DIR


... Decodificador
0 1 M-2 M-1 M-1 M-2 1 0
CE CE CE CE ...
...

Figura 6.3: Memoria Entrelazada de Orden Inferior

El rendimiento de este tipo de memorias se degrada cuando tenemos con-


172 FUNDAMENTOS DE LOS COMPUTADORES

flictos de memoria. Un conflicto de memoria se produce cuando dos accesos


consecutivos se refieren al mismo m odulo. En el peor de los casos, cuando
siempre direccionamos al mismo m odulo, no tendremos ninguna ganancia con
respecto a una memoria convencional (un solo m odulo). Sin embargo, en el
mejor de los casos, si conseguimos que M direcciones consecutivas se refieran
a cada uno de los M m odulos, lograremos multiplicar la velocidad del m odulo
por M .
Si observamos el funcionamiento de cada una de las posibles configuracio-
nes, veremos como se dar an mas conflictos en la de orden superior, fen
omeno
explicado por el principio de localidad espacial.
Sin embargo, las memorias entrelazadas de orden superior tienen una serie
de ventajas:
Se usan en sistemas multiprocesador, en los que cada procesador accede
a su propio modulo.
Se expande con facilidad. Ampliar su tama no ser
a poco m as complejo
que anadir nuevos modulos.
Si se rompe un m odulo, solo afectar
a a un area de memoria localizada.
De cualquier modo, normalmente se usa la tecnica de entrelazamiento de
orden inferior, ya que es la que minimiza el n umero de conflictos.

Rendimiento de Memorias Entrelazadas

En este apartado se analizar a el rendimiento de un sistema de memoria en-


trelazada de orden inferior, considerando M el factor de entrelazamiento. Su-
pondremos que el factor limitante es la operaci on de memoria, despreciando el
tiempo de carga de los latches. El c alculo del rendimiento se realiza para una
traza equiespaciada con distancia entre las peticiones Q, es decir, la solicitud
de peticiones es {0, Q, 2Q, 3Q, ...}.
Para el caso de entrelazamiento con latches a la salida, tendremos que,
si Q M , es imposible leer en paralelo m as de una peticion, ya que
la distancia entre ellas es mayor que el rango de posiciones guardada
simultaneamente en los latches. Si por el contrario Q < M , podemos
obtener m as de una peticion en paralelo con una sola lectura simult
anea
de los m odulos. En esta situaci on, si Q = 1, tendremos el m aximo pa-
ralelismo, ya que accedemos a todo el rango de posiciones presentes en
los latches tras el acceso a los m odulos de memoria. Si 1 < Q < M , es
la relaci
on M/Q la que limita el n umero de accesos disponibles en los
latches tras el acceso a los m odulos. La siguiente expresion proporciona
CAPITULO 6: MEMORIAS 173

la aceleraci
on () del sistema bajo las restricciones mencionadas 11 :

(
1 si Q M
= 0 M
1
Q si 1 Q < M

En el caso de entrelazamiento con latches a la entrada, la limitaci on en


el paralelismo de acceso a los m odulos viene dado por las colisiones de
acceso a un m odulo. Como la traza que analizamos est a constituida por
peticiones de la forma kQ, con k N, existir a colisi
on (acceso al mismo
modulo) entre dos peticiones kA Q, kB Q si su diferencia es multiplo de M
(ya que dichas peticiones se hayar
an mapeadas en el mismo m odulo). Por
tanto, la aceleraci
on del sistema ser
a aquel valor natural, mas peque no,
que multiplicado por Q proporciona un m ultiplo de M , es decir:
m.c.m.(Q, M ) M
= min{k N | k Q = M } = =
Q m.c.d.(Q, M )

6.2.2. Memoria Asociativa


Consideremos la siguiente tabla, una estructura bastante usada para organizar
la informaci
on:
APELLIDO PESO TALLA EDAD

PEREZ 63 1.71 27
GARCIA 90 1.87 45

LOPEZ 82 1.83 33
MARTIN 51 1.64 61
MILLER 100 2.05 24
ANSLEY 110 2.04 25
La informaci on en la tabla est
a formada por una serie de entradas llamadas
registros (uno por cada lnea), y estos a su vez se dividen en campos (en el
ejemplo son peso, talla y edad).
A la hora de acceder (leer o escribir) a la tabla tenemos varias posibilidades.
a) La m as com un es la que proporcionan las memorias con acceso aleatorio,
es decir, especificando la direccion fsica del dato que queremos acceder.
La direccion fsica no tiene ninguna relaci on l
ogica con la informaci
on
11
Con x indicamos el ceil de un n
umero, es decir el entero m
as cercano hacia +, por
ejemplo 3.5 = 4, y 3.5 = 3. El entero m as cercano hacia se denota x y se
conoce como funcion floor.
174 FUNDAMENTOS DE LOS COMPUTADORES

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

Figura 6.4: Diagrama de Bloques de una Memoria Asociativa

(D.E.D.) es el encargado de informar a la Unidad de Control de las celdas que


contienen la informacion buscada.
El mecanismo de funcionamiento es el siguiente:
La Unidad de Control pone todos los I i a 1.
Se escribe el registro Comparando.
Se pone el valor que corresponda en el registro de M ascara.
Tras ello, todos los registros indicadores correspondientes a las celdas
cuyo valor, para los bits en los que la mascara valga 1, coincida con el
comparando, se quedar an con el valor de 1 y el resto se pondr
an a 0.
Operaciones de b usqueda tpicas en memorias asociativas son: busquedas
de extremos (m aximos, mnimos), de equivalencia (igual a, distinto a), por
umbral (mayor que, menor que) y selecciones de valores ordenados seg un un
campo (ascendente, descendente).
La principal ventaja de estas memorias estriba en que la complejidad de los
algoritmos mencionados es funci on del tamano de las celdas y no de cuantas
celdas esten ocupadas en la memoria. En otras palabras, buscar un n umero
maximo en una memoria asociativa no depende de cuantos n umeros contenga
176 FUNDAMENTOS DE LOS COMPUTADORES

la memoria, sino de cuantos bits se utilizan para representar cada n


umero.

6.2.3. Memoria Cach


e
Es una memora rapida, cara y pequena. Se encuentra situada entre el proce-
sador y la memoria principal. En principio se puede considerar que funciona
como un buer de la memoria principal.

CACHE Memoria
CPU
Principal

Figura 6.5: Ubicaci


on de la Memoria Cache

La cache se usa para almacenar una copia de aquellas palabras de la me-


moria principal que est
an siendo usadas actualmente (y que, seg
un el principio
de localidad son las que se usar
an con mayor probabilidad en un futuro cer-
cano), ya que, debido a su reducido tama no, no podemos almacenar toda la
informacion que nuestro programa necesita.

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

copia existente en memoria principal, para mantener la coherencia de


cache.
La base del exito del sistema es la localidad en los accesos durante la ejecuci
on
de los programas. Podemos mencionar los siguientes aspectos que determinan
el rendimiento de la cache:
1. Indice de aciertos o probabilidad de que un dato se encuentre en la cache.
2. Tiempo de acceso a cache.
3. Tiempo de reemplazo.
4. Tiempo consumido en la reparaci on de las inconsistencias.

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

Directorio Cach Zona de Almacenamiento

MEMORIA CACH

MEMORIA PRINCIPAL
Palabras de 2 bytes, lneas de 2 palabras

Figura 6.6: Estructura de una Memoria Cache

El Directorio de la Cache guarda la direcci


on de comienzo de la lnea que
178 FUNDAMENTOS DE LOS COMPUTADORES

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

Figura 6.7: Contenidos de la Memoria del Ejemplo

La cache se va a encontrar inicialmente vaca, con datos no v


alidos, por lo
que sus bits Vi van a valer todos 0. A continuacion, el procesador realiza una
secuencia de accesos a las lneas de memoria siguientes:
27 : Fallo. Almacenar 27 en la Direccion 0, Poner V 0 = 1.
30 : Fallo. Almacenar 30 en la Direccion 1, Poner V 1 = 1.
33 : Fallo. Almacenar 33 en la Direccion 2, Poner V 2 = 1.
31 : Fallo. Almacenar 31 en la Direccion 3, Poner V 3 = 1.
CAPITULO 6: MEMORIAS 179

33 : Acierto. La lnea est a en la cache. Hacemos una escritura en el byte


0, escribiendo un 9 en el, por lo que el bit M se pondr a a 1 (lnea
modificada).
30 : Acierto.
31 : Acierto.
27 : Acierto.
36 : Fallo. Habr a que traer su valor de memoria principal a cache. Como la
cache se encuentra ya llena, tendremos que reemplazar alguna lnea. La
lnea elegida depender a del algoritmo de reemplazo usado:
* FIFO se reemplaza la m as antigua, la 27.
* LRU se sustituye la que lleva m as tiempo sin referenciar, que en
nuestro caso es la lnea 33.
* Aleatorio se escoge cualquiera de ellas al azar.
En caso de que haya que eliminar la lnea 33 de la cache, como se
modific o, antes de borrarla y escribir en su sitio la 36, hay que actualizar
su copia (no v alida ya) que existe en memoria principal.
En la figura 6.7 podemos ver el estado de la memoria cache, justo despues
de que el procesador escriba en la lnea 33.
Visto el funcionamiento b asico de una cache, veamos diferentes organiza-
ciones que pueden existir en la zona de almacenamiento. El problema que
queremos resolver es c omo mapear los datos de la memoria principal en la
memoria cache, existiendo para ello diferentes criterios:
Asignaci on directa: lneas consecutivas en memoria principal van a parar
a lneas consecutivas en la memoria cache.
Asignaci on completamente asociativa: las lneas de memoria principal
pueden ubicarse en cualquier lnea de la memoria cache.
Asignaci on asociativa por conjuntos: cuando se usa esta estrategia, las
lneas de memoria cache se agrupan en conjuntos del mismo tama no. A
cada lnea de memoria principal se le asigna un conjunto, pero dentro
de este puede ocupar cualquier posici on.
Como conclusi on s podremos decir que si el n umero de fallos de cache es
pequeno, la CPU casi esta viendo una memoria tan grande como la memoria
principal y tan r apida como la memoria cache. Todo esto a un precio mucho
mas razonable que si dise namos el sistema computador con una cache tan
grande como la memoria principal.
180 FUNDAMENTOS DE LOS COMPUTADORES

SINOPSIS

La jerarqua de memoria surge como consecuencia de la localidad existente


en la ejecuci
on de los programas. En el dise no de esta jerarqua hay muchos
par
ametros a considerar, pero siempre tendr a un unico objetivo: maximizar el
ancho de banda y el tama no y minimizar el coste. El resultado mas remarcable
es que una jerarqua de memoria bien dise nada crea la ilusi
on de constituir
una memoria u nica tan grande como la memoria principal (o disco duro si
consideramos el nivel de memoria virtual) con el ancho de banda de la memoria
cache. Y todo con con un coste mucho mas razonable que el de una prohibitiva
memoria cache del tama no de la memoria principal o de un disco duro.
7
Entrada/Salida

OBJETIVOS

Recalcar la relevancia de la unidad de Entrada/Salida (E/S)


Distinguir entre E/S mapeada en memoria o por acumulador
Introducir los conceptos de E/S programada, por interrupciones y por
DMA
CAPITULO 7: ENTRADA/SALIDA 183

7.1.
INTRODUCCION

En los captulos anteriores hemos estudiado la CPU y la memoria. Nos queda


hablar de la E/S. En este captulo no vamos a tratar a los perifericos en s,
sino los mecanismos de comunicaci on con los perifericos.
En la Figura 7.1 encontramos una visi on general de un computador, con
los distintos bloques que se conectan al bus: CPU, memoria y los controladores
de los distintos perifericos del computador (impresora, red, etc).

Terminal Red

Memoria
Controlador Controlador

...

Controlador Controlador
CPU
Disco Duro Impresora
Clock
Clock

Figura 7.1: Diagrama de bloques de un sistema basado en procesador

Los perifericos no pueden conectarse directamente al bus por tres motivos:


Sincronizaci on : los perifericos tienen un reloj interno de frecuencia y fase
diferente a la de la unidad central.
Velocidad : el acceso a perifericos es unos 3 ordenes de magnitud m as lento
que el acceso a memoria principal.
Codificaci on : los sistemas de representaci on de la informaci on en la CPU
son diferentes a los usados por los perifericos.
Por estos motivos, es necesario colocar un controlador entre cada pe-
riferico y el bus. Mediante estos controladores vamos a intentar adecuar la
velocidad de los perifericos a la de la CPU.
Insistimos aqu en que un sistema CPU-Memoria no tiene ninguna utilidad
si no puede comunicarse con el exterior, es decir, sin un subsistema de E/S.
Por tanto, si queremos que el sistema completo sea r apido, no bastar a con
tener una CPU r apida y un acceso a memoria r apido si es frecuente el acceso
a los perifericos.
Por ejemplo, si los accesos a disco duro son lentos, el sistema completo se
ralentizar a, tanto m as, cuanto m as frecuentes sean los accesos a disco duro.
De nuevo puede aparecer el problema de cuello de botella que manifiesta el
184 FUNDAMENTOS DE LOS COMPUTADORES

sistema de memoria: el procesador consume los datos a mayor velocidad que


la que los perifericos pueden alcanzar para suministrar esos datos.

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

Puerto Puerto Puerto

Controlador Controlador
Perifrico Perifrico

Figura 7.2: Esquema general de un sistema basado en procesador y sus pe-


rifericos

a) E/S mapeada en E/S o por acumulador


En este caso tendremos diferentes se nales de control para la memoria y para
los puertos. Es decir, en cierto sentido, el bus de control est
a dividido: unas
CAPITULO 7: ENTRADA/SALIDA 185

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 Puerto 1 Puerto 2 Puerto

0
1
R/W Controlador Controlador
2 Memoria CPU Perifrico Perifrico

(a) Diagrama de Bloques

Mapa de Memoria
0
Mapa de E/S
0

2 m- 1

2 n- 1

(b) Mapa de Direcciones

Figura 7.3: E/S Mapeada en E/S

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.

b) E/S mapeada en memoria


En este caso, la memoria y los puertos tienen las mismas se nales de control,
es decir, y volviendo al ejemplo anterior, solo dispondremos de una se nal de
lectura/escritura (R/W). Por tanto, las instrucciones de transferencia de da-
tos en ensamblador ser an las mismas para ambos tipos de transferencia. Por
ejemplo, en los procesadores de Motorola, la instrucci on MOVE se puede utili-
zar tanto para lectura/escritura de posiciones de memoria como de puertos de
E/S.
De esta forma, si queremos distinguir entre un acceso a memoria y un
acceso a periferico, debemos asignar rangos de direcciones disjuntos a ambos
tipos de dispositivos. Es decir, en un sistema con E/S mapeada en memoria, el
espacio de direcciones de E/S no se puede solapar con el espacio de direcciones
de posiciones de memoria, como vemos en la figura 7.4.
Para terminar esta seccion de introduccion, vamos a enumerar las distintas

estrategias existentes para comunicar una CPU con sus perifericos. Estas ser
an
estudiadas a continuaci on en las pr
oximas secciones. Por orden de complejidad
ascendente, estas tecnicas son:
E/S dirigida por programa.
Interrupciones.
Acceso Directo a memoria (DMA).

7.2. E/S DIRIGIDA POR PROGRAMA

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

Puerto Puerto Puerto

Controlador Controlador
Memoria CPU Perifrico Perifrico

(a) Diagrama de Bloques

Memoria

2n - 1
2n
E/S
2 n+m -1

(b) Mapa de Direcciones

Figura 7.4: E/S Mapeada en Memoria

las operaciones de E/S. Ve amoslo a traves del siguiente ejemplo. Supongamos


que la CPU est a leyendo un fichero del disco duro (HD), y que este dispositivo
presenta una controladora con dos puertos de un byte (A y B). El puerto A
(con direccion 15) ser
a el puerto de datos, es decir, el puerto que lee la CPU
cuando la controladora ha ledo un byte del HD y lo ha escrito en ese puerto.
Para indicar que el puerto A tiene un byte v alido, la controladora pone el bit
0 del puerto B (direcci on 16) a uno.
Con esta situacion, y partiendo de que inicialmente el bit 0 del puerto B,
B(0), esta a 0, el proceso de lectura de fichero dirigido por programa consta
de las siguientes fases:
1. Seleccionar el puerto B, es decir, colocar en el bus de direcciones la
direccion 16.
2. Leer el bit 0 del puerto B, hasta que el bit sea uno. A esta operaci on se
188 FUNDAMENTOS DE LOS COMPUTADORES

le llama espera activa. Se dice que la espera es activa porque la CPU


esta ejecutando instrucciones para leer el bit 0 del puerto B hasta que
este a uno.
3. Una vez sabemos que hay un byte v alido en el puerto A, lo direccionamos
(ponemos en el bus de direcciones la direcci on 15) y leemos del bus de
datos. Guardaremos el byte en un registro temporal de la CPU.
4. A continuaci on, realizamos la transferencia entre el registro de la CPU
y alguna posicion de memoria.
5. Si no hay m as transferencias terminamos, y, si no, volvemos al paso 1.
Las principales ventajas de este sistema son su bajo coste hardware y su
simplicidad. Presenta el problema de las bajas velocidades conseguidas y de
la ralentizacion del procesador en la espera activa.

7.3. INTERRUPCIONES

Una interrupci on es un mecanismo que permite a la CPU ser sensible a


estmulos diferentes a los creados por sus operaciones internas y, en particular,
a los generados por los dispositivos de E/S. Mediante este mecanismo, una
vez que la CPU indica a alg un dispositivo de E/S que tarea debe realizar, se
desentiende de este. La CPU puede realizar mientras otras tareas, hasta que el
periferico le avise de que ha completado la operacion que se le haba encargado.
Para avisar a la CPU se utiliza su se nal de petici
on de interrupci on. Como
vimos en el tema 3, cuando la se nal de interrupci
on de la CPU se activa, esta
ejecuta una rutina llamada rutina de tratamiento de interrupci on, en la
que la CPU atiende al periferico que la ha interrumpido.

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

Interrupcion de E/S : son generadas por los perifericos, para solicitar la


atenci
on de la CPU en ciertas situaciones. Por ejemplo, pueden indicar
que ha terminado una accion de E/S (como localizaci
on de una posici on
en una cinta, posicionamiento del brazo m
ovil de un disco duro, etc, ...).

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

rrumpido, es decir, recuperar el antiguo valor del P C (P CActual).

7.4. ACCESO DIRECTO A MEMORIA

Aunque la tecnica de interrupciones elimina el problema de la espera activa,


a
un queda para el procesador la tarea de ir leyendo datos de los dispositivos de

E/S y de ir escribiendolos en memoria. Esta tarea es tan rutinaria y simple, que
estamos desperdiciando la potencia de c alculo de un procesador si lo tenemos
ocupado con este tipo de programas. La soluci on a este problema consiste en
incluir en el sistema computador un dispositivo que se encargue de realizar
estas transferencias: el dispositivo de Acceso Directo a Memoria(DMA).

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

Figura 7.5: Esquema del DMA

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

su almacenamiento en memoria. Mientras, la CPU puede dedicarse a ejecutar


otro tipo de programas. Cuando el DMA termina, lo indicar a a la CPU (me-
diante una se nal de interrupci on) para que sepa que ya est an disponibles en
memoria los datos que pidi o.
Con m as detalle, son necesarios los siguientes pasos:
1. La CPU direcciona al DMA como si fuese un periferico m as, para indi-
carle que quiere hablar con el. Por el bus de datos, la CPU le transfiere
al DMA la informaci on que necesita para realizar la transferencia, escri-
biendo para ello en los registros internos del DMA:
Direcci on de memoria en la que almacenar el fichero.
Direcci on, en el disco duro, en la cual se encuentra almacenado el
fichero.
Sentido de la operaci on, es decir, si es lectura o escritura de HD
(lectura en nuestro ejemplo).
Longitud del bloque a transmitir (n umero de bytes del fichero).
2. El DMA hace la transferencia, leyendo los datos del disco y direccionando
posteriormente la memoria para escribir en ella cada byte. Para ello
necesita el BUS (tanto de datos como de direcciones y, a veces, tambien
el de control), que podr a usar en los momentos en que la CPU no acceda
a la memoria (porque este trabajando con registros, cache, coprocesador,
etc.). Para pedir el bus a la CPU usa un protocolo de tipo handshaking
(estrechamiento de manos), mediante la secuencia de se nales: BR (Bus
Request, petici on del bus), BG (Bus Grant, cesi on del bus) y BGACK
(Bus Grant ACKnowledge, reconocimiento de cesi on del bus). Tras esta
u
ltima se nal, el DMA dispone del bus para uso propio.
3. Cuando el DMA termine, mandar a una interrupci on a la CPU para
indicarle que ha acabado y que ya puede disponer en memoria de los
datos que le pidi o.
A la hora de realizar las transferencias, existen varios modos de operar. Por
ejemplo, dependiendo de c omo se repartan el uso de bus la CPU y el DMA
tenemos:
Bloques sin ruptura: si el DMA tiene el bus, no lo suelta hasta que ter-
mina la transferencia de un bloque completo. La CPU tiene que esperar
a que el DMA libere el bus.
Ciclo a ciclo: DMA y CPU se reparten ciclo a ciclo el control de bus
(uno para la CPU y otro para el DMA, alternando).
Ciclos muertos de CPU: el DMA solo tomar a control del bus cuando
se de cuenta de que la CPU no lo est a utilizando.
192 FUNDAMENTOS DE LOS COMPUTADORES

Controlado por el perif erico: el periferico es el que decide cuando se


hace la transferencia.
Otro dispositivo m as potente para realizar operaciones de E/S son los
Canales de Entrada/Salida, que son coprocesadores, con varias DMAs en
su interior, que pueden ser programados, y con m as inteligencia que los DMAs.

SINOPSIS

Hemos visto la evoluci


on de la Entrada/Salida desde la E/S programada hasta
el DMA, mencionando tambien los Canales de E/S. Hemos podido comprobar
como un incremento del hardware, con su consecuente aumento del coste del
sistema computador completo, permite realizar operaciones de comunicaci on
de E/S cada vez m as eficientes.
8
Introducci
on a los
Sistemas Operativos

OBJETIVOS

Identificar las tareas de las que es responsable el Sistema Operativo


(S.O.) en un computador
Comprender los mecanismos implicados en la gesti on de sistemas de
tiempo compartido, multiusuario y multitarea
Completar con el nivel de memoria virtual la descripci
on de sistemas con
jerarqua de memoria
CAPITULO 8: INTRODUCCION
A LOS SISTEMAS OPERATIVOS 195

8.1.
INTRODUCCION

Un Sistema Operativo (S.O.) se puede definir como un conjunto de progra-


mas que permiten utilizar el hardware de la m aquina, a uno o varios usuarios,
de una manera sencilla y eficiente.
Vamos a ver un poco m as detenidamente esta definici on. Un S.O. es un
conjunto de programas, es decir, algo Software o Firmware (software que no
se puede modificar, como microsubrutinas o programas residentes en ROM),
cuya misi on es facilitar la gesti
on del hardware. En principio, se dedicar a al
control de los dispositivos de Entrada/Salida, como pueden ser el disco duro,
CD-ROM, vdeo,... El procesador tambien es parte del hardware, por lo que
sera otro recurso m as a gestionar, sobre todo cuando hay m as de un usuario
usandolo a la vez.
El S.O. controla todo el hardware con el objetivo de que la m aquina de un
rendimiento optimo, de modo que, si un usuario o aplicaci on quiere utilizar
el hardware, ser a mediante llamadas a las rutinas del S.O. Se habla de una
estructura en capas (figura 8.1), en la que el S.O. oculta los dispositivos hard-
ware (disco, puertos de E/S...), proporcionando a las aplicaciones (procesos)
un interfaz m as sencillo. El proceso solicita estos servicios haciendo llamadas
al S.O., que maneja el hardware mediante el uso de interrupciones.

Aplicaciones
S.O.

Hardware

Figura 8.1: Capas de un S.O.

8.1.1. Tareas que realiza un Sistema Operativo


Un S.O. debe suministrar los medios para poder llevar a cabo las siguientes
operaciones:
Concurrencia o capacidad de poder realizar varias actividades simul-
t
aneas, como el solapamiento de actividades de E/S con computaci
on en
196 FUNDAMENTOS DE LOS COMPUTADORES

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

forma exclusiva en el procesador. El programa cargado ser a el responsa-


ble devolver el control al S.O cuando termine su ejecuci on. En MS-DOS,
al conjunto de interrupciones encargadas de ofrecer al programa de usua-
rio los servicios de E/S se le denomina BIOS (Basic Input Output System
o sistema de E/S b asico).
Un S.O. multitarea es capaz de ejecutar a la vez varios procesos. Para ello,
hemos de disponer de una interrupci on temporal que se active peri odi-
camente. Con esta interrupci on, se invocar
a al S.O., que conmutar a el
uso de la CPU entre los diferentes procesos que se esten ejecutando. De
esta manera, se da la impresi on de que se est
an corriendo simult anea-
mente varios programas en la CPU. El quantum de tiempo o time-slice
es el tiempo que transcurre desde que el procesador empieza a atender
a un proceso hasta que deja de hacerlo, para pasar a tratar el siguiente.
Cada uno de los procesos se comporta como si tuviera su propio puntero
contador de programa (PC) y puntero de pila (SP).
UNIX y VMS son ejemplos de sistemas operativos que hace ya mucho
tiempo que ofrecen multitarea.
Sistemas operativos como Windows 3.x ofrecen lo que se denomina mul-
titarea cooperativa o no-prioritaria que no es una verdadera multitarea. En
este esquema es cada tarea la que es responsable de pasar el control al n ucleo
del sistema operativo para que conmute a otra. Si una tarea no hace esto es
imposible conmutar (pudiendo quedar colgado).
En Windows 9x, NT la multitarea es prioritaria es decir se realiza una
conmutaci on entre procesos cada cierto tiempo. Adem as existe un proceso
encargado de emular la ejecuci on de todas las aplicaciones de Windows 3.x
que implementan la multitarea no-prioritaria. Este proceso s olo se ejecuta
durante su time slice.
Un termino que encontramos en los S.O. actuales es el de thread, que
encontramos traducido por subproceso, hebra o hilo. Con un significado an alogo
al de proceso, los threads tienen la propiedad de poder compartir recursos entre
s, como por ejemplo el rango de direcciones de memoria asignadas.

8.2.2. Estados de un Proceso


En un sistema multitarea, un proceso se puede encontrar en tres estados dis-
tintos:
a) RUNNING (en ejecuci on): cuando el proceso se est
a ejecutando (est
a sien-
do atendido por la CPU, o usando la CPU).
CAPITULO 8: INTRODUCCION
A LOS SISTEMAS OPERATIVOS 199

time slice=10ms.

proceso 1 proceso 2 proceso 3 proceso 1 ......................

memoria

procesador subproceso a
proceso1
subproceso b

proceso2

proceso 3

Figura 8.2: S.O. Multitarea

b) READY (listo): el proceso podra estar en ejecuci on si la CPU estuviese


libre, es decir, si esta no estuviese ejecutando otro proceso.
c) BLOCKED (bloqueado): el proceso est a a la espera de que ocurra alg
un
evento, normalmente alguna transacci on de Entrada/Salida.
En sistemas monoprocesador s olo puede haber un proceso running, pero
varios ready y blocked. El sistema operativo tiene una lista con los procesos
ready (ordenados por prioridad) y otra con los procesos blocked (en este caso
la lista est
a desordenada).
Las transiciones entre estos estados se producen mediante llamadas del
sistema operativo a una serie de funciones, con el nombre del proceso como
parametro, excepto en el caso del paso de running a blocked, que es provocada
por el propio proceso cuando necesita realizar una operaci on de E/S. Las
posibles transiciones entre estados de un proceso aparecen representadas en la
figura 8.3 y se comentan a continuaci on.
200 FUNDAMENTOS DE LOS COMPUTADORES

RUNNING

block
dispatch

Timer_run_out

READY BLOCKED

wake-up

Figura 8.3: Estados de un proceso

Dispatch: se produce cuando un proceso toma posesi on de la CPU, debido


a que el que la estaba usando ha agotado su tiempo de uso (quantum)
o ha terminado su ejecuci on. El proceso que se apropiar a de la CPU
ser
a el primero de la lista de procesos ready. El sistema operativo de-
bera almacenar el nuevo estado de los procesos del sistema, pues se ha
producido lo que se denomina un cambio de contexto (cambio del proceso
en ejecucion).
Timer run out: el sistema operativo asigna a cada proceso un tiempo fijo
(quantum) de uso de la CPU. Si en ese tiempo no es capaz de terminar
lo que le quedaba cuando tom o posesi
on de la CPU la u ltima vez, se
activa el Timer run out (una interrupci on temporal), con la que se obliga
al proceso que estaba running a abandonar la CPU, pasando a estado
ready.
Block: es el otro motivo por el que un proceso puede dejar libre la CPU.
Cuando un proceso llega a una instrucci on que ha de esperar a que
se complete una operaci on de E/S, este (para evitar estar ocupando la
CPU durante la operaci on de E/S) pasa a estado blocked y libera la
CPU. Esta transici on la provoca el propio proceso cuando debe esperar
a que se produzca alg un evento de E/S.
Wake up: esta se nal se enva a un proceso que est
a blocked cuando se ha
producido el evento de E/S que le hizo pasar a este estado. Como ya no
tiene que esperar nada m as para continuar su ejecucion, pasa a la lista
de procesos ready, esto es, listos para seguir su trabajo.
Vamos a ver un par de ejemplos de c omo funciona esto. Supongamos que
tenemos tres procesos, que llamaremos A, B y C, que se van a ejecutar concu-
rrentemente usando la misma CPU. El quantum (Q) de tiempo que asigna el
CAPITULO 8: INTRODUCCION
A LOS SISTEMAS OPERATIVOS 201

sistema operativo a cada proceso sera de 10 milisegundos. Veremos que ocurre


a lo largo del tiempo para las dos situaciones que aparecen en la figura 8.4.

a) A=30 B=10 C=20 Q = 10


10 10 10 10 10 10

A B C A C A

b) A=30 B=25 C=20

5 10 10 10 10 10 5 10 5

A B C B C A B A A

block A wake-up A

Figura 8.4: Ejemplos de transici


on entre estados de un proceso

En el primer ejemplo, los procesos tardan 30, 10 y 20 milisegundos respec-


tivamente en ejecutarse. En este caso no habra operaciones de Entrada/Salida,
por lo que cada proceso ir a tomando durante 10 mseg. la CPU, realizar a las
operaciones que pueda en ese tiempo y dejar a libre el procesador para el si-
guiente proceso. Los diferentes procesos, al no haber ninguno prioritario, ir an
apropiandose de la CPU cclicamente, mientras no hayan terminado su trabajo
(ver figura 8.4.a).
Para el segundo caso, vamos a suponer que los procesos van a necesitar
utilizar 30, 25 y 20 milisegundos la CPU. Ahora, cuando el proceso A lleve 5
milisegundos, va a tener que leer de un fichero y no podr a seguir su ejecuci
on
hasta tenerlo cargado en memoria, por lo que el proceso pasar a a estado bloc-
ked. Previamente, antes de bloquearse, programar a el DMA para que realice
la transferencia y, cuando esta termine (30 milisegundos despues), el DMA
avisara mediante una interrupcion. Cuando esto ocurra, el proceso pasar a a la
lista de procesos ready, para que continue su ejecucion en el momento que le
corresponda usar la CPU. La figura 8.4.b representa esto esquem aticamente.
Al hablar de los posibles estados de un proceso y sus transiciones, hemos
visto como cuando se produce el Timer run out, realmente lo que est a ocu-
rriendo es una interrupci on temporal. Desde el punto de vista de un S.O., la
interrupcion es un suceso que altera la secuencia normal de ejecuci on de un
proceso. Cuando se activa una interrupci on de este tipo, se llevan a cabo una
serie de acciones:
El sistema operativo toma el control
El S.O. salva el estado del proceso en ejecucion (en el PCB)
202 FUNDAMENTOS DE LOS COMPUTADORES

El S.O. analiza la interrupcion y le pasa el control al proceso (rutina)


adecuado de manejo de esa interrupci on
El proceso de tratamiento de la interrupcion realiza su trabajo
El S.O. restaura el estado del proceso interrumpido y este contin
ua eje-
cutando por donde se qued o
Las interrupciones se pueden anidar, es decir, un proceso de tratamiento de
interrupci
on puede a su vez ser interrumpido y as sucesivamente.
Cada vez que un proceso tiene que salir de la CPU para que entre otro,
se produce lo que se denomina un cambio o conmutaci on de contexto, que
consiste en salvar el estado del proceso en ejecucion, antes de que entre el
nuevo proceso.

8.2.3. Planificaci
on

La planificacion (processor scheduling) es el mecanismo, que implementan los


S.O., para asignar procesos a los procesadores. El planificador (scheduler) da
las prioridades a los procesos en la cola de procesos ready. Hay dos formas en
las que se puede asignar un procesador a un proceso:
No Preemptive (no expropiativa, no prioritaria o cooperativa) si un pro-
ceso toma la CPU, nadie le podr a interrumpir hasta que termine, o le
ceda el control al S.O.
Preemptive (expropiativa o prioritaria) en tiempo compartido, cuando
transcurre el quantum de tiempo, se producir a una interrupci
on del reloj,
saliendo de la CPU el proceso que la tena y entrando en su lugar el
primero en la lista de procesos ready.
La forma en que el scheduler asigna las prioridades a los diferentes procesos
de la lista de procesos ready da lugar a varios algoritmos de planificaci on,
que pasamos a ver a continuaci on:
FIFO (cola), el primero que llega es el primero en salir, es de tipo no
preemptive.
Round Robin (RR), es una FIFO preemptive.
Shortest-Job-First (SJF) da m as prioridad a los procesos mas cortos.
Con esta poltica se consigue una mayor raz on de ejecucion de trabajos.
Highest-Response-Ratio-Next (HRN) (el siguiente con relaci on de
respuesta m axima). Las prioridades que se asignan son din amicas, con
lo que mejoramos el algoritmo SJF. La prioridad en un momento deter-
minado viene dada por la expresi on:
CAPITULO 8: INTRODUCCION
A LOS SISTEMAS OPERATIVOS 203

tiempo esperando + tiempo de ejecuci


on
prioridad =
tiempo de ejecuci
on

En principio, los procesos cortos tienen mayor prioridad. Los proce-


sos largos, al tener que esperar mas, ir
an aumentando poco a poco su
prioridad.

8.2.4. Operaciones sobre Procesos


Sobre un proceso se pueden realizar un gran n umero de operaciones, como
crear, destruir, suspender, reanudar, cambiar la prioridad, bloquear, despertar,
etc...
Crear. Cuando se crea se realizan una serie de operaciones:
Dar un nombre al proceso
Introducirlo en la lista de procesos conocidos
Determinar la prioridad inicial
Crear su PCB
Asignar los recursos iniciales
Un proceso puede a su vez crear otro(s) proceso(s). Al proceso crea-
dor se le llama proceso padre y a los creados procesos hijo(s).
Aniquilar. Cuando esto sucede, se borra del sistema, se liberan los recursos
que hubiese ocupado y se elimina su PCB correspondiente.
Suspender y Reanudar. Cuando se observa alguno de los sntomas siguien-
tes en un sistema, se suele suspender el proceso(s) que se sospecha que
es el causante:
El sistema va lento
Un proceso actua de forma sospechosa
El sistema est
a muy cargado
Cuando se vuelve a la normalidad, se suele reanudar a los procesos
que estuviesen suspendidos.

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

Dispatching, suspension, reanudaci


on,... de procesos
Manejar los PCB de los procesos (y gestionar los cambios de estado en
general)
Manejar interrupciones y la sincronizacion
Realizar actividades de Entrada/Salida
Asignar y liberar recursos (p.e. memoria)
Soportar el sistema de ficheros

8.3. MEMORIA VIRTUAL

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

Si esta hubiese sido modificada por el programa, se deber a salvar la copia


actualizada en el disco.
Direccion Virtual / Direcci on Fsica. La direcci
on virtual es la que usan
los programas, dentro del espacio de direcciones de la memoria virtual.
La direcci on fsica es la direcci
on en la que realmente se almacenan los
datos en memoria principal.
Traducci on de Direcciones (memory mapping): es el mecanismo por el
que asignamos a una direcci on virtual una direccion fsica.
A la hora de dise nar una memoria virtual, los aspectos a tener en cuenta
vienen motivados por el alto coste de un fallo de p agina. Los m as importantes
son:
Tama no de la p agina (mismas consideraciones que el tama no de lnea en
la cache), suele ser de 4K o 16K.
Gestion de los fallos de p agina. Son tratados por software, pues hay
tiempo suficiente para ello y de este modo se puede hacer de un modo
mas inteligente.

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

32 bits -> direccin memoria virtual

pv w

20 bits -> pgina 12 bits -> desplazamiento

1 pr pr w

22 bits -> direccin real

bit de presencia

Figura 8.5: Traducci


on de referencia virtual a real

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

32 bits -> direccin memoria virtual

8 bits -> directorio 12 bits 12 bits -> desplazamiento

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

comienzo tabla
1 pr pr w
.......
.......
22 bits -> direccin real

bit de presencia

directorio de tablas

Figura 8.6: Traducci


on paginada

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

La aparici on de errores en el almacenamiento o transmisi on de la informacion


ha dado lugar a la creaci on de c
odigos que permiten corregir o al menos detec-
tar los fallos que ocurren en el proceso de almacenamiento o transmisi on. Dada
una secuencia binaria I que contiene la informaci on, se procede a anadir una
secuencia redundante R deducida a partir de I que nos permitir a la detecci
on
y/o correcci on de los errores que se produzcan en I.
Se define la distancia Hamming entre dos palabras binarias, d(x,y), como
el n
umero de bits en que difieren. Se entiende por distancia Hamming de un
c
odigo de palabras binarias, d(C), al min{d(x, y)/x, y C, x = y}. El campo
redundante R se a nade de forma que el c odigo resultante formado por las
nuevas palabras (I,R) tenga una distancia mayor que el c odigo formado por
las palabras I y por tanto permita distinguir si ha habido errores.
Se demuestra que el c odigo con informacion redundante ha de tener una
distancia mnima de k + 1 si se quieren detectar k errores de un bit; y que
dicha distancia ha de ser 2k + 1 si lo que se quiere es poder corregir k errores
de un bit.

A.1.1. Bit de paridad


Es un mecanismo simple para la detecci on de un bit err oneo. Consiste en
a
nadir 1 bit de redundancia calculado de la siguiente forma:

209
210 FUNDAMENTOS DE LOS COMPUTADORES

Paridad par: El numero total de 1s en la palabra binaria resultante


(I,R) ha de ser par.
Paridad impar: El numero total de 1s en la palabra binaria resultante
(I,R) ha de ser impar.

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

Decodificaci on: Recibida la palabra B = b 7 b6 b5 b4 b3 b2 b1 se determina la


palabra r3 r2 r1 donde cada ri se calcula como la operaci on OR exclusiva de los
bits bk (1 k 7) de B, cuyo subndice k expresado en binario contenga el
bit i igual a 1; es decir se calculan como los p i pero teniendo en cuenta todos
los bits de B incluyendo los redundantes, y no s olo los de informaci on. As:

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

Al construir un mensaje con smbolos de un alfabeto podemos observar que no


todos los smbolos del alfabeto aparecen con igual frecuencia (probabilidad).
De ah surge la idea que ser
a m
as eficiente una codificaci
on que emplee menos
bits para representar los smbolos m as frecuentes. Esta es la idea que existe
detras de los codigos usados en la compresi on de mensajes (por ejemplo los
compresores de ficheros).

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

Ejemplo: Sea el alfabeto {1,2,3,4,5} con probabilidades asociadas {0.4,


0.2, 0.25, 0.1, 0.05}.
Reordenaci on: 1(0.4) 3(0.25) 2(0.2) 4(0.1) 5(0.05)
Agrupamiento: 1(0.4) 3(0.25) 2(0.2) A(0.15)
Agrupamiento: 1(0.4) 3(0.25) B(0.35)
Reordenaci on: 1(0.4) B(0.35) 3(0.25)
Agrupamiento: 1(0.4) C(0.6)
Reordenaci on: C(0.6) 1(0.4)
Agrupamiento: D(1)

El arbol resultante se muestra en la figura A.1. Hasta llegar a los nodos


smbolos desde el raz, se va asignando un 1 a la rama derecha y un 0 a la
izquierda.
Con lo cual el codigo resultante es:

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

Figura A.1: Arbol de generaci


on Human

APENDICE ESPECIALES
A. SISTEMAS DE REPRESENTACION 213

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.

a) Calcular el valor almacenado en R, en funcion de los valores iniciales


de las variables A = A0 , B = B0 y C = C0 , cuando finaliza la
ejecuci
on del programa.
b) Sabiendo que todas las instrucciones del procesador tienen el mismo
tamano de codigo de operaci
on, cual es el tamano de los operan-
dos?
214 FUNDAMENTOS DE LOS COMPUTADORES

c) Se desea disenar un formato de codigo de operacion variable basado


en la codificaci
on Human, en el que las instrucciones que aparecen
con mayor frecuencia en un programa tengan menos bits en el c odigo
de operacion, permitiendo reducir el tama no medio de los progra-
mas. Realizar el diseno completo de dicho codigo de operacion para
el conjunto de instrucciones que se ha presentado sabiendo que el
c
odigo que se analiza representa bastante bien el comportamiento
general de los codigos escritos para este procesador.
Escribe los codigos de operacion resultantes en la siguiente tabla:
Instrucci
on: push pop add mult inc
C.OP. Human:
Ap
endice B

Rendimiento de un
computador

B.1. LEY DE AMDAHL

El termino cuello de botella - del ingles bottleneck - se utiliza en la jerga del


rendimiento de computadores para referirse al subsistema o subsistemas que
degradan el rendimiento del equipo en general.
Puesto que todos los componentes de un computador est an interconecta-
dos, un cambio en las prestaciones de un subsistema tiene un impacto inme-
diato en el rendimiento del sistema en general. Ahora bien, puestos a mejorar
algo, el sistema se beneficiar
a mas si mejoramos el subsistema donde est a loca-
lizado el cuello de botella y, de forma inversa, si queremos abaratar costes, lo
mejor es penalizar el subsistema con mejor rendimiento respecto a los dem as.
Por otra parte, como no todos los componentes de un ordenador tienen
la misma frecuencia de uso en la ejecuci on de un programa, resultar a m as
beneficioso mejorar un subsistema cuanto m as utilizado sea este.
Como metrica del rendimiento en tiempos de un subsistema se emplea
la denominada aceleraci on o ganancia en tiempos, conocida por su termino
anglosaj on speed-up, definida como cociente el cociente de tiempos empleado
por el subsistema a evaluar y una referencia:

Tiempo consumido
=
Tiempo de referencia

Para cuantificar el efecto en rendimiento global de un sistema a partir del


rendimiento de sus partes se utiliza la expresi
on conocida como ley de Am-

215
216 FUNDAMENTOS DE LOS COMPUTADORES

dahl, que establece que la mejora obtenida en el rendimiento de un sistema


debido a la alteraci
on de uno de sus componentes esta limitada por la frac-
ci
on de tiempo que se utiliza dicho componente. De forma analtica, esta ley
se resume en la siguiente f
ormula:
1
= p
(1 p) + m

cuyos par ametros poseen el siguiente significado:


: Es la aceleraci on global del sistema completo tras la mejora de uno de
sus subsistemas. Si lo que se evalua es un programa representa el cocien-
te entre el tiempo de ejecucion completo del programa antes de mejorar
alguno de sus componentes y el tiempo de ejecuci on despues de ser me-
jorado dicho componente.
m : Representa el factor de mejora que se ha introducido en el subsistema
alterado, nos mide c omo de grande ha sido la mejora. Es la aceleraci on
parcial correspondiente al elemento mejorado considerado aisladamente.
p: Es la fraccion de tiempo que el sistema completo original utiliza el sub-
sistema que se ha alterado (es decir, cu anto se usa el componente que se
ha mejorado en el sistema original).
Podemos generalizar la ley de Amdahl cuando se realiza la optimizaci on
de m as de una de las partes del sistema. Si n partes de un sistema consumen
fracciones del tiempo total (secuencial) p 1 , p2 , ... pn respectivamente y cada
una de ellas se optimiza individualmente con aceleraciones parciales 1 , 2 , ...,
n , quedando sin optimizar por tanto la fracci on 1(p 1 +p2 +...+pn ) del tiempo
secuencial original, la aceleraci
on global sufrida por el tiempo consumido por
el sistema viene dado por:
1
= 2 n
3 n
' ' pi
1 pi +
i
i=1 i=1
Se deja al lector la deducci
on de la expresi
on de la ley de Amdahl, a partir
de la definici
on de los parametros, as como su generalizaci
on.

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

un programa sabiendo que el 60 % de dicha ejecuci on se dedica al c


alculo de
operaciones aritmeticas. Si el programa tardaba 12 segundos en ejecutarse sin
la mejora, Cuanto tardara en ejecutarse sobre el sistema mejorado?
Solucio n:
Del enunciado tenemos que m = 2 y p = 0.6. Aplicando la ley de Amdahl,
obtenemos:
1 1 1
= 0.6 = 0.4 + 0.3 = 0.7 = 1.42
(1 0.6) + 2
Es decir, el sistema funciona un 42 % mas r
apido que el original.
Para responder a la segunda cuesti
on, expresamos como el cociente entre
los tiempos de ejecucion sin y con mejora, esto es:

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.

B.1.2. Casos lmite


De la f
ormula de la ley de Amdahl podemos extraer unos cuantos casos par-
ticulares que merece la pena analizar ya que representan las limitaciones que
tenemos a la hora de ampliar el rendimiento global del sistema, al mejorar
u
nicamente una de sus partes.
1
1. Si m = , entonces = 1p : es decir, el porcentaje m
aximo que
un sistema puede acelerarse actuando sobre uno de sus componentes
est
a acotado en funci on de la fracci
on de uso de ese componente, como
puede apreciarse en la figura B.1 (a).
2. Si p = 0, entonces = 1: la mejora de un componente, por grande que
sea, no tiene efecto alguno sobre el sistema global si no se utiliza dicho
componente, ver figura B.1 (b).
3. Si p = 1, entonces = m : esto es, si todo el tiempo de ejecucion de un
programa se dedica a utilizar el subsistema mejorado, toda la ganancia
en velocidad que experimente dicho subsistema revierte sobre el sistema
general.
En definitiva, la ley de Amdahl representa una gua para conocer la mejor
forma de repartir el dinero a invertir en un sistema, por ejemplo un equipo
informatico, entre los distintos componentes que lo integran en funci on de su
218 FUNDAMENTOS DE LOS COMPUTADORES



1 m
1-p

1 1
m p
1 0 1
(a) (b)

Figura B.1: Casos Lmite de la Ley de Amdahl.

uso, y de cuantificar el efecto que estos componentes tendr


an sobre el sistema
en funci
on de sus prestaciones.

B.2. DE MOORE
OBSERVACION

En 1965, Gordon Moore, cofundador de Intel, public o un trabajo en el que


expona que haba observado en los u ltimos a
nos como el numero de transis-
tores por (pulgada)2 de los circuitos integrados se haban duplicado cada a no.
Moore adem as predijo que esta tendencia continuara previsiblemente en el fu-
turo. En los anos siguientes, la cosa se fren
o un poco, pero la densidad de los
datos se duplico aproximadamente cada 18 meses, lo que constituye la actual
definici
on de la Ley de Moore, que el mismo ha corroborado. La mayora de
expertos, incluido el propio Moore, esperan que la ley de Moore se mantenga
por al menos otras dos decadas. En la figura B.2 se puede observar la ley de
Moore para los procesadores de Intel.
Existe una version de la ley de Moore para discos duros. Seg
un sus previsio-
nes, para el 2030 se llegar 9
an a los 10 MBytes por pulgada cuadrada. Teniendo
en cuenta el crecimiento esperado del tama no del software, ser
a precisa esta
capacidad.
En relacion con este aspecto, Nathan Myhrvold, un alto ejecutivo de Mi-
crosoft, formulo la conocida como primera ley del software, que establece que
el software es como un gas: se expande hasta llenar el continente donde se
encuentra (hardware).

APENDICE B. RENDIMIENTO DE UN COMPUTADOR 219

100000
CPUs de Intel Pentium 4
2.5aos
10000 Itanium
P6 (PentiumPro)

Miles de transistores
80486
P5 (Pentium)
1000
80386

80286
100
8086

10 Se duplica el nmero cada 2 aos

4004
1
1975 1980 1985 1990 1995 2000 Ao

Figura B.2: Observaci


on de Moore para las CPUs de Intel

B.3. DE GROSCH
OBSERVACION

La observacion Grosch viene a decir que la potencia de computaci on se incre-


menta como el cuadrado de el coste del computador o P = KC 2 , donde P es
la potencia de c
alculo, K es una constate y C es el coste del sistema. Es decir,
por el doble de dinero tenemos un ordenador 4 veces m as potente.
La realidad nos dice que en el mercado de los PCs esto es solo una apro-
ximacion. Sin embargo, la ley de Grosch nos da una buena idea cu al ser
a el
precio de un PC m as r
apido en el futuro.

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

1. Queremos analizar el rendimiento de un computador de 100 MHz. que


tiene instrucciones simples, normales y complejas, cada una con un CPI
distinto seg
un se muestra en la tabla. Para ello, se utiliza un progra-
ma compilado en dos compiladores distintos que generan c odigos objeto
con diferente numero y tipo de instrucciones, (ver tabla). Que versi
on
compilada del programa produce un mayor rendimiento atendiendo a los
MIPS? Y atendiendo al tiempo de CPU?

Tipo de instrucci
on CPI Millones de instrucciones
Compilador 1 Compilador 2
Simple 1 5 10
Normal 2 1 1
Compleja 3 1 1

2. Considerar dos computadores, P1 y P2, con identico repertorio de ins-


trucciones (A, B, C, D). P1 funciona a 50 MHz y con CPIs 1, 2, 3 y 4
para A, B, C y D, respectivamente. P2, por el contrario, funciona a 75
MHz. pero con CPIs respectivos de 3, 5, 5 y 7. Si ejecutamos en ambos
un mismo programa compuesto por igual n umero de instrucciones de
cada tipo, Cu al de ellos mostrara un mayor rendimiento en MIPS?
3. MeEscape, una empresa dedicada al software de Internet, usa, para sus
operaciones matem aticas, rutinas compradas a otra compa na. Estas fun-
ciones suponen el 10 % del tiempo de ejecuci on del c
odigo, y son el doble
de r
apidas de las que inicialmente usaban en la primera versi on de sus
productos.
Por una poltica de ahorro, se decide cambiar a las funciones que
ofrece una nueva empresa, que aunque son algo m as lentas, tambien son
mas baratas. Esta decisi on se debe a que se ha observado que haciendo
un cambio en la estructura de los programas, se consigue que, aunque las
nuevas llamadas sean un 25 % m as lentas (que las que iban el doble de
r
apidas), el c
odigo, de forma global, siga comport andose de igual modo
a como lo haca antes en cuanto a velocidad de ejecuci on.
a) Cu al ha sido ese cambio? En que se basa ese comportamiento,
en principio extra no, del programa? Justifquese la respuesta.
b) Cuantificar el cambio necesario en el programa, como mnimo, para
que se puedan usar las nuevas funciones.

APENDICE B. RENDIMIENTO DE UN COMPUTADOR 221

4. El nuevo procesador de la compa na Acme Microsys se encuentra ac-


tualmente en fase de desarrollo. Los u nicos datos que se conocen son
relativos un programa multimedia de prueba, el cual tarda 15 segundos
en ejecutarse, con un CPI medio de 3, y en el que cada tipo de instrucci on
grafica necesita una media de 4 ciclos de reloj para ejecutarse utilizando
la tarjeta de video T1. Una prueba posterior del mismo programa sobre
otra tarjeta (T2) redujo a la mitad los ciclos empleados por cada tipo
de instrucci on gr
afica, lo que implico una reduccion de 5 segundos en el
tiempo de ejecuci on de la prueba.
a) Calcular el CPI medio de la segunda prueba.
b) Sabiendo que la prueba tiene un total de 5000 instrucciones, calcula
el numero de instrucciones gr aficas contenidas en dicho programa.
c) Con la nueva tarjeta de vdeo T3, el CPI de la prueba pas o a ser 1.8.
Obtener el n umero de ciclos medio que debe tardar cada instrucci on
grafica con la nueva tarjeta T3.
5. Un computador ejecuta un programa en 100 segundos, siendo las opera-
ciones de multiplicaci on responsables del 80 % de ese tiempo. Cu anto
habra que mejorar la velocidad de la multiplicaci on si se desea que el
programa se ejecute 5 veces m as r
apido? Soluci on: No hay forma de con-
seguir una mejora de tal magnitud para ese programa acelerando s olo la
multiplicaci on.
6. Un programa que dedica la mitad de su tiempo a c alculos en punto flo-
tante se ejecuta sobre un computador en 10 segundos. Si cambiamos su
FPU por otra 5 veces m as r
apida, Que ganancia en velocidad experi-
mentar a el programa? Soluci on: A = 1.6
7. Queremos reducir el tiempo de ejecuci on de un programa en un compu-
tador incorpor andole una memoria cache para almacenar instrucciones.
Cuando el procesador encuentra una instrucci on en la cache, esta se eje-
cuta 10 veces m as r
apido que cuando debe acceder a memoria principal.
Indicar el porcentaje mnimo de instrucciones que se deben encontrar
en cache para conseguir ejecutar el programa en menos de la mitad de
tiempo. Soluci on: 55 %
8. Una forma de mejorar el rendimiento de un computador es utilizando
un sistema multiprocesador. Generalmente, s olo una parte del progra-
ma a ejecutar puede paralelizarse, esto es, admite una descomposici on
en tareas que permita beneficiarse de la existencia de m ultiples CPUs.
Si queremos medir el rendimiento de una m aquina de N procesadores
a traves de un benchmark que tarda 100 segundos en una m aquina se-
222 FUNDAMENTOS DE LOS COMPUTADORES

cuencial y donde el 90 % de sus tareas son paralelizables, se pide:


a) La aceleracion que experimentar a el benchmark en este sistema en
funcion del n
umero de procesadores (N).
b) Si pudiesemos incrementar el n umero de procesadores de forma in-
definida, Estaran acotados de alguna manera la aceleraci on y el
tiempo de ejecuci on para esta m
aquina?
100
Solucion: a = 10+ 90 . Por mucho que aumentemos N, la aceleraci on
N
se encuentra acotada superiormente en un valor 10 y el tiempo de eje-
cucion inferiormente en 10 segundos.
9. Se desea mejorar el rendimiento de un PC. Para ello tenemos dos opcio-
nes:
a) Ampliar la memoria RAM, con lo que se consigue que el 80 % de
los programas vayan 1.75 veces m as r
apido.
b) Introducir un disco duro mayor, con lo que el 60 % de los programas
realizan su tarea en la tercera parte del tiempo original.
A igualdad de precio, Cu al de las dos mejoras aconsejaras ? Solu-
ci
on: La primera alternativa produce una aceleraci on de 1.52, mientras
que la segunda 1.66. Nos quedamos pues con la mejora del disco duro.
Ap
endice C

Codigos completos para el


i8086

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

LAZO: CMP SI, 998 ; hemos llegado al final?


JG FIN
CMP WORD PTR [SI],0H ; Direcionamos DS:SI como palabra
JLE NEGA
ADD CX,1
ADD SI,2 ; SI apunta a la siguiente palabra
JMP LAZO
NEGA: ADD DX,1
ADD SI,2 ; SI apunta a la siguiente palabra
JMP LAZO
;ahora SI=1000
FIN: MOV [SI], CX
MOV [SI+2], DX
;----------------
FINP:MOV AH,4CH ; interrupcion fin de programa
INT 21H
CODIGO ENDS
;----------------
END INICIO

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

ADD SI,2 ; SI apunta a la siguiente palabra


JMP LAZO
;----------------
FIN: MOV AH,4CH ; interrupcion fin de programa
INT 21H
CODIGO ENDS
;----------------
END INICIO

3. Escribir un procedimiento en lenguaje ensamblador para calcular el su-


matorio de los numeros naturales desde 1 hasta N. Supongamos que
N est
a almacenado en la posicion fisica 500 y queremos almacenar el
sumatorio en la posici
on 502.

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

4. Escribe el diagrama de flujo y el programa en ensamblador del para el


algoritmo que realiza la siguiente funci
on: Dada una tabla en la posi-
226 FUNDAMENTOS DE LOS COMPUTADORES

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

5. Escribe el diagrama de flujo y el programa en ensamblador para el al-


goritmo que realiza la siguiente funci
on: Dada una tabla en la posici
on

APENDICE
C. CODIGOS COMPLETOS PARA EL 8086 227

500 de memoria con 50 n umeros de 16 bits en complemento a dos, for-


zar a cero los numeros negativos y multiplicar por tres los positivos,
dejando cada n umero modificado en la misma posici on de la tabla en
la que estaba. No utilizar ninguna instruccion de multiplicar (MULS).
No considerar el caso de overflow al multiplicar por tres. (Observar que
multiplicar por 3 es sumar a un numero su doble).

;----------------
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. POLITICAS DE ASIGNACION


Veamos en mas detalle como se mapean los datos de la memoria principal en


la memoria cache. Vamos a considerar una memoria principal de 2 N lneas,
una memoria cache de 2n lneas de capacidad y 2w palabras por lnea.

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 bits (direccin de palabra de memoria)

MEM principal etiqueta lnea de cache palabra

n w
lnea memoria principal

CACHE
linea k

.....

.....
etiqueta ....... pal. w ....... linea k
.....

.....

.....
linea k+2**n
directorio

Figura D.1: Asignaci


on directa

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 bits (direccin de palabra de memoria)

MEM principal etiqueta palabra

N w
......

CACHE
......

......
......
etiqueta ....... pal. w .......
......

......

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

directorio
......

Figura D.2: Asignaci


on completamente asociativa

contener 2nc lneas. Al n umero de lneas por conjunto le denominaremos ni-


vel de asociatividad. Lo que se pretende hacer es que la selecci on del conjunto
se realice con mapeo directo y, una vez seleccionado el conjunto, la ubicaci on
dentro de este sea asociativa.
Para ello, la lnea de memoria principal i sera cargada en cache en el con-
junto i mod 2c y, dentro de ese conjunto, podr a ocupar cualquier lnea cache.
As, una direcci
on de palabra de la memoria principal la dividiremos en tres
campos: los w bits menos significativos indican como antes que palabra refe-
renciamos dentro de la lnea, los c bits siguientes seleccionan a que conjunto
de cache va destinada y los N c bits m as significativos constituyen la eti-
queta a guardar para la b usqueda asociativa dentro del conjunto que le haya
correspondido (ver figura D.3). Observemos que cuando un conjunto est a lleno
hay que aplicar alguna poltica de reemplazo para sustituir las lneas dentro
de ese conjunto.
Observemos que cuando c = 0, es decir, s olo hay un conjunto, la organi-
zacion equivale a una totalmente asociativa, y que cuando c = n, es decir,
2n conjuntos (nivel de asociatividad = 1), la organizaci on equivale a la de
232 FUNDAMENTOS DE LOS COMPUTADORES

asignaci
on directa.
N+w bits (direccin de palabra de memoria)
n bits lnea cache
N bits lnea memoria principal

etiqueta conjunto palabra

N-c c w
MEM principal

conjunto 0 CACHE

linea 0 ..... .....

etiqueta ....... pal. w .......


......

..... .....
linea 2**c
conjunto 1
......

linea 2*2**c
......

......

......
linea 3*2**c conjunto c-1
......

directorio

Figura D.3: Asignaci


on asociativa por conjuntos

D.2.
REEMPLAZO Y ACTUALIZACION

Como ya se ha esbozado en p arrafos anteriores, en las organizaciones con m as


de una lnea por conjunto, es necesario introducir una poltica de reemplazo
de aquellas lneas que son referenciadas en memoria principal y que pueden
ser ubicadas en diferentes posiciones dentro de la cache. Los algoritmos de
reemplazo se dise nan con el objetivo de disminuir la tasa de fallos, minimizando
el tr
afico entre memoria principal y cache. Estos algoritmos, adem as, deben
estar implementados en hardware para no degradar la velocidad de respuesta
del sistema.
Los tres algoritmos m as usados son:
1. LRU (Least Recently Used): Se elimina aquella lnea que hace m ass tiem-
po que no se usa (lectura o escritura).
2. FIFO (First In First Out): Se elimina aquella lnea que entr o en la
cache hace mas tiempo.

APENDICE DE CACHE
A. DETALLES DE DISENO 233

3. RANDOM: Se escoge la lnea a eliminar aleatoriamente.


El menos complejo de implementar es el u ltimo, pero sus resultados son
peores, ya que no utiliza ninguna informaci on relacionada con la localidad. FI-
FO se puede implementar simplemente asociando a cada conjunto un contador
m odulo el nivel de asociatividad, que apuntara a la siguiente lnea a sustituir.
LRU es m as complejo de implementar (hay que medir de alguna forma cu anto
lleva la lnea en cache), aunque tambien es el que presenta mejores resultados.
Con Algoritmo de Carga hacemos referencia a la manera de decidir
que informaci on se carga en la cache y cu ando. Lo m as simple es realizar la
carga bajo demanda, esto es, cargar en cache aquella lnea de memoria principal
a la que pertenece la palabra de memoria referenciada. Otra posibilidad sera
usar un algoritmo de precarga, en el que no s olo cargaremos en cache la lnea
referenciada, sino otras pr oximas a esta (por ejemplo algunas consecutivas).
En este caso, son diferentes los factores a tener en cuenta: cu antas y cu ales
lneas son las que vamos a precargar, cu ando se realiza la precarga (siempre,
bajo fallo, ...), etc.
La informaci on de la memoria principal debe ser coherente con la que se
encuentra en la cache. Esta informaci on se modifica cuando se efect ua una
escritura en la memoria. Encontramos dos polticas b asicas de actualizaci on
de memoria:
1. Escritura directa o Write-through: Cada vez que se actualiza (escribe)
una posici on en la cache es actualizada su posici on correspondiente en
la memoria principal. Con esto garantizamos una buena consistencia de
los datos, mientras que, por otra parte, el tr afico entre cache y memoria
principal aumenta.
2. Post-escritura o Write-back: Los datos se escriben en la cache y el nue-
vo dato no pasa a memoria principal hasta cierto tiempo despues (por
ejemplo, cuando la lnea modificada es eliminada de la cache). En este
caso, habr a que anadir un bit al directorio indicando que la lnea ha sido
modificada. El tr afico se reduce, pero la consistencia de datos podra
dar problemas en caso de sistemas multiprocesadores o DMA (Direct
Memory Access).
Otro factor de dise no es el empleo de cach es separadas, una para las
referencias a datos y otra para las referencias a instrucciones. Con ello con-
seguimos aumentar el ancho de banda, ya que se pueden acceder a las dos
simult aneamente (por ejemplo, con un procesador segmentado) y disminuir el
tiempo de acceso si fsicamente situamos la cache de datos cerca de la secci on
de procesamiento y la de instrucciones cerca de la l ogica de decodificaci
on.
234 FUNDAMENTOS DE LOS COMPUTADORES

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

El rendimiento de un sistema cache vendr a dado por la relaci on existente entre


los fallos y aciertos y la latencia de los diferentes elementos que componen el
sistema.
Para una traza dada la relaci on entre fallos, aciertos y precarga se suele
medir mediante los siguientes par ametros:
o fallos

Indice o tasa de fallos: Es el cociente Pmiss = N.oN.referencias y representa la


probabilidad de que una petici on genere un fallo de cache.
o aciertos

Indice o tasa de aciertos: Es el cociente P success = N.N.o referencias y repre-


senta la probabilidad de que una petici on genere un exito de cache. Se
tendra que Psuccess + Pmiss = 1.
N.o precargas
Indice o tasa de precarga: Es el cociente P pref etch = N. o referencias y repre-
senta la probabilidad de que una petici on genere una precarga.
A continuaci on, a modo de ejemplo, se eval ua el rendimiento de diferen-
tes topologas determinando el tiempo de acceso equivalente del sistema de
memoria.
Topologa cach e de un solo nivel unificada sin precarga. Usaremos un
modelo caracterizado por los siguientes par ametros: t c tiempo de laten-
cia de la cache, Trmc tiempo de transferencia o transporte de memoria
principal a cache.
El tiempo medio consumido nos proporciona la latencia efectiva del
sistema completo y viene dado por la expresi on:

T = Tsuccess + Tmiss = (1 Pmiss )tc + Pmiss (tc + Trmc )

Si consideramos que el tiempo de acceso a memoria principal sin cache es


aproximadamente Trmc , el speed-up obtenido gracias al sistema cache vendr
a da-
do por:

Tno cache Trmc


= =
Tcache (1 Pmiss )tc + Pmiss (tc + Trmc )

APENDICE DE CACHE
A. DETALLES DE DISENO 235

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:

T = Tsuccess + Tmiss + Tpref etch = (1 Pmiss )tc +


Pmiss (tc + Trmc ) + Ppref etch tp

La precarga ser a beneficiosa si este tiempo es menor al que se obtendra


en caso de que la precarga no estruviera presente. Observemos que el
ndice de fallos y aciertos se modifica al introducir un algoritmo de pre-
carga y que en condiciones de localidad favorables es de esperar que el
aumento del ndice de aciertos compense la penalizaci on de las lneas
precargadas.
Topologa cach e unificada de dos niveles sin precarga. Denominando t c1
el tiempo de latencia de la cache de primer nivel (L1), t c2 el tiempo de
transporte de los datos desde el primer (L1) al segundo nivel (L2) y T rmc
tiempo de transferencia o transporte de memoria principal al segundo
nivel y considerando una tasa de fallos en el primer nivel de P miss1 y una
tasa de fallos en el segundo nivel de Pmiss2 , la latencia efectiva, viene
dada para este caso por:

T = Tsuccess + Tmiss L1 + Tmiss L2 = (1 Pmiss1 )tc1 +


Pmiss1 (1 Pmiss2 )(tc1 + tc2 ) + Pmiss1 Pmiss2 (tc1 + tc2 + Trmc )

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:

T = Pdata Tdata + Pis Tis


236 FUNDAMENTOS DE LOS COMPUTADORES

D.4. EJERCICIOS

1. Dado un sistema de memoria principal de 1 Mb. y un programa que


referencia a la siguiente secuencia de direcciones (en hexadecimal):
ABC80h, ABC81h, ABC88h, BCD90h, BCD9Dh, BCDA0h,
CDE00h, CDE18h, CDE20h
Considerar las dos estrategias que se detallan a continuaci on para
acelerar el acceso a memoria principal:
I) Entrelazar la memoria principal siguiendo un esquema de orden
inferior con 32 m odulos y latches a la salida.
II) Incorporar una memoria cache de 64 Kb. organizada asociativa-
mente en 4 conjuntos, 8 palabras por linea, sin precarga y algoritmo
de reemplazo FIFO.
Se pide:
a) Analizar y comparar el tiempo total de respuesta (en ciclos de CPU)
de esos dos sistemas de memoria para la secuencia de direcciones
solicitada por el programa. Considerar un tiempo de acceso de 10
ciclos de CPU para la memoria principal y de un solo ciclo para la
cache y los latches de la memoria entrelazada. Suponer la cache ini-
cialmente vaca e ilustrar claramente el contenido de los latches y
del directorio cache tras cada acceso a memoria principal.
b) Discutir posibles mejoras en ambos sistemas y su repercusi on en
el coste: En el entrelazado, respecto al n umero de m odulos y la
colocacion de los latches; en la cache, respecto a su organizaci on y
a los algoritmos para precarga y reemplazo de lneas.
Solucio n:
Como el factor de entrelazamiento es 32, los u ltimos 5 bits deter-
minan el m odulo en el que se encuentra una referencia. As si se hace
referencia a una posici on A, se lee a la vez desde la posici
on (A div 32)32
hasta (A div 32) 32 + 31, siendo div la divisi on entera. (La direccion se-
leccionada en el m odulo 0 se obtiene poniendo los u ltimos 5 bits de A a
0, y la direccion en el modulo 31 poniendo los u ltimos 5 bits a 1).
referencia palabra en latches? tiempo
ABC80h -> NO. Cargar ABC80...ABC9F 10+1 ciclos
ABC81h -> SI. 1 ciclo
ABC88h -> SI. 1 ciclo
BCD90h -> NO. Cargar BCD80...BCD9F 10+1 ciclos
BCD9Dh -> SI 1 ciclo
BCDA0h -> NO. Cargar BCDA0...BCDBF 10+1 ciclos
CDE00h -> NO. Cargar CDE00...CDE1F 10+1 ciclos
CDE18h -> SI 1 ciclo
CDE20h -> NO. Cargar CDE20...CDE3F 10+1 ciclos

APENDICE DE CACHE
A. DETALLES DE DISENO 237

El sistema de cache propuesto evoluciona de la siguiente manera:

Parametros: Cto. Lin. Etq. Ref.


Memoria principal = 1Mpalabras->N+w=20 0x0 0x0 0x55e4 1
Memoria cach
e = 8Klineas ->n=13 0x0 0x1 0x5e6d 5
Palabras por l
nea = 8 ->w=3 0x1 0x0 0x55e4 2
Numero de conjuntos= 4 ->c=2 0x2 0x0 0x5e6c 3
0x3 0x0 0x5e6c 4
Lineas en cache:8192, Conjuntos:4, Ref. 0xcde00, etiqueta=0x66f0,
Lineas por conjunto:2048, c=0x0, w=0x0
Reemplazo:FIFO Precarga:NO ----Linea vacia: conjunto:0x0,
linea en conj.:0x2
Ref. 0xabc80, etiqueta=0x55e4, ----Directorio:
c=0x0, w=0x0 Cto. Lin. Etq. Ref.
----Linea vacia: conjunto:0x0, 0x0 0x0 0x55e4 1
linea en conj.:0x0 0x0 0x1 0x5e6d 5
----Directorio: 0x0 0x2 0x66f0 6
Cto. Lin. Etq. Ref. 0x1 0x0 0x55e4 2
0x0 0x0 0x55e4 0 0x2 0x0 0x5e6c 3
Ref. 0xabc81, etiqueta=0x55e4, 0x3 0x0 0x5e6c 4
c=0x0, w=0x1 Ref. 0xcde18, etiqueta=0x66f0,
----Exito c=0x3, w=0x0
----Directorio: ----Linea vacia: conjunto:0x3,
Cto. Lin. Etq. Ref. linea en conj.:0x1
0x0 0x0 0x55e4 1 ----Directorio:
Ref. 0xabc88, etiqueta=0x55e4, Cto. Lin. Etq. Ref.
c=0x1, w=0x0 0x0 0x0 0x55e4 1
----Linea vacia: conjunto:0x1, 0x0 0x1 0x5e6d 5
linea en conj.:0x0 0x0 0x2 0x66f0 6
----Directorio: 0x1 0x0 0x55e4 2
Cto. Lin. Etq. Ref. 0x2 0x0 0x5e6c 3
0x0 0x0 0x55e4 1 0x3 0x0 0x5e6c 4
0x1 0x0 0x55e4 2 0x3 0x1 0x66f0 7
Ref. 0xbcd90, etiqueta=0x5e6c, Ref. 0xcde20, etiqueta=0x66f1,
c=0x2, w=0x0 c=0x0, w=0x0
----Linea vacia: conjunto:0x2, ----Linea vacia: conjunto:0x0,
linea en conj.:0x0 linea en conj.:0x3
----Directorio: ----Directorio:
Cto. Lin. Etq. Ref. Cto. Lin. Etq. Ref.
0x0 0x0 0x55e4 1 0x0 0x0 0x55e4 1
0x1 0x0 0x55e4 2 0x0 0x1 0x5e6d 5
0x2 0x0 0x5e6c 3 0x0 0x2 0x66f0 6
Ref. 0xbcd9d, etiqueta=0x5e6c, 0x0 0x3 0x66f1 8
c=0x3, w=0x5 0x1 0x0 0x55e4 2
----Linea vacia: conjunto:0x3, 0x2 0x0 0x5e6c 3
linea en conj.:0x0 0x3 0x0 0x5e6c 4
----Directorio: 0x3 0x1 0x66f0 7
Cto. Lin. Etq. Ref.
0x0 0x0 0x55e4 1 Estadisticas:
0x1 0x0 0x55e4 2 Referencias: 9
0x2 0x0 0x5e6c 3 Lineas precargadas: 0
0x3 0x0 0x5e6c 4 Exitos en referencias: 1
Ref. 0xbcda0, etiqueta=0x5e6d, Exitos incluyendo precargaas: 1
c=0x0, w=0x0
----Linea vacia: conjunto:0x0, Tiempo=num_fallos*(10+1ciclos)
linea en conj.:0x1 +num_aciertos*1ciclo
----Directorio:

2. Considerar una memoria principal de 1 Mb. estructurada en palabras de


1 byte y a la que se dota de una memoria cache de 64 Kb., lneas de
4096 palabras, sin precarga y algoritmo de reemplazo FIFO.
Sea la secuencia de acceso a memoria principal dada por las siguientes
direcciones:
00000h, 01000h, 01001h, 0F000h, 10000h, 00000h,
40000h, 20000h, 080000h
238 FUNDAMENTOS DE LOS COMPUTADORES

Para una organizacion directa, totalmente asociativa, y asociativa de


4 conjuntos, se pide:
a) Mostrar la evoluci on de la cache y su directorio en cada caso, indi-
cando los fallos y precargas que se producen.
b) Calcular el coste de cada implementaci on con respecto al numero
de bits del directorio cache y al n
umero y tama no de las memorias
asociativas que lo componen.
c) Ordenar las tres alternativas en base a criterios de rendimiento y
coste.
Solucio n:

*ASIGNACION DIRECTA: Lin. Etq. Ref.


Param.: n= 4, c= 4, w=12 0x0 0x1 4
Cache de mapeo directo 0x1 0x0 2
Lineas en cache: 16 0xf 0x0 3
Palabras por linea: 4096 Ref. 0x0, etiqueta=0x0,
Conjuntos: 16 c=0x0, w=0x0
Lineas por conjunto: 1 ----Reemplazo: linea:0x0
No precarga ----Directorio:
Lin. Etq. Ref.
Ref. 0x0, etiqueta=0x0, 0x0 0x0 5
c=0x0, w=0x0 0x1 0x0 2
----Linea vacia: conjunto:0x0, 0xf 0x0 3
linea en conj.:0x0 Ref. 0x40000, etiqueta=0x4,
----Directorio: c=0x0, w=0x0
Lin. Etq. Ref. ----Reemplazo: linea:0x0
0x0 0x0 0 ----Directorio:
Ref. 0x1000, etiqueta=0x0, Lin. Etq. Ref.
c=0x1, w=0x0 0x0 0x4 6
----Linea vacia: conjunto:0x1, 0x1 0x0 2
linea en conj.:0x0 0xf 0x0 3
----Directorio: Ref. 0x20000, etiqueta=0x2,
Lin. Etq. Ref. c=0x0, w=0x0
0x0 0x0 0 ----Reemplazo: linea:0x0
0x1 0x0 1 ----Directorio:
Ref. 0x1001, etiqueta=0x0, Lin. Etq. Ref.
c=0x1, w=0x1 0x0 0x2 7
----Exito 0x1 0x0 2
----Directorio: 0xf 0x0 3
Lin. Etq. Ref. Ref. 0x80000, etiqueta=0x8,
0x0 0x0 0 c=0x0, w=0x0
0x1 0x0 2 ----Reemplazo: linea:0x0
Ref. 0xf000, etiqueta=0x0, ----Directorio:
c=0xf, w=0x0 Lin. Etq. Ref.
----Linea vacia: conjunto:0xf, 0x0 0x8 8
linea en conj.:0x0 0x1 0x0 2
----Directorio: 0xf 0x0 3
Lin. Etq. Ref. Estadisticas:
0x0 0x0 0 Referencias: 9
0x1 0x0 2 Lineas precargadas: 0
0xf 0x0 3 Exitos en referencias: 1
Ref. 0x10000, etiqueta=0x1, Exitos incluyendo lineas precargadas: 1
c=0x0, w=0x0 Fallos incluyendo lineas precargadas: 8
----Reemplazo: linea:0x0 Fallos compulsorios total: 3
----Directorio:

*COMPLETAMENTE ASOCIATIVA: Reemplazo: FIFO


Param.: n= 4, c= 0, w=12 No precarga.
Lineas en cache: 16
Palabras por linea: 4096 Ref. 0x0, etiqueta=0x0, w=0x0
Conjuntos: 1 ----Linea vacia: conjunto:0x0,
Lineas por conjunto: 16 linea en conj.:0x0

APENDICE DE CACHE
A. DETALLES DE DISENO 239

----Directorio: Ref. 0x40000, etiqueta=0x40, w=0x0


Lin. Etq. Ref. ----Linea vacia: conjunto:0x0,
0x0 0x0 0 linea en conj.:0x4
Ref. 0x1000, etiqueta=0x1, w=0x0 ----Directorio:
----Linea vacia: conjunto:0x0, Lin. Etq. Ref.
linea en conj.:0x1 0x0 0x0 5
----Directorio: 0x1 0x1 2
Lin. Etq. Ref. 0x2 0xf 3
0x0 0x0 0 0x3 0x10 4
0x1 0x1 1 0x4 0x40 6
Ref. 0x1001, etiqueta=0x1, w=0x1 Ref. 0x20000, etiqueta=0x20, w=0x0
----Exito ----Linea vacia: conjunto:0x0,
----Directorio: linea en conj.:0x5
Lin. Etq. Ref. ----Directorio:
0x0 0x0 0 Lin. Etq. Ref.
0x1 0x1 2 0x0 0x0 5
Ref. 0xf000, etiqueta=0xf, w=0x0 0x1 0x1 2
----Linea vacia: conjunto:0x0, 0x2 0xf 3
linea en conj.:0x2 0x3 0x10 4
----Directorio: 0x4 0x40 6
Lin. Etq. Ref. 0x5 0x20 7
0x0 0x0 0 Ref. 0x80000, etiqueta=0x80, w=0x0
0x1 0x1 2 ----Linea vacia: conjunto:0x0,
0x2 0xf 3 linea en conj.:0x6
Ref. 0x10000, etiqueta=0x10, w=0x0 ----Directorio:
----Linea vacia: conjunto:0x0, Lin. Etq. Ref.
linea en conj.:0x3 0x0 0x0 5
----Directorio: 0x1 0x1 2
Lin. Etq. Ref. 0x2 0xf 3
0x0 0x0 0 0x3 0x10 4
0x1 0x1 2 0x4 0x40 6
0x2 0xf 3 0x5 0x20 7
0x3 0x10 4 0x6 0x80 8
Ref. 0x0, etiqueta=0x0, w=0x0 Estadisticas:
----Exito Referencias: 9
----Directorio: Lineas precargadas: 0
Lin. Etq. Ref. Exitos en referencias: 2
0x0 0x0 5 Exitos incluyendo lineas precargadas: 2
0x1 0x1 2 Fallos incluyendo lineas precargadas: 7
0x2 0xf 3 Fallos compulsorios total: 7
0x3 0x10 4

*ASOCIATIVA CON 4 CONJUNTOS: 0x0 0x0 0x0 0


Param.: n= 4, c= 2, w=12 0x1 0x0 0x0 2
Lineas en cache: 16 Ref. 0xf000, etiqueta=0x3,
Palabras por linea: 4096 c=0x3, w=0x0
Conjuntos: 4 ----Linea vacia: conjunto:0x3,
Lineas por conjunto: 4 linea en conj.:0x0
Reemplazo:FIFO ----Directorio:
No precarga. Cto. Lin. Etq. Ref.
0x0 0x0 0x0 0
Ref. 0x0, etiqueta=0x0, 0x1 0x0 0x0 2
c=0x0, w=0x0 0x3 0x0 0x3 3
----Linea vacia: conjunto:0x0, Ref. 0x10000, etiqueta=0x4,
linea en conj.:0x0 c=0x0, w=0x0
----Directorio: ----Linea vacia: conjunto:0x0,
Cto. Lin. Etq. Ref. linea en conj.:0x1
0x0 0x0 0x0 0 ----Directorio:
Ref. 0x1000, etiqueta=0x0, Cto. Lin. Etq. Ref.
c=0x1, w=0x0 0x0 0x0 0x0 0
----Linea vacia: conjunto:0x1, 0x0 0x1 0x4 4
linea en conj.:0x0 0x1 0x0 0x0 2
----Directorio: 0x3 0x0 0x3 3
Cto. Lin. Etq. Ref. Ref. 0x0, etiqueta=0x0, c=0x0, w=0x0
0x0 0x0 0x0 0 ----Exito
0x1 0x0 0x0 1 ----Directorio:
Ref. 0x1001, etiqueta=0x0, Cto. Lin. Etq. Ref.
c=0x1, w=0x1 0x0 0x0 0x0 5
----Exito 0x0 0x1 0x4 4
----Directorio: 0x1 0x0 0x0 2
Cto. Lin. Etq. Ref. 0x3 0x0 0x3 3
240 FUNDAMENTOS DE LOS COMPUTADORES

Ref. 0x40000, etiqueta=0x10, 0x1 0x0 0x0 2


c=0x0, w=0x0 0x3 0x0 0x3 3
----Linea vacia: conjunto:0x0, Ref. 0x80000, etiqueta=0x20,
linea en conj.:0x2 c=0x0, w=0x0
----Directorio: ----Reemplazo fifo: conjunto:0x0,
Cto. Lin. Etq. Ref. linea en conj.:0x0
0x0 0x0 0x0 5 ----Directorio:
0x0 0x1 0x4 4 Cto. Lin. Etq. Ref.
0x0 0x2 0x10 6 0x0 0x0 0x20 8
0x1 0x0 0x0 2 0x0 0x1 0x4 4
0x3 0x0 0x3 3 0x0 0x2 0x10 6
Ref. 0x20000, etiqueta=0x8, 0x0 0x3 0x8 7
c=0x0, w=0x0 0x1 0x0 0x0 2
----Linea vacia: conjunto:0x0, 0x3 0x0 0x3 3
linea en conj.:0x3 Estadisticas:
----Directorio: Rerencias: 9
Cto. Lin. Etq. Ref. Leas precargadas: 0
0x0 0x0 0x0 5 Exitos en referencias: 2
0x0 0x1 0x4 4 Exitos incluyendo lineas precargadas: 2
0x0 0x2 0x10 6 Fallos incluyendo lineas precargadas: 7
0x0 0x3 0x8 7 Fallos compulsorios total: 6

3. Considerar una memoria principal de 64 Kb. estructurada en bytes y la


siguiente secuencia de acceso a memoria principal:
04F5h, 11E0h, 1500h, 2000h, 241Fh, 16FFh,
1233h, 21F0h
Mostrar el contenido del directorio cache, as como los fallos y precar-
gas que se producen para cada una de las caches descritas en la siguiente
tabla:
Tamano Tam. lnea Organizaci on
Cache 1 4 Kb. 256 bytes Directa; Precarga siempre.
Cache 2 2 Kb. 256 bytes Totalmente asociativa; Pre-
carga bajo fallo; Reemplazo
FIFO.
Cache 3 2 Kb. 256 bytes Asoc. de 2 conjuntos; Sin pre-
carga Reemplazo LRU.

############## CACHE 1: Lin. Etq. Ref.


Param.: n= 4, c= 4, w=8 0x4 0x0 0
Cache de mapeo directo. 0x5 0x0 0
Lineas en cache: 16 Ref. 0x11e0, etiqueta=0x1,
Conjuntos: 16 c=0x1, w=0xe0
Lineas por conjunto: 1 ----Linea vacia: conjunto:0x1,
Precarga:SIEMPRE, linea en conj.:0x0
Lineas a precargar:1 ----Directorio:
Lin. Etq. Ref.
Ref. 0x4f5, etiqueta=0x0, 0x1 0x1 1
c=0x4, w=0xf5 0x4 0x0 0
----Linea vacia: conjunto:0x4, 0x5 0x0 0
linea en conj.:0x0 Precarga: 0x12e0, etiqueta=0x1,
----Directorio: c=0x2, w=0xe0
Lin. Etq. Ref. ----Linea vacia: conjunto:0x2,
0x4 0x0 0 linea en conj.:0x0
Precarga: 0x5f5, etiqueta=0x0, ----Directorio:
c=0x5, w=0xf5 Lin. Etq. Ref.
----Linea vacia: conjunto:0x5, 0x1 0x1 1
linea en conj.:0x0 0x2 0x1 0
----Directorio: 0x4 0x0 0

APENDICE DE CACHE
A. DETALLES DE DISENO 241

0x5 0x0 0 0x2 0x1 0


Ref. 0x1500, etiqueta=0x1, 0x4 0x2 4
c=0x5, w=0x0 0x5 0x2 2
----Reemplazo: linea:0x5 0x6 0x1 5
----Directorio: Precarga: 0x17ff, etiqueta=0x1,
Lin. Etq. Ref. c=0x7, w=0xff
0x1 0x1 1 ----Linea vacia: conjunto:0x7,
0x2 0x1 0 linea en conj.:0x0
0x4 0x0 0 ----Directorio:
0x5 0x1 2 Lin. Etq. Ref.
Precarga: 0x1600, etiqueta=0x1, 0x0 0x2 3
c=0x6, w=0x0 0x1 0x2 1
----Linea vacia: conjunto:0x6, 0x2 0x1 0
linea en conj.:0x0 0x4 0x2 4
----Directorio: 0x5 0x2 2
Lin. Etq. Ref. 0x6 0x1 5
0x1 0x1 1 0x7 0x1 0
0x2 0x1 0 Ref. 0x1233, etiqueta=0x1,
0x4 0x0 0 c=0x2, w=0x33
0x5 0x1 2 ----Exito
0x6 0x1 0 ----Directorio:
Ref. 0x2000, etiqueta=0x2, Lin. Etq. Ref.
c=0x0, w=0x0 0x0 0x2 3
----Linea vacia: conjunto:0x0, 0x1 0x2 1
linea en conj.:0x0 0x2 0x1 6
----Directorio: 0x4 0x2 4
Lin. Etq. Ref. 0x5 0x2 2
0x0 0x2 3 0x6 0x1 5
0x1 0x1 1 0x7 0x1 0
0x2 0x1 0 Precarga: 0x1333, etiqueta=0x1,
0x4 0x0 0 c=0x3, w=0x33
0x5 0x1 2 ----Linea vacia: conjunto:0x3,
0x6 0x1 0 linea en conj.:0x0
Precarga: 0x2100, etiqueta=0x2, ----Directorio:
c=0x1, w=0x0 Lin. Etq. Ref.
----Reemplazo: linea:0x1 0x0 0x2 3
----Directorio: 0x1 0x2 1
Lin. Etq. Ref. 0x2 0x1 6
0x0 0x2 3 0x3 0x1 0
0x1 0x2 1 0x4 0x2 4
0x2 0x1 0 0x5 0x2 2
0x4 0x0 0 0x6 0x1 5
0x5 0x1 2 0x7 0x1 0
0x6 0x1 0 Ref. 0x21f0, etiqueta=0x2,
Ref. 0x241f, etiqueta=0x2, c=0x1, w=0xf0
c=0x4, w=0x1f ----Exito
----Reemplazo: linea:0x4 ----Directorio:
----Directorio: Lin. Etq. Ref.
Lin. Etq. Ref. 0x0 0x2 3
0x0 0x2 3 0x1 0x2 7
0x1 0x2 1 0x2 0x1 6
0x2 0x1 0 0x3 0x1 0
0x4 0x2 4 0x4 0x2 4
0x5 0x1 2 0x5 0x2 2
0x6 0x1 0 0x6 0x1 5
Precarga: 0x251f, etiqueta=0x2, 0x7 0x1 0
c=0x5, w=0x1f Precarga: 0x22f0, etiqueta=0x2,
----Reemplazo: linea:0x5 c=0x2, w=0xf0
----Directorio: ----Reemplazo: linea:0x2
Lin. Etq. Ref. ----Directorio:
0x0 0x2 3 Lin. Etq. Ref.
0x1 0x2 1 0x0 0x2 3
0x2 0x1 0 0x1 0x2 7
0x4 0x2 4 0x2 0x2 6
0x5 0x2 2 0x3 0x1 0
0x6 0x1 0 0x4 0x2 4
Ref. 0x16ff, etiqueta=0x1, 0x5 0x2 2
c=0x6, w=0xff 0x6 0x1 5
----Exito 0x7 0x1 0
----Directorio:
Lin. Etq. Ref. Estadisticas:
0x0 0x2 3 Referencias: 8
0x1 0x2 1 Lineas precargadas: 8
242 FUNDAMENTOS DE LOS COMPUTADORES

Exitos en referencias: 3 Fallos incluyendo lineas precargadas: 13


Exitos incluyendo lineas precargadas: 3 Fallos compulsorios total: 8

############## CACHE 2: 0x3 0x12 0


Param.: n= 3, c= 0, w=8 0x4 0x15 2
Lineas en cache: 8 0x5 0x16 0
Conjuntos: 1 0x6 0x20 3
Lineas por conjunto: 8 Precarga: 0x2100, etiqueta=0x21, w=0x0
Reemplazo:FIFO ----Linea vacia: conjunto:0x0,
Precarga:BAJO FALLO linea en conj.:0x7
Lineas a precargar:1 ----Directorio:
Lin. Etq. Ref.
Ref. 0x4f5, etiqueta=0x4, w=0xf5 0x0 0x4 0
----Linea vacia: conjunto:0x0, 0x1 0x5 0
linea en conj.:0x0 0x2 0x11 1
----Directorio: 0x3 0x12 0
Lin. Etq. Ref. 0x4 0x15 2
0x0 0x4 0 0x5 0x16 0
Precarga: 0x5f5, etiqueta=0x5, w=0xf5 0x6 0x20 3
----Linea vacia: conjunto:0x0, 0x7 0x21 0
linea en conj.:0x1 Ref. 0x241f, etiqueta=0x24, w=0x1f
----Directorio: ----Reemplazo fifo: conjunto:0x0,
Lin. Etq. Ref. linea en conj.:0x0
0x0 0x4 0 ----Directorio:
0x1 0x5 0 Lin. Etq. Ref.
Ref. 0x11e0, etiqueta=0x11, w=0xe0 0x0 0x24 4
----Linea vacia: conjunto:0x0, 0x1 0x5 0
linea en conj.:0x2 0x2 0x11 1
----Directorio: 0x3 0x12 0
Lin. Etq. Ref. 0x4 0x15 2
0x0 0x4 0 0x5 0x16 0
0x1 0x5 0 0x6 0x20 3
0x2 0x11 1 0x7 0x21 0
Precarga: 0x12e0, etiqueta=0x12, w=0xe0 Precarga: 0x251f, etiqueta=0x25, w=0x1f
----Linea vacia: conjunto:0x0, ----Reemplazo fifo: conjunto:0x0,
linea en conj.:0x3 linea en conj.:0x1
----Directorio: ----Directorio:
Lin. Etq. Ref. Lin. Etq. Ref.
0x0 0x4 0 0x0 0x24 4
0x1 0x5 0 0x1 0x25 0
0x2 0x11 1 0x2 0x11 1
0x3 0x12 0 0x3 0x12 0
Ref. 0x1500, etiqueta=0x15, w=0x0 0x4 0x15 2
----Linea vacia: conjunto:0x0, 0x5 0x16 0
linea en conj.:0x4 0x6 0x20 3
----Directorio: 0x7 0x21 0
Lin. Etq. Ref. Ref. 0x16ff, etiqueta=0x16, w=0xff
0x0 0x4 0 ----Exito
0x1 0x5 0 ----Directorio:
0x2 0x11 1 Lin. Etq. Ref.
0x3 0x12 0 0x0 0x24 4
0x4 0x15 2 0x1 0x25 0
Precarga: 0x1600, etiqueta=0x16, w=0x0 0x2 0x11 1
----Linea vacia: conjunto:0x0, 0x3 0x12 0
linea en conj.:0x5 0x4 0x15 2
----Directorio: 0x5 0x16 5
Lin. Etq. Ref. 0x6 0x20 3
0x0 0x4 0 0x7 0x21 0
0x1 0x5 0 Ref. 0x1233, etiqueta=0x12, w=0x33
0x2 0x11 1 ----Exito
0x3 0x12 0 ----Directorio:
0x4 0x15 2 Lin. Etq. Ref.
0x5 0x16 0 0x0 0x24 4
Ref. 0x2000, etiqueta=0x20, w=0x0 0x1 0x25 0
----Linea vacia: conjunto:0x0, 0x2 0x11 1
linea en conj.:0x6 0x3 0x12 6
----Directorio: 0x4 0x15 2
Lin. Etq. Ref. 0x5 0x16 5
0x0 0x4 0 0x6 0x20 3
0x1 0x5 0 0x7 0x21 0
0x2 0x11 1 Ref. 0x21f0, etiqueta=0x21, w=0xf0

APENDICE DE CACHE
A. DETALLES DE DISENO 243

----Exito 0x6 0x20 3


----Directorio: 0x7 0x21 7
Lin. Etq. Ref. Estadisticas:
0x0 0x24 4 Referencias: 8
0x1 0x25 0 Lineas precargadas: 5
0x2 0x11 1 Exitos en referencias: 3
0x3 0x12 6 Exitos incluyendo lineas precargadas: 3
0x4 0x15 2 Fallos incluyendo lineas precargadas: 10
0x5 0x16 5 Fallos compulsorios total: 8

############## CACHE 3: 0x0 0x1 0x10 3


Param.: n= 3, c= 1, w=8 0x0 0x2 0x12 4
Lineas en cache: 8 0x1 0x0 0x8 1
Palabras por linea: 256 0x1 0x1 0xa 2
Conjuntos: 2 Ref. 0x16ff, etiqueta=0xb,
Lineas por conjunto: 4 c=0x0, w=0xff
Reemplazo:LRU ----Linea vacia: conjunto:0x0,
No precarga linea en conj.:0x3
----Directorio:
Ref. 0x4f5, etiqueta=0x2, c=0x0, w=0xf5 Cto. Lin. Etq. Ref.
----Linea vacia: conjunto:0x0, 0x0 0x0 0x2 0
linea en conj.:0x0 0x0 0x1 0x10 3
----Directorio: 0x0 0x2 0x12 4
Cto. Lin. Etq. Ref. 0x0 0x3 0xb 5
0x0 0x0 0x2 0 0x1 0x0 0x8 1
Ref. 0x11e0, etiqueta=0x8, 0x1 0x1 0xa 2
c=0x1, w=0xe0 Ref. 0x1233, etiqueta=0x9,
----Linea vacia: conjunto:0x1, c=0x0, w=0x33
linea en conj.:0x0 ----Reemplazo lru: conjunto:0x0,
----Directorio: linea en conj.:0x0
Cto. Lin. Etq. Ref. ----Directorio:
0x0 0x0 0x2 0 Cto. Lin. Etq. Ref.
0x1 0x0 0x8 1 0x0 0x0 0x9 6
Ref. 0x1500, etiqueta=0xa, 0x0 0x1 0x10 3
c=0x1, w=0x0 0x0 0x2 0x12 4
----Linea vacia: conjunto:0x1,
linea en conj.:0x1 0x0 0x3 0xb 5
----Directorio: 0x1 0x0 0x8 1
Cto. Lin. Etq. Ref. 0x1 0x1 0xa 2
0x0 0x0 0x2 0 Ref. 0x21f0, etiqueta=0x10,
0x1 0x0 0x8 1 c=0x1, w=0xf0
0x1 0x1 0xa 2 ----Linea vacia: conjunto:0x1,
Ref. 0x2000, etiqueta=0x10, linea en conj.:0x2
c=0x0, w=0x0 ----Directorio:
----Linea vacia: conjunto:0x0, Cto. Lin. Etq. Ref.
linea en conj.:0x1 0x0 0x0 0x9 6
----Directorio: 0x0 0x1 0x10 3
Cto. Lin. Etq. Ref. 0x0 0x2 0x12 4
0x0 0x0 0x2 0 0x0 0x3 0xb 5
0x0 0x1 0x10 3 0x1 0x0 0x8 1
0x1 0x0 0x8 1 0x1 0x1 0xa 2
0x1 0x1 0xa 2 0x1 0x2 0x10 7
Ref. 0x241f, etiqueta=0x12, Estadisticas:
c=0x0, w=0x1f Referencias: 8
----Linea vacia: conjunto:0x0, Lineas precargadas: 0
linea en conj.:0x2 Exitos en referencias: 0
----Directorio: Exitos incluyendo lineas precargadas: 0
Cto. Lin. Etq. Ref. Fallos incluyendo lineas precargadas: 8
0x0 0x0 0x2 0 Fallos compulsorios total: 7

4. Disponemos de una memoria cache de 4 Kb. con tama no de lnea de


256 bytes, organizaci
on asociativa de 8 conjuntos, algoritmo de precarga
bajo fallo y algoritmo de reemplazo LRU.
Conectamos la cache entre un procesador de 8 bits y una memoria
principal de 1 Mb. Se pide:
244 FUNDAMENTOS DE LOS COMPUTADORES

a) Dise nar la memoria principal de manera que se optimice la trans-


ferencia de informaci on entre cache y memoria principal.
b) Suponiendo la cache inicialmente vaca, describir la evoluci on del
directorio cache para la siguiente secuencia de petici on de direccio-
nes a memoria principal:
319F0h, 31AF0h, 7013Ch, 77777h, 44037h,
778DEh, A5021h
Indicar claramente el ciclo en el que entra cada dato en el directorio
cache, as como su etiqueta identificativa dentro de este.
c) Comparar el sistema anterior con respecto a criterios de rendimiento
y coste frente a una cache organizada de forma directa y a otra
totalmente asociativa.
5. Considerar una memoria asociativa organizada en palabras de 8 bits.
Realizar algoritmos para implementar las operaciones de b usqueda que
se muestran a continuaci on, indicando a cada paso los valores del registro
comparando (C) y del registro m ascara (M). Todos los algoritmos deben
ser independientes del n umero de celdas de la memoria.
a) Los n umeros que no sean iguales al 01101110.
b) Los n umeros m ultiplos de 4, bien menores a -38 o bien comprendidos
entre 0 y 82, considerando representaci on signo-magnitud.
c) Los n umeros comprendidos entre 20 y 30.
Solucio n:
(a) Buscamos los n umeros que difieran en el primer bit, los que di-
fieran en el segundo, .... (se puede hacer de diversas maneras, con esta
intentamos hacer busquedas disjuntas de patrones).
1. M=1000 0000; C=1110 1110; B usqueda. (Patron 1xxxxxxx)
2. M=1100 0000; C=0010 1110; B usqueda. (Patron 00xxxxxx)
3. M=1110 0000; C=0100 1110; B usqueda. (Patron 010xxxxx)
4. M=1111 0000; C=0111 1110; B usqueda. (Patron 0111xxxx)
5. M=1111 1000; C=0110 0110; B usqueda. (Patron 01100xxx)
6. M=1111 1100; C=0110 1010; B usqueda. (Patron 011010xx)
7. M=1111 1110; C=0110 1100; B usqueda. (Patron 0110110x)
8. M=1111 1111; C=0110 1111; B usqueda. (Patron 01101111)
(b) En binario: +82=0 1010010 y -38=1 0100110. Buscamos primero
los positivos menores a 82 y multiplos de 4. Denotamos con 0 el bit
menos significativo y con 7 el m as significativo:
1. C=00000000, M=11000011; B usqueda. (Patr ones 00xxxx00)
2. C=01000000, M=11110011; B usqueda. (Patr ones 0100xx00)

APENDICE DE CACHE
A. DETALLES DE DISENO 245

3. C=01010000, M=11111111; B usqueda. (Patr on 01010000)


Y luego los negativos: es decir aquellos cuyos u ltimos 7 bits corres-
ponda a un valor mayor a 38, su bit m as significativo sea 1 y los bits 1
y 0 sean 0.
4. C=11000000, M=11000011; B usqueda. (Patr on 11xxxx00)
5. C=10110000, M=11110011; B usqueda. (Patr on 1011xx00)
6. C=10101000, M=11111011; Busqueda. (Patr on 10101x00)
6. Supongamos una cache totalmente asociativa compuesta por 4 lneas, y
un programa compuesto por un bucle que se ejecuta 1000 veces y solicita
las lneas A-B-C-D-E de memoria principal en cada iteraci on, siguiendo
la secuencia A, B, C, D, E, A, C. Sabiendo que el n umero de accesos a
cada lnea de memoria principal por cada iteraci on del bucle es A:100,
B:5, C:6, D:4 y E:10, calcular el ndice de fallos si utilizamos el algoritmo
de reemplazo LRU. Idem para el algoritmo FIFO.
7. Sea un procesador de 16 bits con un bus de direcciones de 24 bits al que
se le quiere dotar de un sistema de memoria cache con las siguientes ca-
ractersticas: Organizacion totalmente asociativa, 8 lneas de 16 palabras
cada una, precarga bajo fallo y algoritmo de reemplazo FIFO.
a) Dise nar un sistema de memoria principal a partir de pastillas de
256Kx8 de forma que la transferencia de informaci on entre memoria
principal y cache sea lo m
as r
apida posible.
b) Dado el estado inicial de la cache que aparece en la siguiente tabla,
indicar la evoluci
on del directorio cache para la siguiente secuencia
de referencias a memoria: 0A3014h, 12345Bh, BB2303h, C0E50Fh,
C0E4F3h. Las lneas entraron en la cache siguiendo el orden que
aparece en la tabla. Suponer que una lnea precargada cuenta como
una lnea cualquiera a la hora de aplicar el algoritmo FIFO.
N
umero de lnea Etiqueta para los datos de esa lnea
0 0A301h
1 43A02h
2 12345h
3 AC0C3h
4 C0E50h
5 BB232h
6 11E91h
7 11E92h
246 FUNDAMENTOS DE LOS COMPUTADORES

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

numero de bytes transferidos en cada referencia.


1 iteraci
on: I 2407H ; instruccion MOV BX, TABLA1[SI] 4 bytes
R 2000H ; comienzo TABLA1 2 bytes
I 240BH ; instruccion MOV BX, TABLA2[SI] 4 bytes
R 2100H ; comienzo TABLA2 2 bytes
I 240FH ; instruccion MOV TABLA1[SI], BX 4 bytes
W 2000H ; comienzo TABLA1 2 bytes
I 2413H ; instruccion ADD SI, 02H 3 bytes
I 2416H ; instruccion CMP SI, 128 4 bytes
I 241AH ; instruccion JNE 2 bytes
2 iteracion: I 2407H ; instrucci on MOV BX, TABLA1[SI]
R 2002H ; comienzo TABLA1 + 2
I 240BH ; instruccion MOV BX, TABLA2[SI]
R 2102H ; comienzo TABLA2 + 2
I 240FH ; instruccion MOV TABLA1[SI], BX
W 2002H ; comienzo TABLA1 + 2
I 2413H ; instruccion ADD SI, 02H
I 2416H ; instruccion CMP SI, 128
I 241AH ; instruccion JNE
.........................................
A la hora de simular la traza anterior hay que tener en cuenta las
siguientes indicaciones:
- Los parametros a fijar: n=9; w=2;
- Obtener la direccion de palabra asociada a cada referencia
ya que las peticiones estan expresadas en direcciones a nivel
de byte.
- Como las palabras son de 2 bytes pero las referencias son
de bytes, el acceso a una palabra que empieza en una posicion
par solo implica un acceso a memoria, mientras que el acceso
a una palabra que empieza en una posicion impar necesita dos
accesos a memoria.
Ap
endice E

Soluci
on a las relaciones de
problemas

E.1. DE LA INFORMACION
REPRESENTACION

Representaci
on de los datos

1. Convierte los siguientes n


umeros decimales a binario: 1984, 4000, 8192.
Solucion: 11111000000, 111110100000,
213 =10000000000000
2. Que numero es 1001101001(2 en decimal? En octal? En hexadecimal?
Solucion: 1001101001(2 = 617(10 = 1151(8 = 269(16
3. Cuales de estos son numeros hexadecimales v alidos?: CAE, ABAD,
CEDE, DECADA, ACCEDE, GAFE, EDAD. Pasar los n umeros v
alidos
a binario.
Solucion:
CAE = 1100 1010 1110
ABAD = 1010 1011 1010 1101
CEDE = 1100 1110 1101 1110
DECADA = 1101 1110 1100 1010 1101 1010
ACCEDE = 1010 1100 1100 1110 1101 1110
EDAD = 1110 1101 1010 1101
4. Expresa el n umero decimal 100 en todas las bases, de 2 a 9.
Solucion: 100(10 = 121(9 = 144(8 = 202(7 = 244(6 = 400(5 =
1210(4 = 10201(3 = 1100100(2
5. Cuantos enteros positivos se pueden representar con k dgitos usando

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

6. El siguiente conjunto de 16 bits:


1001 1000 0101 0100
puede representar un n umero que depende del convenio utilizado.
Dar su significacion 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)
Soluci
on:
a) Signo y Magnitud = -6228
b) Complemento a 1 = -26539
c) Complemento a 2 = -26540
d) BCD natural (8,4,2,1) = 9854
e) BCD exceso a 3 = 6521
f) BCD Aiken (2,4,2,1) = s olo valido el 4 final
7. Para las siguientes representaciones de n bits, dar el rango, precisi on,
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
Soluci
on:

Formato Rango Precisi


on Cero(s)
Sig/Mag [(2n1 1), 2n1 1] n
2 1 10..0/00..0
C1 [(2 n1 1), 2n1 1] 2n 1 11..1/00..0
C2 [2n1 , 2n1 1] 2n 00..0

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

Formato N.o Positivos N.o Negativos


Sig/Mag 2n1 1 2n1 1
C1 2n1 1 2n1 1
C2 2n1 1 2n1

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

hexadecimal la palabra IEEE de 32 bits).


Solucion:
Requisitos: igual n umero de valores positivos y negativos, detecci on
simple del signo y del cero e implementaci on sencilla de las operaciones
aritmeticas basicas. El Complento a 2.
0 1000 0010 0011 1000 0000 ... 0 = 411C0000(H
13. En una PDP-11 los n umeros en punto flotante de precision 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.
Solucion: 0 0111 1100 1100 0000 ... 0
14. Expresa el n umero 7/64 en el formato IBM/360, y en el formato IEEE-
754.
Solucion:
a) IBM/360 : 0 100 0000 0001 1100 0000 ... 0
b) IEEE-754 : 0 0111 1011 1100 0000 0000 ... 0
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
Solucion:
a) IEEE-754 : 1.75
b) IBM/360 : 0.0546875
c) PDP-11 : 0.875
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 implto.
0 1000000 0001010100000001
0 0111111 0000001111111111
0 1000011 1000000000000000
Solucion:
0 0111101 1010100000001000
0 0111001 1111111111000000

APENDICE A LAS RELACIONES DE PROBLEMAS
B. SOLUCION 253

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) 255 instrucciones con un registro,


c) 16 instrucciones con cero registros.
Solucion: No. Si hacemos el dise no vemos que nos falta un bit.
a) 4 instrucciones con tres registros:
C.O. (3) R1 (3) R2 (3) R3 (3)
con C.O. de 000 a 011.
b) 255 instrucciones con un registro:
1 (1) C.O. (8) REG (3)
con C.O. de 00000000 a 11111110.
c) 16 instrucciones con cero registros:
1 (1) 11111111 (8) C.O. (3)
Solo nos quedan 3 bits, con lo que se podran codificar como m aximo
8 instrucciones con cero registros.
3. Cierta m aquina tiene instrucciones de 16 bits y direcciones de 6. Algunas
instrucciones tienen una direcci on y otras dos. Si hay n instrucciones
de dos direcciones, cu al es el n
umero m aximo de instrucciones de una
direcci
on?
Solucion: (16 n) 64
4. Queremos dise nar el formato de instrucciones de un microprocesador
con 16 registros internos, y que puede direccionar 1 Kbyte de memoria.
Dentro del conjunto de instrucciones encontramos las siguientes:
a) 15 instrucciones del tipo:
Codigo de Op. Desp, Direcci on, Direcci
on
b) 63 instrucciones del tipo:
Codigo de Op. Desp, Direcci on, Registro
c) 60 instrucciones del tipo:
Codigo de Op. Direcci on, Registro
d) 15 instrucciones del tipo:
Codigo de Op. Registro, Registro, Registro
e) 16 instrucciones del tipo:
Codigo de Op.
Donde el campo desplazamiento (Desp) nos permite implementar el
direccionamiento relativo, desplaz andonos como m aximo 63 bytes res-
pecto de la direcci
on base apuntada por la primera Direcci on. El despla-
zamiento siempre ser a positivo.
Se pide:

APENDICE A LAS RELACIONES DE PROBLEMAS
B. SOLUCION 255

a) Decir de cu antas direcciones es cada tipo de instrucciones (0, 1, 2


o 3).
b) Dise nar el formato de cada tipo de instrucciones mediante c odigos
de operacion con extension.
Solucion:
Decir de cu antas direcciones es cada tipo de instrucciones (0, 1, 2
o 3).
(a) 2, (b) 2, (c) 2, (d) 3, (e) 0.
Disenar el formato de cada tipo de instrucciones mediante c odigos
de operacion con extension.
Desplazamiento 6 bits, Direcci on 10 bits, Registro 4 bits.
a) C.O. (4) Desp (6) Dir (10) Dir (10)

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)

Se necesitaran por lo tanto 30 bits para codificar todas las posibles


instrucciones.
5. Dados los contenidos de las celdas de memoria que siguen y una m aquina
de una direccion con un acumulador, que valores cargan en el acumu-
lador las instrucciones siguientes?
la palabra 20 contiene 40
la palabra 30 contiene 50
la palabra 40 contiene 60
la palabra 50 contiene 70
a) LOAD 20
b) LOAD [20]
c) LOAD [[20]]
d) LOAD 30
e) LOAD [30]
f) LOAD [[30]]
Solucion:
256 FUNDAMENTOS DE LOS COMPUTADORES

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.

E.2. PROCESADOR CENTRAL

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

4. Tenemos 250 numeros en C2 de 16 bits en las posiciones 500 a 998 de


memoria. Escribir un programa en ensamblador del 8086 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.
Soluci
on:
XOR AX, AX ; P=0
XOR BX, BX ; N=0
MOV DI, 500
MOV CX, 250
LAZO: MOV DX, [DI]
ADD DI, 2
CMP DX, 0
JL NEGA ; Salta si menor que cero
INC AX
JMP CONT
NEGA: INC BX
CONT: LOOP LAZO
MOV [1000], AX
MOV [1002], BX
END
Otro posible algoritmo solo contara los positivos y luego calculara los nega-
tivos restando de 250. Esto es m as eficiente ya que nos evitamos los incrementos
del registro BX, un salto incondicional y el XOR BX, BX. Tambien podemos ha-
cer la comparaci on con el dato de memoria directamente sin copiarlo en un
registro, ya que la instrucci
on CMP no modifica los operandos (s olo actualiza los
flags despues de restar, pero no guarda el resultado en ning un sitio):

APENDICE A LAS RELACIONES DE PROBLEMAS
B. SOLUCION 259

XOR AX, AX ; P=0


MOV DI, 500
MOV CX, 250
LAZO: CMP [DI], 0
JL CONT
INC AX
CONT: ADD DI, 2
LOOP LAZO
MOV [1000], AX
SUB AX, 250; AX=AX-250
NEG AX
MOV [1002], AX
END

5. 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.
Soluci
on:
MOV CX, 99
MOV DI, 1000
MOV AX, [DI]; tomar el primer numero
ADD DI, 2
LAZO: CMP AX, [DI]
JG SIGUE
MOV AX, [DI]
SIGUE: ADD DI, 2
LOOP LAZO
MOV [DI], AX
END

6. Escribir un procedimiento en lenguaje ensamblador del 8086 que calcule N! y


lo almacene en la posicion de memoria 502. Supondremos que 1<N<255, que
el n
umero N est a en la posici
on 500 de memoria y que N! cabe en un registro
de 8 bits.
Solucion:
XOR CX, CX
MOV AL, [500]
MOV CL, AL
DEC CL
BUCLE: MUL CL
LOOP BUCLE
MOV [502], AX
END
260 FUNDAMENTOS DE LOS COMPUTADORES

7. Escribir una subrutina en lenguaje ensamblador que convierta un entero binario


positivo (menor que 1000 y almacenado en la posici on 2000 de memoria) a
ASCII, guardando cada car acter a partir de la posici
on 3000 de memoria. Por
ejemplo, el n
umero 345 debe traducirse a los caracteres ASCII 3, 4 y 5 (33H,
34H y 35H en hexadecimal respectivamente)
Soluci
on:
MOV DI, 3002
MOV CX, 3 ; cifras
MOV AX, [2000]
MOV BX, 10
BUCLE: DIV BL
ADD AH, 30h
MOV [DI], AH
DEC DI
MOV AH, 0
LOOP BUCLE
END

8. a)Escribe el diagrama de flujo y el programa en ensamblador del 8086 de


Intel para el algoritmo que realiza la siguiente funcion:
Dada una tabla en la posici 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 (divisi
on entera), dejando cada numero
modificado en la misma posici on de la tabla en la que estaba. No
utilizar las instrucciones MUL y DIV. No considerar el caso de
overflow al multiplicar por dos.
b) Que diferencia hay entre los desplazamientos l ogicos y aritmeticos a la
derecha?
Soluci
on:
a) El diagrama de flujo y el codigo resultante pueden verse a continuaci on.
Hay que tener en cuenta que en los n umeros impares negativos se pierde
el bit menos significativo (a 1), con lo que el resultado quedar a en C1.
Habr a que sumar uno en este caso para tenerlo en C2.
MOV SI, 100
MOV CX, 50
LAZO: MOV AX, [SI]
SAR AX, 1
JC IMPAR
PAR: SAL AX, 2
JMP CONT
IMPAR: CMP AX, 0
JGE CONT ; salta si es positivo
ADD AX, 1

APENDICE A LAS RELACIONES DE PROBLEMAS
B. SOLUCION 261

Inicializacion

Leer dato

SAR

No Si (impar)
CF?

SAL 2 Suma 1 a <0

Escribe dato

Si
Mas?

No

FIN

Figura E.1: Diagrama de Flujo del programa del problema 8

CONT: MOV [SI], AX


ADD SI, 2
LOOP LAZO
END

b) En los desplazamientos aritmeticos a la derecha se produce extensi


on de
signo y en los l
ogicos se introducen 0s. Mirar ejercicio 1.
9. Escribe el diagrama de flujo y el programa en ensamblador del 8086 de Intel
para el algoritmo que realiza la siguiente funci
on:
Dada una tabla en la posici on 500 de memoria con 50 n umeros de
16 bits en complemento a dos, forzar a cero los n umeros negativos y
multiplicar por tres los positivos, dejando cada numero modificado en
la misma posici on de la tabla en la que estaba. No utilizar ninguna
instrucci
on de multiplicar (MUL). No considerar el caso de overflow al
multiplicar por tres.
Solucion:
262 FUNDAMENTOS DE LOS COMPUTADORES

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

Figura E.2: Diagrama de Flujo del programa del problema 9

MOV SI, 500


MOV CX, 50
LAZO: MOV AX, [SI]
CMP AX, 0
JG POSI
MOV AX, 0
JMP CONT
POSI: MOV BX, AX
SAL AX, 1
ADD AX, BX
CONT: MOV [SI], AX
ADD SI, 2
LOOP LAZO
END

10. Suponga que el contenido de la memoria de un sistema basado en el i8086 es


el que se muestra en la tabla E.1. El valor de los registros es: DS=SS=E000H,
SI=0001H, DI=0002H, BP=0003H, BX=0004H. Se define as mismo una eti-
queta TABLA, que apunta a la direcci
on fsica E0001H y que pertence al segmento
de datos.
Para cada una de las siguientes instrucciones, determine como quedan afec-
tados los registros correspondientes:

APENDICE A LAS RELACIONES DE PROBLEMAS
B. SOLUCION 263

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

Tabla E.1: Contenido de la memoria

MOV AX, [TABLA]


MOV AX, [SI]
MOV AL, [SI]
MOV AX, [SI+2]
MOV AX, TABLA[SI]
MOV AL, TABLA[SI]
MOV AH, TABLA[SI]
MOV AX, [BP+2]
MOV AX, [BX+SI]
MOV AX, [BP+SI]
MOV AL, [BP+SI+1]
MOV AH, TABLA[BX][SI]
LEA AX, TABLA
LEA DI, TABLA[SI+1]
MOV AX, SEG TABLA
MOV CX, OFFSET TABLA
Soluci
on:
MOV AX, [TABLA] ; AX = 5634H
MOV AX, [SI] ; AX = 5634H
MOV AL, [SI] ; AL = 34H
MOV AX, [SI+2] ; AX = 9A78H
MOV AX, TABLA[SI] ; AX = 7856H
MOV AL, TABLA[SI] ; AL = 56H
264 FUNDAMENTOS DE LOS COMPUTADORES

MOV AH, TABLA[SI] ; AH = 56H


MOV AX, [BP+2] ; AX = DEBCH
MOV AX, [BX+SI] ; AX = DEBCH
MOV AX, [BP+SI] ; AX = BC9AH
MOV AL, [BP+SI+1] ; AL = BCH
MOV AH, TABLA[BX][SI] ; AH = DEH
LEA AX, TABLA ; AX = 0001H
LEA DI, TABLA[SI+1] ; DI = 0003H
MOV AX, SEG TABLA ; AX = E000H
MOV CX, OFFSET TABLA ; CX = 0001H

E.3. DE CONTROL
SECCION

Nos limitamos en este apartado a presentar los contenidos de la ROM de


microprograma y la ROM de Proyecci on para cada uno de los ejercicios. Los
bits no especificados se suponen puestos a cero.

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

Nota: En las siguientes tablas en la columna Descripci on se muestra


en pseudocodigo la acci
on que realiza cada microinstrucci
on. La abreviatura
DEC. se ha empleado para indicar la decodificaci on, que implica la carga
del contador de microprograma con el contenido de la posici on de la ROM
de proyecci
on seleccionada por el registro de instrucci
on (RI), es decir, la
operaci
on P C ROMproyeccion (RI).

APENDICE

L R C De X Mem ALU F M Salto


Comentario Dir. b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15 b16 b17 b18 CS Dir. Salto
(PC) RI 0 0 1 1
B. SOLUCION

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

Tabla E.2: Memoria de microprograma para los problemas 1, 2 y 3


265
FUNDAMENTOS DE LOS COMPUTADORES

Registros ALU PC Mem. MAR DR Salto


Comentario Dir. c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 CS Dir. Salto
PC MAR 0 0 0 1 1
PC++, MEM DR 1 1 0 0 1 1
DR RI 2 0 0 0 1 1
DEC. 3 1 11 0
A TMP 4 0 0 1 0 1 0 0 1 1 0 0 11 0
A MAR 5 1 0 0 1 1 0 0 1
MEM DR 6 1 1
DR B 7 0 1 0 0 1 11 0
Z? 8 10 0
A PC 9 1 0 0 1 1 0 0 0 1 0 11 0
A MAR 10 1 0 0 1 1 0 0 1
MEM DR 11 1 1
DR TMP 12 0 0 1 0 1
B TMP B 13 0 1 0 0 0 1 1 0 1 1 0 11 0
Tabla E.3: Problema 4. Memoria de microprograma
266

APENDICE B. SOLUCION

LOAD CLR BUS INC SH M CS DIR


Comentario Dir. c1 c2 c3 c4 c5 c6 c7 c8 c9 CS Dir. Salto
Clear AC y Cont. 100 1
Si x(0) salta a 103 101 10 0110 0111 (103)
Suma 102 1
Shift, Inc, FIN? 103 1 1 01 0000 0000
Salta 101 104 11 0110 0101 (101)

Tabla E.4: Problema 5. Memoria de microprograma


267 A LAS RELACIONES DE PROBLEMAS
FUNDAMENTOS DE LOS COMPUTADORES

Banco de Reg. AC, RI, DR ALU SR Mem. Cte Salto


Comentario Dir. c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 CS Dir. /Cte.
DR (PC); AC 0 1 1 1 1 1 1 1 1
PC
RI DR 1 1 1
PC AC+0+c13; 2 1 1 1 1 1 1 1 1
DEC.
AC A 3 1 1
B B+AC 4 0 1 1 1 1 1 1 0
AC A 5 1 1
B AC + 0 (cte) 6 0 1 1 1 1 1 0
AC A 7 1 1
B B+AC 8 0 1 1 1
DR (B); AC 0 9 0 1 1 1 1 1 0
B DR+AC 10 0 1 1 1 1 1 0
Si N=1 salta a 0 11 0 1 0
AC C; Si Z=1 12 1 0 1 1 1 0 0
salta a 0
PC AC+0 13 1 1 1 1 1 1 0
Tabla E.5: Problema 6. Memoria de microprograma
268

Mem. Reg. Dir. Reg. Dat. Carga ALU Transf. M Salto


Descripci
on Dir.
APENDICE

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

Tabla E.6: Problema 7. Memoria de microprograma


269
270 FUNDAMENTOS DE LOS COMPUTADORES

E.4. DE PROCESAMIENTO: ALGORITMOS


SECCION

ARITMETICOS

Muchos de los problemas de este tema son autocomprobables, por lo que se


ha omitido su soluci
on.
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 raz on por la que, en el algoritmo de suma/resta en C1, hay
que sumar el carry de salida al resultado.
Soluci
on:
Para hacer la demostraci on vamos a ir viendo que ocurre en cada
uno de los casos posibles:
a) Los dos n umeros a sumar son positivos (x n = yn = 0). Como los
dos bits de signo son cero, cn+1 = 0 siempre. En este caso puede
ocurrir:
1) sn = cn = 0 situaci on normal
2) sn = 1, como debera ser cero (suma de positivos es positiva),
nos indica que existe desbordamiento en la suma
b) Los dos n umeros a sumar son de distinto signo. Veremos que ocurre
si x > 0 e y < 0. El otro caso es simetrico, por lo que la demostra-
ci
on es similar, intercambiando x por y.

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

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
Soluci
on:
El modo de proceder es como en complemento a uno cuando traba-
jamos en binario (ver apuntes de teora, ya que el complemento a 9 es
otro caso particular del complemento a la base menos uno, en el que la
base es 10).
5. Los numeros 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
numero correspondiente en C9, prescindiendo del acarreo. M as formal-
mente, el C10 de un numero decimal N se obtiene mediante la siguiente
expresi
on:
C10(N ) = 10n N
Cual ser
a la regla para la adici
on en complemento a 10?
Soluci
on:
El modo de proceder es como en complemento a dos cuando trabaja-
mos en binario (ver apuntes de teora, ya que el complemento a 10 es
otro caso particular del complemento a la base, en el que la base es 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 mas 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.
Soluci
on:
a) La arquitectura necesaria para implementar el sumador de 6 su-
mandos aparece representada en la figura E.3. El u ltimo sumador
es un sumador de acarreo anticipado o propagado (SAP).

APENDICE A LAS RELACIONES DE PROBLEMAS
B. SOLUCION 273

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

b) En primer lugar sumamos 12+5+7, para conseguir s1 y c1. En pa-


ralelo sumamos 3+10+9 obteniendo s2 y c2; a continuaci
on suma-
mos s1+2c1+s2 seguido de s3+2c3+2c2. Por u
ltimo en un sumador
convencional sumamos s4+2c4.

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

Deberemos usar sumadores de al menos 6 bits ( o siete si trabajamos


en C2) para evitar desbordamiento de la suma.
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.
Soluci
on:
Los sumadores de accarreo almacenado son especialmente u tiles cuan-
do estamos trabajando con m as de dos operandos. En la figura E.4 apa-
rece representado el arbol pedido.

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

Igualamos los exponentes al mayor de los dos y sumamos. El resul-


tado obtenido se vuelve a normalizar.
1.000 1100 27
0.000 1101 27
1.001 1001 27

1.001 1001 27 C3190000


b) 3B370000 0 | 011 1101 0 | 011 0111 00..00 = 1.0110111 2 9
39F 68000 0 | 011 1001 1 | 111 0110 1000 00..00 = 1.11101101
212

1.01101110000 29
0.00111101101 29
1.10101011101 29

1.10101011101 29 3B55D000
Bibliografa

[1] A.S.Tanembaum: Structured Computer Organization, Cuarta edici on,


Prentice-Hall, 1999.
[2] D.A.Patterson, J.L.Hennessy: Organizacion de Computadores, Mc.
Graw-Hill, 1995.
[3] D.A.Patterson, J.L.Hennessy: Computer Organization & Design. The
hardware/software interface, Segunda edici
on. Morgan Kaufmann Pu-
blishers, 1998.
[4] Pedro de Miguel Anasagasti: Fundamentos de los Computadores, Pa-
raninfo, Tercera edici
on, 1992.
[5] A.S.Tanembaum: Organizaci on de Computadoras, Segunda Edicion,
Prentice-Hall, 1986.
[6] J.P.Hayes: Computer Architecture and Organization, Segunda Edicion,
Mc. Graw-Hill, 1988.
[7] P.de Miguel, J.M.Angulo: Arquitectura de Computadores, Paraninfo,
1987.
[8] M. Morris Mano: Arquitectura de Computadores, Prentice Hall, 1983.

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.

También podría gustarte