Recursos del Libro
Tabla de contenido


Capitulo 1 INTRODUCCIÓN 1

 

1.1 Organización estructurada de computadoras  2

1.1.1 Lenguajes, niveles y máquinas virtuales  2

1.1.2 Máquinas multinivel contemporáneas  4

1.1.3 Evolución de las máquinas multinivel  8

 

1.2 Acontecimientos importantes en arquitectura de computadoras  13

1.2.1 La generación cero - computadoras mecánicas (1642-1945)  13

1.2.2 La primera generación - bulbos (1945-1955)  16

1.2.3 La segunda generación - transistores (1955-1965)  19

1.2.4 La tercera generación - circuitos integrados (1965-1980)  21

1.2.5 La cuarta generación - integración a muy grande escala (1980-?)  23

 

1.3 El zoológico de las computadoras  24

1.3.1 Fuerzas tecnológicas y económicas  25

1.3.2 La gama de las computadoras  26

 

1.4 Ejemplos de familias de computadoras  29

1.4.1 Introducción al Pentium II  29

1.4.2 Introducción al UltraSPARC II  31

1.4.3 Introducción al picoJava II  34

1.5Bosquejo del libro  36

 

Capítulo 2 Organización de los sistemas de computadora 39

 

2.1 Procesadores  39

2.1.1 Organización de la CPU  40

2.1.2 Ejecución de instrucciones  42

2.1.3 RISC versus CISC  46

2.1.4 Principios de diseño de las computadoras modernas  47

2.1.5 Paralelismo en el nivel de instrucciones  49

2.1.6 Paralelismo en el nivel de procesador  53

 

2.2 Memoria primaria  56

2.2.1 Bits  56

2.2.2 Direcciones de memoria  57

2.2.3 Ordenamiento de bytes  58

2.2.4 Códigos para corrección de errores  61

2.2.5 Memoria caché  65

2.2.6 Empaquetamiento y tipos de memoria  67

 

2.3 Memoria secundaria  68     

2.3.1 Jerarquías de memoria  69

2.3.2 Discos magnéticos  70

2.3.3 Discos flexibles  73

2.3.4 Discos IDE  73

2.3.5 Discos SCSI  75

2.3.6 RAID  76

2.3.7 CD-ROM  80

2.3.8 CD grabables  84

2.3.9 CD reescribibles  86

2.3.10 DVD  86

 

2.4 Entrada/salida  89

2.4.1 Buses  89

2.4.2 Terminales  91

2.4.3 Ratones  99

2.4.4 Impresoras  101

2.4.5 Módems  106

2.4.6 Códigos de caracteres  109

 

2.5 Resumen  113

 

Capítulo 3 El nivel de lógica digital 117

 

3.1 Compuertas y álgebra booleana  117

3.1.1 Compuertas  118

3.1.2 Álgebra booleana  120

3.1.3 Implementación de funciones booleanas  122

3.1.4 Equivalencia de circuitos  123

3.2Circuitos lógicos digitales básicos  128

3.2.1 Circuitos integrados  128

3.2.2 Circuitos combinacionales  129

3.2.3 Circuitos aritméticos  134

3.2.4 Relojes  139

 

3.3 Memoria  141

3.3.1 Latches  141

3.3.2 Flip-flops  143

3.3.3 Registros  145

3.3.4 Organización de la memoria  146

3.3.5 Chips de memoria  150

3.3.6 Las memorias RAM y las ROM  152

 

3.4 Chips de cpu y buses  154

3.4.1 Chips de CPU  154

3.4.2 Buses de computadora  156

3.4.3 Ancho de bus  159

3.4.4 Temporización del bus  160

3.4.5 Arbitraje del bus  165

3.4.6 Operaciones de bus  167

 

3.5 Ejemplos de chips de cpu  170

3.5.1 El Pentium II  170

3.5.2 El UltraSPARC II  176

3.5.3 El picoJava II  179

 

3.6 Ejemplos de buses  181

3.6.1 El bus ISA  181

3.6.2 El bus PCI  183

3.6.3 El bus serial universal  189

 

3.7 Interfaces  193

3.7.1 Chips de E/S  193

3.7.2 Decodificación de direcciones  195

 

3.8 Resumen  198

 

Capítulo 4 El nivel de microarquitectura 203

 

4.1 Un ejemplo de microarquitectura  203

4.1.1 La trayectoria de datos  204

4.1.2 Microinstrucciones  211

4.1.3 Control de microinstrucciones: el Mic-1  213

 

4.2 Un ejemplo de ISA: IJVM  218

4.2.1 Pilas  218

4.2.2 El modelo de memoria IJVM  220

4.2.3 El conjunto de instrucciones IJVM  222

4.2.4 Compilación de Java a IJVM  226

 

4.3 Un ejemplo de implementación  227

4.3.1 Microinstrucciones y notación  227

4.3.2 Implementación de IJVM utilizando el Mic-1  232

 

4.4 Diseño del nivel de microarquitectura  243

