Table Of Contentwww.FreeLibros.me
ARQUITECTURA
DE COMPUTADORAS
DE LOS MICROPROCESADORES
A LAS SUPERCOMPUTADORAS
Behrooz Parhami
University of California, Santa Barbara
Revisión técnica
Alejandro Velázquez Mena
Universidad Nacional Autónoma de México
MÉXICO (cid:127) BOGOTÁ (cid:127) BUENOS AIRES (cid:127) CARACAS (cid:127) GUATEMALA (cid:127) LISBOA (cid:127) MADRID (cid:127) NUEVA YORK
SAN JUAN (cid:127) SANTIAGO (cid:127) AUCKLAND (cid:127) LONDRES (cid:127) MILÁN (cid:127) MONTREAL (cid:127) NUEVA DELHI
SAN FRANCISCO (cid:127) SÃO PAULO (cid:127) SINGAPUR (cid:127) SAN LUIS (cid:127) SIDNEY (cid:127) TORONTO
www.FreeLibros.me
Director Higher Education: Miguel Ángel Toledo Castellanos
Director editorial: Ricardo A. del Bosque Alayón
Editor sponsor: Pablo Eduardo Roig Vázquez
Editora de desarrollo: Ana Laura Delgado Rodríguez
Supervisor de producción: Zeferino García García
Traductor: Víctor Campos Olguín
ARQUITECTURA DE COMPUTADORAS.
De los microprocesadores a las supercomputadoras
Prohibida la reproducción total o parcial de esta obra,
por cualquier medio, sin la autorización escrita del editor.
DERECHOS RESERVADOS © 2007 respecto a la primera edición en español por
McGRAW-HILL/INTERAMERICANA EDITORES, S.A. DE C.V.
A Subsidiary of The McGraw-Hill Companies, Inc.
Edifi cio Punta Santa Fe
Prolongación Paseo de la Reforma 1015, Torre A
Piso 17, Colonia Desarrollo Santa Fe,
Delegación Álvaro Obregón
C.P. 01376, México, D. F.
Miembro de la Cámara Nacional de la Industria Editorial Mexicana, Reg. Núm. 736
ISBN-13: 978-970-10-6146-6
ISBN-10: 970-10-6146-2
Traducido de la primera edición de la obra: Computer Architecture: From Microprocessors To Supercomputers
by Behrooz Parhami.
Copyright © 2005 by Oxford University Press, Inc. All rights reserved.
ISBN-13: 978-0-19-515455-9
ISBN: 0-19-515455-X
1234567890 09865432107
Impreso en México Printed in Mexico
www.FreeLibros.me
UN VISTAZO A LA ESTRUCTURA
Partes Capítulos
1. Circuitos digitales combinacionales
2. Circuitos digitales con memoria
1. Antecedentes y motivación
3. Tecnología de sistemas de computación
4. Rendimiento de computadoras
5. Instrucciones y direccionamiento
6. Procedimientos y datos
2. Arquitectura de conjunto de instrucciones
7. Programas en lenguaje ensamblador
8. Variaciones en el conjunto de instrucciones
9. Representación de números
10. Sumadores y ALU simples
C 3. La unidad aritmética/lógica
11. Multiplicadores y divisores
12. Aritmética de punto fl otante
P
13. Pasos de ejecución de instrucciones
14. Síntesis de unidad de control
U 4. Ruta de datos y control
15. Ruta de datos encauzadas
16. Límites del rendimiento de pipeline
17. Conceptos de memoria principal
18. Organización de memoria caché
5. Diseño de sistemas de memoria
19. Conceptos de memoria masiva
20. Memoria virtual y paginación
21. Dispositivos de entrada/salida
22. Programación de entrada/salida
6. Entrada/salida e interfases
23. Buses, ligas e interfases
24. Conmutación conceptual e interrupciones
25. Hacia un mayor rendimiento
26. Procesamientos vectorial y matricial
7. Arquitecturas avanzadas 27. Multiprocesamiento lento de memoria
compartida
28. Multicomputación distribuida
www.FreeLibros.me
CONTENIDO
Prefacio xv
PARTE UNO • ANTECEDENTES Y MOTIVACIÓN 1
1. Circuitos digitales combinacionales 3
1.1 Señales, operadores lógicos y compuertas 3
1.2 Funciones y expresiones booleanas 7
1.3 Diseño de redes de compuertas 8
1.4 Partes combinacionales útiles 11
1.5 Partes combinacionales programables 13
1.6 Estimaciones de temporización y de circuito 15
Problemas 17
Referencias y lecturas sugeridas 19
2. Circuitos digitales con memoria 21
2.1 Latches, fl ip-fl ops y registros 21
2.2 Máquinas de estado fi nito 24
2.3 Diseño de circuitos secuenciales 25
2.4 Partes secuenciales útiles 28
2.5 Partes secuenciales programables 31
2.6 Relojes y temporización de eventos 32
Problemas 34
Referencias y lecturas sugeridas 37
3. Tecnología de sistemas de computación 38
3.1 De los componentes a las aplicaciones 39
3.2 Sistemas de cómputo y sus partes 41
3.3 Generaciones de progreso 45
3.4 Tecnologías de procesador y memoria 48
3.5 Periféricos, I/O y comunicaciones 51
3.6 Sistemas de software y aplicaciones 54
Problemas 56
Referencias y lecturas sugeridas 58
4. Rendimiento de computadoras 59
4.1 Costo, rendimiento y costo/rendimiento 59
4.2 Defi nición de rendimiento de computadora 62
vii
www.FreeLibros.me
viii Contenido
4.3 Mejora del rendimiento y ley de Amdahl 65
4.4 Medición del rendimiento contra modelado 67
4.5 Informe del rendimiento de computadoras 72
4.6 Búsqueda de mayor rendimiento 74
Problemas 76
Referencias y lecturas sugeridas 80
PARTE DOS • ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES 81
5. Instrucciones y direccionamiento 83
5.1 Visión abstracta del hardware 83
5.2 Formatos de instrucción 86
5.3 Aritmética simple e instrucciones lógicas 89
5.4 Instrucciones load y store 91
5.5 Instrucciones jump y branch 93
5.6 Modos de direccionamiento 97
Problemas 99
Referencias y lecturas sugeridas 102
6. Procedimientos y datos 103
6.1 Llamadas de procedimiento simples 103
6.2 Uso de la pila para almacenamiento de datos 106
6.3 Parámetros y resultados 108
6.4 Tipos de datos 110
6.5 Arreglos y apuntadores 113
6.6 Instrucciones adicionales 116
Problemas 120
Referencias y lecturas sugeridas 122
7. Programas en lenguaje ensamblador 123
7.1 Lenguajes de máquina y ensamblador 123
7.2 Directivas de ensamblador 126
7.3 Seudoinstrucciones 127
7.4 Macroinstrucciones 130
7.5 Ligado y cargado 131
7.6 Corrida de programas ensamblador 133
Problemas 136
Referencias y lecturas sugeridas 138
8. Variaciones en el conjunto de instrucciones 139
8.1 Instrucciones complejas 139
8.2 Modos de direccionamiento alterno 141
8.3 Variaciones en formatos de instrucción 145
www.FreeLibros.me
Contenido ix
8.4 Diseño y evolución del conjunto de instrucciones 147
8.5 La dicotomía RISC/CISC 148
8.6 Dónde dibujar la línea 151
Problemas 154
Referencias y lecturas sugeridas 156
PARTE TRES • LA UNIDAD ARITMÉTICA/LÓGICA 157
9. Representación de números 159
9.1 Sistemas numéricos posicionales 159
9.2 Conjuntos de dígitos y codifi caciones 162
9.3 Conversión de base numérica 165
9.4 Enteros con signo 166
9.5 Números de punto fi jo 169
9.6 Números de punto fl otante 171
Problemas 174
Referencias y lecturas sugeridas 176
10. Sumadores y ALU simples 178
10.1 Sumadores simples 178
10.2 Redes de propagación de acarreo 180
10.3 Conteo e incremento 183
10.4 Diseño de sumadores rápidos 185
10.5 Operaciones lógicas y de corrimiento 188
10.6 ALU multifunción 191
Problemas 193
Referencias y lecturas sugeridas 196
11. Multiplicadores y divisores 197
11.1 Multiplicación corrimiento-suma 197
11.2 Multiplicadores de hardware 201
11.3 Multiplicación programada 204
11.4 División corrimiento-resta 206
11.5 Divisores de hardware 210
11.6 División programada 213
Problemas 215
Referencias y lecturas sugeridas 218
12. Aritmética con punto fl otante 219
12.1 Modos de redondeo 219
12.2 Valores y excepciones especiales 224
12.3 Suma con punto fl otante 226
12.4 Otras operaciones con punto fl otante 229
www.FreeLibros.me
x Contenido
12.5 Instrucciones de punto fl otante 230
12.6 Precisión y errores resultantes 233
Problemas 237
Referencias y lecturas sugeridas 239
PARTE CUATRO • RUTA DE DATOS Y CONTROL 241
13. Pasos de ejecución de instrucciones 243
13.1 Un pequeño conjunto de instrucciones 244
13.2 La unidad de ejecución de instrucciones 246
13.3 Una ruta de datos de ciclo sencillo 247
13.4 Bifurcación y saltos 249
13.5 Derivación de las señales de control 250
13.6 Rendimiento del diseño de ciclo sencillo 253
Problemas 255
Referencias y lecturas sugeridas 257
14. Síntesis de unidad de control 258
14.1 Implementación multiciclo 258
14.2 Ciclo de reloj y señales de control 261
14.3 La máquina de control de estado 264
14.4 Rendimiento del diseño multiciclo 266
14.5 Microprogramación 267
14.6 Excepciones 271
Problemas 273
Referencias y lecturas sugeridas 276
15. Rutas de datos encauzadas 277
15.1 Conceptos de pipelining 277
15.2 Atascos o burbujas encauzadas 281
15.3 Temporización y rendimiento encauzado 284
15.4 Diseño de rutas de datos encauzadas 286
15.5 Control encauzado 289
15.6 Pipelining óptimo 291
Problemas 293
Referencias y lecturas sugeridas 296
16. Límites del rendimiento de pipeline 297
16.1 Dependencias y riesgos de datos 297
16.2 Adelantamiento de datos 300
16.3 Riesgos de la bifurcación pipeline 302
16.4 Predicción de bifurcación 304
16.5 Pipelining avanzado 306
16.6 Excepciones en una pipeline 309
www.FreeLibros.me
Contenido xi
Problemas 310
Referencias y lecturas sugeridas 313
PARTE CINCO • DISEÑO DE SISTEMAS DE MEMORIA 315
17. Conceptos de memoria principal 317
17.1 Estructura de memoria y SRAM 317
17.2 DRAM y ciclos de regeneración 320
17.3 Impactar la pared de memoria 323
17.4 Memorias encauzada e interpolada 325
17.5 Memoria no volátil 327
17.6 Necesidad de una jerarquía de memoria 329
Problemas 331
Referencias y lecturas sugeridas 334
18. Organización de memoria caché 335
18.1 La necesidad de una caché 335
18.2 ¿Qué hace funcionar a una caché? 338
18.3 Caché de mapeo directo 341
18.4 Caché de conjunto asociativo 342
18.5 Memoria caché y principal 345
18.6 Mejoramiento del rendimiento caché 346
Problemas 348
Referencias y lecturas sugeridas 352
19. Conceptos de memoria masiva 353
19.1 Fundamentos de memoria de disco 354
19.2 Organización de datos en disco 356
19.3 Rendimiento de disco 359
19.4 Caching de disco 360
19.5 Arreglos de discos y RAID 361
19.6 Otros tipos de memoria masiva 365
Problemas 367
Referencias y lecturas sugeridas 370
20. Memoria virtual y paginación 371
20.1 Necesidad de la memoria virtual 371
20.2 Traducción de dirección en memoria virtual 373
20.3 Translation lookaside buffer 376
20.4 Políticas de sustitución de página 379
20.5 Memorias principal y masiva 382
20.6 Mejora del rendimiento de la memoria virtual 383
www.FreeLibros.me
xii Contenido
Problemas 386
Referencias y lecturas sugeridas 389
PARTE SEIS • ENTRADA/SALIDA E INTERFASES 391
21. Dispositivos de entrada/salida 393
21.1 Dispositivos y controladores de entrada/salida 393
21.2 Teclado y ratón 395
21.3 Unidades de presentación visual 397
21.4 Dispositivos de entrada/salida de copia impresa 400
21.5 Otros dispositivos de entrada/salida 404
21.6 Redes de dispositivos de entrada/salida 406
Problemas 408
Referencias y lecturas sugeridas 410
22. Programación de entrada/salida 411
22.1 Rendimiento I/O y benchmarks 411
22.2 Direccionamiento entrada/salida 413
22.3 I/O calendarizado: sondeo 416
22.4 I/O con base en petición: interrupciones 417
22.5 Transferencia de datos I/O y DMA 418
22.6 Mejora del rendimiento I/O 421
Problemas 425
Referencias y lecturas sugeridas 428
23. Buses, ligas e interfases 429
23.1 Ligas intra e intersistema 429
23.2 Buses y su presentación 433
23.3 Protocolos de comunicación de bus 435
23.4 Arbitraje y rendimiento de bus 438
23.5 Fundamentos de interfases 440
23.6 Estándares en la creación de interfases 441
Problemas 445
Referencias y lecturas sugeridas 448
24. Conmutación contextual e interrupciones 449
24.1 Peticiones al sistema por I/O 449
24.2 Interrupciones, excepciones y trampas 451
24.3 Manejo de interrupciones simples 453
24.4 Interrupciones anidadas 456
24.5 Tipos de conmutación contextual 458
24.6 Hilos y multihilos 460
Problemas 462
Referencias y lecturas sugeridas 464
www.FreeLibros.me
Description:Traducido de la primera edición de la obra: Computer Architecture: From Microprocessors To Supercomputers by Behrooz .. rentes, dependiendo de si produce una salida 0 o 1 para cada una de las cuatro posibles combinaciones de valores de Nick Donofrio, 2001 Turing Memorial Lecture.