4.4.1 Rapidez versus costo  243

4.4.2 Reducción de la longitud de la trayectoria de ejecución  245

4.4.3 Un diseño con prebúsqueda: el Mic-2  253

4.4.4 Un diseño con filas de procesamiento: el Mic-3  253

4.4.5 Una fila de procesamiento de siete etapas: el Mic-4  260

 

4.5 Mejoramiento del desempeño  264

4.5.1 Memoria caché  265

4.5.2 Predicción de ramificaciones  270

4.5.3 Ejecución fuera de orden y cambio de nombres de registros  276

4.5.4 Ejecución especulativa  281

 

4.6 Ejemplos del nivel de microarquitectura  283

4.6.1 La microarquitectura de la CPU Pentium II  283

4.6.2 La microarquitectura de la CPU UltraSPARC II  288

4.6.3 La microarquitectura de la CPU picoJava II  291

4.6.4 Comparación del Pentium, UltraSPARC y picoJava  296

 

4.7 Resumen  298

 

Capítulo 5 El nivel de arquitectura del conjunto de instrucciones 303

 

5.1 Generalidades del nivel ISA  305

5.1.1 Propiedades del nivel ISA  305

5.1.2 Modelos de memoria  307

5.1.3 Registros  309

5.1.4 Instrucciones  311

5.1.5 Generalidades del nivel ISA del Pentium II  311

5.1.6 Generalidades del nivel ISA del UltraSPARC II  313

5.1.7 Generalidades del nivel ISA de la Máquina Virtual Java  317

 

5.2 Tipos de datos  318

5.2.1 Tipos de datos numéricos  319

5.2.2 Tipos de datos no numéricos  319

5.2.3 Tipos de datos en el Pentium II  320

5.3.4 Tipos de datos en el UltraSPARC II  321

5.2.5 Tipos de datos en la Máquina Virtual Java  321

 

5.3 Formatos de instrucciones  322

5.3.1 Criterios de diseño para los formatos de instrucciones  322

5.3.2 Expansión de códigos de operación  325

5.3.3 Los formatos de instrucciones del Pentium II  327

5.3.4 Los formatos de instrucciones del UltraSPARC II  328

5.3.5 Los formatos de instrucciones de la JVM  330

 

5.4 Direccionamiento  332

5.4.1 Modos de direccionamiento  333

5.4.2 Direccionamiento inmediato  334

5.4.3 Direccionamiento directo  334

5.4.4 Direccionamiento por registro  334

5.4.5 Direccionamiento indirecto por registro  335

5.4.6 Direccionamiento indexado  336

5.4.7 Direccionamiento basado indexado  338

5.4.8 Direccionamiento de pila  338

5.4.9 Modos de direccionamiento para instrucciones de ramificación  341

5.4.10 Ortogonalidad de códigos de operación y modos de direccionamiento  342

5.4.11 Modos de direccionamiento del Pentium II  344

5.4.12 Modos de direccionamiento del UltraSPARC II  346

5.4.13 Modos de direccionamiento de la JVM  346

5.4.14 Análisis de los modos de direccionamiento  347

 

5.5 Tipos de instrucciones  348

5.5.1 Instrucciones de movimiento de datos  348

5.5.2 Operaciones diádicas  349

5.5.3 Operaciones monádicas  350

5.5.4 Comparaciones y ramificaciones condicionales  352

5.5.5 Instrucciones de llamada a procedimientos  353

5.5.6 Control de ciclos  354

5.5.7 Entrada/Salida  356

5.5.8 Las instrucciones del Pentium II  359

5.5.9 Las instrucciones del UltraSPARC II  362

5.5.10 Las instrucciones del picoJava II  364

5.5.11 Comparación de conjuntos de instrucciones  369

 

5.6 Flujo de control  370

5.6.1 Flujo de control secuencial y ramificaciones  371

5.6.2 Procedimientos  372

5.6.3 Corrutinas  376

5.6.4 Trampas  379

5.6.5 Interrupciones  379

 

5.7 Un ejemplo detallado: las torres de Hanoi  383

5.7.1 Las Torres de Hanoi en lenguaje ensamblador del Pentium II  384

5.7.2 Las Torres de Hanoi en lenguaje ensamblador del UltraSPARC II  384

5.7.3 Las Torres de Hanoi en lenguaje ensamblador de la JVM  386

 

5.8 El IA-64 de INTEL  388

5.8.1 El problema del Pentium II  390

5.8.2 El modelo IA-64: Computación con instrucciones explícitamente

paralelas  391

5.8.3 Predicación  393

5.8.4 Cargas especulativas  395

5.8.5 Los pies en la tierra  396

 

5.9 Resumen  397

 

Capítulo 6 El nivel de máquina de sistema operativo 403

 

6.1 Memoria virtual  404

6.1.1 Paginación  405

6.1.2 Implementación de la paginación  407

6.1.3 Paginación por demanda y modelo de conjunto de trabajo  409

6.1.4 Política de reemplazo de páginas  412

6.1.5 Tamaño de página y fragmentación  414

6.1.6 Segmentación  415

6.1.7 Implementación de la segmentación  418

6.1.8 Memoria virtual en el Pentium II  421

6.1.9 Memoria virtual en el UltraSPARC II  426

6.1.10 Memoria virtual y uso de cachés  428

 

6.2 Instrucciones de e/s virtuales  429

6.2.1 Archivos  430

6.2.2 Implementación de instrucciones de E/S virtuales  431

6.2.3 Instrucciones para gestión de directorios  435

 

6.3 Instrucciones virtuales para procesamiento en paralelo  436

6.3.1 Creación de procesos  437

6.3.2 Condiciones de competencia  438

6.3.3 Sincronización de procesos con semáforos  442

 

6.4 Ejemplos de sistemas operativos  446

6.4.1 Introducción  446

6.4.2 Ejemplos de memoria virtual  455

6.4.3 Ejemplos de E/S virtual  459

6.4.4 Ejemplos de gestión de procesos  470

 

6.5 Resumen  476

 

Capítulo 7 El nivel de lenguaje ensamblador 483

 

7.1 Introducción al lenguaje ensamblador  484

7.1.1 ¿Qué es un lenguaje ensamblador?  484

7.1.2 ¿Por qué usar lenguaje ensamblador?  485

7.1.3 Formato de un enunciado en lenguaje ensamblador  488

7.1.4 Seudoinstrucciones  491

 

7.2 Macros  494

7.2.1 Definición, llamada y expansión de macros  494

7.2.2 Macros con parámetros  496

7.2.3 Características avanzadas  497

7.2.4 Implementación de un recurso de macros en un ensamblador  498

 

7.3 El proceso de ensamblado  498

7.3.1 Ensambladores de dos pasadas  498

7.3.2 Primera pasada  499

7.3.3 Segunda pasada  502

7.3.4 La tabla de símbolos  505

 

7.4 Enlazado y carga  506

7.4.1 Tareas que realiza el enlazador  508

7.4.2 Estructura de un módulo objeto  511

7.4.3 Tiempo de ligado y reubicación dinámica  512

7.4.4 Enlazado dinámico  515

 

7.5 Resumen  519

 

Capítulo 8 Arquitecturas de computadoras paralelas 523

 

8.1 Aspectos del diseño de computadoras paralelas  524

8.1.1 Modelos de comunicación  526

8.1.2 Redes de interconexión  530

8.1.3 Desempeño  539

8.1.4 Software  545

8.1.5 Taxonomía de computadoras paralelas  551

 

8.2 Computadoras SIMD  554

8.2.1 Arreglos de procesadores  554

8.2.2 Procesadores vectoriales  555

 

8.3 Multiprocesadores con memoria compartida  559

8.3.1 Semántica de la memoria  559

8.3.2 Arquitecturas SMP basadas en el bus UMA  564

8.3.3 Multiprocesadores UMA que usan conmutadores de barras cruzadas  569

8.3.4 Multiprocesadores UMA que usan redes de conmutación multietapas  571

8.3.5 Multiprocesadores NUMA  573

8.3.6 Multiprocesadores NUMA con coherencia de caché  575

8.3.7 Multiprocesadores COMA  585

 

8.4 Multicomputadoras de transferencia de mensajes  586

8.4.1 Procesadores masivamente paralelos (MPP)  587

8.4.2 Cúmulos de estaciones de trabajo (COW)  592

8.4.3 Planificación  593

8.4.4 Software de comunicación para multicomputadoras  598

8.4.5 Memoria compartida en el nivel de aplicaciones  601

 

8.5 Resumen  609

 

Capítulo 9 Lista de lecturas y bibliografía 613

 

9.1 Sugerencias para lecturas adicionales  613

9.1.1 Introducción y obras generales  613

9.1.2 Organización de sistemas de cómputo  614

9.1.3 El nivel de lógica digital  615

9.1.4 El nivel de microarquitectura  616

9.1.5 El nivel de arquitectura del conjunto de instrucciones  617

9.1.6 El nivel de máquina del sistema operativo  617

9.1.7 El nivel de lenguaje ensamblador  618

9.1.8 Arquitecturas de computadoras paralelas  618

9.1.9 Números binarios y de punto flotante  620

 

9.2 Bibliografía en orden alfabético  620

 

 

Apéndice A números binarios 631

A.1 Números de precisión finita  631

A.2 Sistemas numéricos con base  633

A.3 Conversión de una base a otra  635

A.4 Números binarios negativos  637

A.5 Aritmética binaria  640

 

 

Apéndice B Números de punto flotante 643

B.1 Principios de punto flotante  644

B.2 Estándar de punto flotante ieee 754  646

 

 

Índice 653

 


© 2000-2001 by Prentice-Hall, Inc.
A Pearson Company
Distance Learning at Prentice Hall
Legal Notice