estructura y diseño de computadores l a i n t e r f a z s o f t w a r e / h a r d w a r e

Upload: mariomarugan

Post on 06-Feb-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    1/65

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    2/65

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    3/65

    Estructura y diseo de computadoresL A I N T E R F A Z S O F T W A R E / H A R D W A R E

    T R A D U C C I N D E L A C U A R T A E D I C I N E N L E N G U A I N G L E S A

    David A. Patterson

    University of California, Berkeley

    John L. Hennessy

    Stanford University

    Con contribuciones de

    Perry Alexander David Kaeli Kevin Lim

    The University of Kansas Northeastern University Hewlett-Packard

    Peter J. Ashenden Nicole Kaiyan John Nickolls

    Ashenden Designs Pty Ltd University of Adelaide NVIDIA

    Javier Bruguera David Kirk John Oliver

    Universidade de Santiago de Compostela NVIDIA Cal Poly, San Luis Obispo

    Jichuan Chang James R. Larus Milos Prvulovic

    Hewlett-Packard Microsoft Research Georgia Tech

    Matthew Farrens Jacob Leverich Partha Ranganathan

    University of California, Davis Hewlett-Packard Hewlett-Packard

    Barcelona - Bogot - Buenos Aires - Caracas - Mxico

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    4/65

    Ttulo de la obra original:Computer Organization and Design. The Hardware / Software Interface. Fourth Edition

    Edicin original en lengua inglesa publicada por:

    ELSEVIER INC of 200 Wheeler Road, 6thfloor, Burlington, MA 01803, USA

    Copyright 2009 by Elsevier Inc.All Rights Reserved

    Edicin en espaol:

    Editorial Revert, S. A., 2011ISBN: 978-84-291-2620-4

    Versin espaola por:

    Prof. Dr. Javier Daz BrugueraCatedrtico de Universidad en el rea de arquitectura y tecnologa de computadoresUniversidad de Santiago de Compostela

    Maquetacin: REVERT-AGUILAR,SL

    Propiedad de:EDITORIAL REVERT, S. A.Loreto, 13-15, Local B08029 Barcelona EspaaTel: (34) 93 419 33 36Fax: (34) 93 419 51 [email protected]

    Reservados todos los derechos. La reproduccin total o parcial de esta obra, por cualquier medio o procedimiento, comprendidos la reprografa y el tratamientoinformtico, queda rigurosamente prohibida, salvo excepcin prevista en la ley. Asimismo queda prohibida la distribucin de ejemplares mediante alquiler o prstamopblicos, la comunicacin pblica y la transformacin de cualquier parte de esta publicacin (incluido el diseo de la cubierta) sin la previa autorizacin de los titularesde la propiedad intelectual y de la Editorial. La infraccin de los derechos mencionados puede ser constitutiva de delito contra la propiedad intelectual (arts. 270 ysiguientes del Cdigo Penal). El Centro Espaol de Derechos Reprogrficos (CEDRO) vela por el respeto a los citados derechos.

    Impreso en Espaa -Printed in Spain

    Depsito Legal: B-15281-2011

    Impreso por Liberdplex, S.L.U.Sant Lloren dHortons (Barcelona)

    Registro bibliogrfico (ISBD)

    PATTERSON,DAVID A.[Computer Organization and Design. Espaol]

    Estructura y diseo de computadores / David A. Patterson, John L. Hennessy; versin espaola por: Dr. Javier DazBruguera. Barcelona : Revert. D.L. 2011XXV, 703 p., [184] p. : il. col. ; 24 cmEd. orig.: Computer organization and design: the hardware/software interface. 4. ed. Burlington: Elsevier Inc., cop.

    2007. ndice.DL B-15281-2011. ISBN 978-84-291-2620-4

    1. Estructura y diseo de computadores. I. Hennessy, John L., coaut. II. Daz Bruguera, Javier, trad. III. Ttulo.

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    5/65

    Contenido

    Prefacio xiii

    C A P T U L O S

    Abstracciones y tecnologa de los computadores 2

    1.1 Introduccin 3

    1.2 Bajo los programas 10

    1.3 Bajo la cubierta 13

    1.4 Prestaciones 26

    1.5 El muro de la potencia 39

    1.6 El gran cambio: el paso de monoprocesadores a

    multiprocesadores 411.7 Casos reales: fabricacin y evaluacin del AMD Opteron x4 44

    1.8 Falacias y errores habituales 51

    1.9 Conclusiones finales 54

    1.10 Perspectiva histrica y lecturas recomendadas 55

    1.11 Ejercicios 56

    Instrucciones: el lenguaje del computador 742.1 Introduccin 76

    2.2 Operaciones del hardware del computador 77

    2.3 Operandos del hardware del computador 80

    2.4 Nmeros con signo y sin signo 87

    2.5 Representacin de instrucciones en el computador 94

    2.6 Operaciones lgicas 102

    2.7 Instrucciones para la toma de decisiones 105

    2.8 Apoyo a los procedimientos en el hardware del computador 112

    2.9 Comunicarse con la gente 122

    2.10 Direcciones y direccionamiento inmediato MIPS para 32 bits 128

    2.11 Paralelismo e instrucciones: sincronizacin 137

    2.12 Traduccin e inicio de un programa 139

    2.13 Un ejemplo de ordenamiento en C para verlo todo junto 149

    Nota importante:En la presente edicin en castellano, los contenidos del CD incluidos en la edicin originalson accesibles (en lengua inglesa) a travs de la pgina web www.reverte.com/microsites/pattersonhennessy.

    Aunque en la presente edicin no se proporciona un CD-ROM fsico, a lo largo de todo el texto se menciona

    el CD y se utiliza el icono que lo representa para hacer referencia a su contenido.

    1

    2

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    6/65

    viii Contenido

    2.14 Tablas frente a punteros 157

    2.15 Perspectiva histrica y lecturas recomendadas 161

    2.16 Caso real: instrucciones ARM 1612.17 Casos reales: instrucciones x86 165

    2.18 Falacias y errores habituales 174

    2.19 Conclusiones finales 176

    2.20 Perspectiva histrica y lecturas recomendadas 179

    2.21 Ejercicios 179

    Aritmtica para computadores 222

    3.1 Introduccin 224

    3.2 Suma y resta 224

    3.3 Multiplicacin 230

    3.4 Divisin 236

    3.5 Punto flotante 242

    3.6 Paralelismo y aritmtica del computador: asociatividad 270

    3.7 Caso real: punto flotante en el x86 272

    3.8 Falacias y errores habituales 2753.9 Conclusiones finales 280

    3.10 Perspectiva histrica y lecturas recomendadas 283

    3.11 Ejercicios 283

    El procesador 298

    4.1 Introduccin 300

    4.2 Convenios de diseo lgico 303

    4.3 Construccin de un camino de datos 307

    4.4 Esquema de una implementacin simple 316

    4.5 Descripcin general de la segmentacin 330

    4.6 Camino de datos segmentados y control de la segmentacin 344

    4.7 Riesgos de datos: anticipacin frente a bloqueos 363

    4.8 Riesgos de control 375

    4.9 Excepciones 384

    4.10 Paralelismo y paralelismo a nivel de instrucciones

    avanzado 391

    4.11 Casos reales: El pipeline del AMD Opteron X4

    (Barcelona) 404

    4.12 Tema avanzado: una introduccin al diseo digital utilizando un

    lenguaje de descripcin hardware para describir y modelar un pipeline

    y ms figuras sobre segmentacin 406

    4.13 Falacias y errores habituales 407

    4.14 Conclusiones finales 4084.15 Perspectiva histrica y lecturas recomendadas 409

    4.16 Ejercicios 409

    3

    4

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    7/65

    Contenido ix

    Grande y rpida: aprovechamiento de la jerarquade memoria 450

    5.1 Introduccin 452

    5.2 Principios bsicos de las caches 457

    5.3 Evaluacin y mejora de las prestaciones de la cache 457

    5.4 Memoria virtual 492

    5.5 Un marco comn para las jerarquas de memoria 518

    5.6 Mquinas virtuales 525

    5.7 Utilizacin de una mquina de estados finitos para el control de una

    cache sencilla 5295.8 Paralelismo y jerarquas de memoria: coherencia de cache 534

    5.9 Material avanzado: implementacin de controladores de cache 538

    5.10 Casos reales: las jerarquas de memoria del AMD Opteron X4

    (Barcelona) y del Intel Nehalem 539

    5.11 Falacias y errores habituales 543

    5.12 Conclusiones finales 547

    5.13 Perspectiva histrica y lecturas recomendadas 548

    5.14 Ejercicios 548

    Almacenamiento y otros aspectos de la E/S 568

    6.1 Introduccin 570

    6.2 Confiabilidad, fiabilidad y disponibilidad 573

    6.3 Almacenamiento en disco 575

    6.4 Almacenamiento Flash 580

    6.5 Conexin entre procesadores, memoria y dispositivos de E/S 5826.6 Interfaz de los dispositivos de E/S al procesador, memoria y sistema

    operativo 586

    6.7 Medidas de las prestaciones de la E/S: ejemplos de discos y sistema de

    ficheros 596

    6.8 Diseo de un sistema de E/S 598

    6.9 Paralelismo y E/S: conjuntos redundantes de discos econmicos 599

    6.10 Casos reales: servidor Sun Fire x4150 6066.11 Aspectos avanzados: redes 612

    6.12 Falacias y errores habituales 613

    6.13 Conclusiones finales 617

    6.14 Perspectiva histrica y lecturas recomendadas 618

    6.15 Ejercicios 619

    Multincleos, multiprocesadores y clsteres 630

    7.1 Introduccin 632

    7.2 La dificultad de crear programas de procesamiento paralelo 634

    7.3 Multiprocesadores de memoria compartida 638

    7.4 Clsteres y otros multiprocesadores de paso de mensajes 641

    5

    6

    7

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    8/65

    x Contenido

    7.5 Ejecucin multihilo en hardware 645

    7.6 SISD, MIMD, SIMD, SPMD y procesamiento vectorial 648

    7.7 Introduccin a las unidades de procesamiento grfico 6547.8 Introduccin a las topologas de redes para multiprocesadores 660

    7.9 Programas de prueba para multiprocesadores 664

    7.10 Roofline: un modelo de prestaciones sencillo 667

    7.11 Casos reales: evaluacin de cuatro multincleos con el modelo

    Roofline 675

    7.12 Falacias y errores habituales 684

    7.13 Conclusiones finales 686

    7.14 Perspectiva histrica y lecturas recomendadas 6887.15 Ejercicios 688

    A P N D I C E S

    GPUs para grficos y clculo A-2

    A.1 Introduccin A-3A.2 Arquitecturas del sistema de la GPU A-7

    A.3 Programacin de las GPU A-12

    A.4 Arquitectura multiprocesador con ejecucin multihilo A-25

    A.5 Sistema de memoria paralelo A-36

    A.6 Aritmtica punto flotante A-41

    A.7 Casos reales: NVIDIA GeForce 8800 A-46

    A.8 Casos reales: Implementacin de aplicaciones en la GPU A-55

    A.9 Falacias y errores habituales A-72A.10 Conclusiones finales A-76

    A.11 Perspectiva histrica y lecturas recomendadas A-77

    Ensambladores, enlazadores y el simulador SPIM B-2

    B.1 Introduccin B-3

    B.2 Ensambladores B-10

    B.3 Enlazadores B-18B.4 Cargador B-19

    B.5 Utilizacin de la memoria B-20

    B.6 Convenio de llamada a procedimiento B-22

    B.7 Excepciones e interrupciones B-33

    B.8 Entrada y salida B-38

    B.9 SPIM B-40B.10 Lenguaje ensamblador MIPS R2000 B-45

    B.11 Conclusiones finales B-81

    B.12 Ejercicios B-82

    ndice I-1

    A

    B

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    9/65

    Contenido xi

    C O N T E N I D O S E N E L C D *

    Conceptos clsicos de diseo lgico C-2

    C.1 Introduccin C-3

    C.2 Puertas, tablas de verdad y ecuaciones lgicas C-4

    C.3 Lgica combinacional C-9

    C.4 Lenguajes de descripcin hardware C-20

    C.5 Una unidad aritmtico-lgica bsica C-26

    C.6 Sumas ms rpidas: acarreo adelantado C-38C.7 Relojes C-48

    C.8 Elementos de memoria: biestables, cerrojos y registros C-50

    C.9 Elementos de memoria: SRAM y DRAM C-58

    C.10 Mquinas de estados finitos C-67

    C.11 Metodologas de temporizacin C-72

    C.12 Dispositivos programables por campos C-78

    C.13 Conclusiones finales C-79

    C.14 Ejercicios C-80

    Implementacin del control en hardware D-2

    D.1 Introduccin D-3

    D.2 Implementacin de unidades de control combinacionales D-4

    D.3 Implementacin de un control basado en mquinas de estados

    finitos D-8

    D.4 Implementacin de la funcin Estado-siguiente con un

    secuenciador D-22D.5 Traduccin de un microprograma a hardware D-28

    D.6 Conclusiones finales D-32

    D.7 Ejercicios D-33

    Estudio de arquitecturas RISC para ordenadoresde sobremesa, servidores y sistemasempotrados E-2

    E.1 Introduccin E-3

    E.2 Modos de direccionamiento y formatos de instrucciones E-5

    E.3 Instrucciones: El subconjunto del ncleo MIPS E-9

    E.4 Instrucciones: Extensiones multimedia de los servidores y ordenadores

    de sobremesa RISC E-16

    *Nota importante:En la presente edicin en castellano, los contenidos del CD incluido en la edicin origi-

    nal (en ingls) son accesibles a travs de la pgina web www.reverte.com/microsites/pattersonhennessy. Aun-

    que en la presente edicin no se proporciona un CD-ROM fsico, a lo largo de todo el texto se menciona el

    CD y se utiliza el icono que lo representa para hacer referencia a su contenido.

    C

    D

    E

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    10/65

    xii Contenido

    E.5 Instrucciones: Extensiones para procesado digital de seales

    de sistemas RISC empotrados E-19

    E.6 Instrucciones: Extensiones habituales del ncleo MIPS E-20E.7 Instrucciones especficas del MIPS-64 E-25

    E.8 Instrucciones especficas del Alpha E-27

    E.9 Instrucciones especficas del Sparc v.9 E-29

    E.10 Instrucciones especficas del PowerPC E-32

    E.11 Instrucciones especficas del PA-RISC 2.0 E-34

    E.12 Instrucciones especficas del ARM E-36

    E.13 Instrucciones especficas del Thumb E-38

    E.14 Instrucciones especficas del SuperH E-39E.15 Instrucciones especficas del M32R E-40

    E.16 Instrucciones especficas del MIPS-16 E-40

    E.17 Conclusiones finales E-43

    Glosario G-1

    Lecturas recomendadas FR-1

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    11/65

    Prefacio

    Lo ms bello que podemos experimentar es el misterio.

    Es la fuente de todo el arte verdadero y la ciencia.

    Albert Einstein, What I Believe, 1930

    Sobre este libro

    Creemos que la enseanza de la ciencia e ingeniera de computadores debera refle-jar el estado actual de este campo, as como introducir los principios que dan formaa la computacin. Tambin opinamos que los lectores de cualquier especialidad dela computacin necesitan conocer los paradigmas de organizacin que determinan

    las capacidades, prestaciones y, en definitiva, el xito de los sistemas informticos.La tecnologa de los computadores moderna necesita que los profesionales detodas las especialidades de la informtica conozcan el hardware y el software. Lainteraccin entre estos dos aspectos a diferentes niveles ofrece, al mismo tiempo,un entorno para la compresin de los fundamentos de la computacin. Indepen-dientemente de que su inters principal sea el hardware o el software, la inform-tica o la electrnica, las ideas centrales de la estructura y el diseo del computadorson las mismas. Por lo tanto, hemos centrado este libro en mostrar la relacinentre el hardware y el software y en los conceptos bsicos de los computadoresactuales.

    El paso reciente de los monoprocesadores a los microprocesadores multincleoha confirmado la solidez de esta perspectiva, establecida ya en la primera edicin.El tiempo en el que los programadores podan ignorar este aviso y confiar en losarquitectos de ordenadores, diseadores de compiladores e ingenieros electrni-cos para que sus programas se ejecutasen cada vez ms rpido sin introducir cam-bio alguno, ha pasado. Para que los programas se ejecuten ms rpido debeintroducirse paralelismo. El objetivo de muchos investigadores de introducir elparalelismo sin que los programadores tengan que preocuparse de la naturalezaparalela del hardware que estn programando, todava tardar muchos aos enhacerse realidad. Segn nuestra visin, durante al menos la prxima dcada, lamayora de los programadores van a necesitar conocer la interfaz entre el hard-ware y el software para que sus programas se ejecuten eficientemente en los com-putadores paralelos.

    La audiencia de este libro incluye tanto a aquellos que, con poca experiencia enlenguaje ensamblador o diseo lgico, necesitan entender la organizacin bsica

    de un computador, como a los que, con conocimientos de lenguaje ensambladory/o diseo lgico, quieren aprender como se disea un ordenador o entendercomo trabaja un sistema y por qu se comporta como lo hace.

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    12/65

    xiv Prefacio

    Sobre el otro libro

    Algunos lectores seguramente estn familiarizados con el libro Arquitectura de

    Computadores: un Enfoque Cuantitativo, conocido popularmente como Hennessyy Patterson. (Este libro, por el contrario, a menudo se llama Patterson y Hen-nessy). Nuestra motivacin al escribir ese libro era describir los principios de laarquitectura de computadores haciendo uso de fundamentos slidos de ingeniera

    y compromisos coste/prestaciones cuantitativos. Utilizamos un enfoque que com-binaba ejemplos y medidas, basados en sistemas comerciales, para crear experien-cias de diseo realistas. Nuestro objetivo fue demostrar que la arquitectura de loscomputadores se poda aprender con una metodologa cuantitativa en lugar de un

    enfoque descriptivo. El libro estaba dirigido a los profesionales de la informticaque queran adquirir un conocimiento detallado de los computadores.

    La mayora de los lectores de este libro no tienen previsto convertirse en arqui-tectos de computadores. Sin embargo, las prestaciones y la eficiencia energtica delos sistemas software, en el futuro, dependern drsticamente de la adecuada com-prensin de las tcnicas bsicas del hardware por parte de los diseadores de soft-ware. De este modo, los diseadores de compiladores, los diseadores de sistemasoperativos, programadores de bases de datos y la mayor parte de los ingenieros del

    software necesitan un conocimiento firme de los principios presentados en estelibro. De manera similar, los diseadores del hardware deben comprender clara-mente los efectos de su trabajo sobre las aplicaciones software.

    Por lo tanto, sabamos que este libro tena que ser mucho ms que un subcon-junto del material incluido en el libroArquitectura de Computadores, y el materialse revis ampliamente para adecuarse a una audiencia diferente. Quedamos tansatisfechos del resultado que se revisaron las siguientes ediciones deArquitecturade Computadorespara eliminar la mayor parte del material de introduccin; as,

    hay mucho menos solape entre los dos libros ahora que en las primeras ediciones.

    Cambios en la cuarta edicin

    Tenamos cinco objetivos principales para la cuarta edicin de Estructura y diseode computadores: dada la revolucin multincleo de los microprocesadores, resal-tar los aspectos paralelos del hardware y el software a lo largo del libro; racionali-zar el material existente para hacer hueco a los aspectos relacionados con elparalelismo; mejorar la pedagoga en general; actualizar el contenido tcnico parareflejar los cambios producidos en la industria desde la publicacin de la terceraedicin en 2004; restablecer la utilidad de los ejercicios en la era de internet.

    Antes de discutir estos objetivos con ms detalle, echemos un vistazo a la tabla de lapgina siguiente. Muestra los caminos del hardware y el software a lo largo del libro. Loscaptulos 1, 4, 5 y 7 estn en ambos caminos, sin importar la experiencia o el enfoque.El captulo 1 es un introduccin nueva que incluye una discusin sobre la importanciade la potencia y como ha alentado el paso de los sistemas con un ncleo a los micropro-cesadores multincleo. Incluye tambin material sobre prestaciones y evaluacin

    mediante programas de prueba, material que en la tercera edicin estaba incluido en uncaptulo aparte. El captulo 2 es ms probable que est orientado hacia el hardware,pero es una lectura esencial para los lectores orientados al software, especialmente para

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    13/65

    Prefacio xv

    Captulo o apndice Secciones Enfoque software Enfoque hardware

    1. Abstracciones y tecnologa

    de los computadores

    1.1 a 1.9

    1.10 (Historia)

    2. Instrucciones: el lenguaje

    del computador

    2.1 a 2.14

    2.15 (Compiladores y java)

    2.16 a 2.19

    2.20 (Historia)

    E. Arquitecturas de repertorio

    de instrucciones RISCE.1 a E.9

    3. Aritmtica para computadores3.1 a 3.9

    3.10 (Historia)

    C. Conceptos bsicos de diseo lgico C.1 a C.13

    4. El procesador

    4.1 (Visin general)

    4.2 (Convenciones lgicas)

    4.3 a 4.4 (Implementacin simple)

    4.5 (Introduccin a segmentacin)

    4.6 (Camino de datos segmentado)

    4.7 a 4.9 (Riesgos, excepciones)

    4.10 a 4.11 (Paralelo, caso real)

    4.12 (Control segmentado en Verilog)

    4.13 a 4.14 (Falacias)

    4.15 (Historia)

    D. Implementacin del control

    en hardware

    D.1 a D.6

    5. Grande y rpida: aprovechamiento

    de la jerarqua de memoria

    5.1 a 5.8

    5.9 (Controlador de cache en Verilog)

    5.10 a 5.12

    5.13 (Historia)

    6. Almacenamiento y otros aspectos

    de la E/S

    6.1 a 6.10

    6.11 (Redes)

    6.12 a 6.13

    6.14 (Historia)

    7. Multincleo, multiprocesadores

    y clsteres

    7.1 a 7.3

    7.14 (Historia)

    A. Unidades de procesamiento grfico A.1 a A.12

    B. Ensambladores, enlazadores

    y el simulador SPIMB.1 a B.12

    Leer detenidamente Leer si se dispone de tiempo Referencia

    Revisar o leer Leer por cultura

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    14/65

    xvi Prefacio

    aquellos interesados en aprender ms sobre compiladores y lenguajes de programacinorientada a objetos. Incluye material del captulo 3 de la tercera edicin, de forma que

    toda la arquitectura MIPS, excepto las instrucciones de punto flotante, se describeahora en un nico captulo. El captulo 3 est dirigido a los lectores interesados en eldiseo de un camino de datos o en aprender algo ms sobre aritmtica de punto flo-tante. Sin embargo, algunos lectores podrn saltarse este captulo, bien porque no lonecesitan, bien porque es una revisin. El captulo 4, donde se explica el procesador seg-mentado, es una combinacin de dos captulos de la tercera edicin. Las secciones 4.1,4.5 y 4.10 proporcionan una visin general para aquellos lectores interesados en losaspectos software. Sin embargo, constituye el material central para los interesados en losaspectos hardware; dependiendo de sus conocimientos previos, estos lectores puedennecesitar o querer leer antes el apndice C sobre diseo lgico. El captulo 6, sobre siste-mas de almacenamiento, es de importancia crucial para los lectores con un enfoquesoftware y los restantes lectores deberan leerlo tambin si disponen de tiempo sufi-ciente. El ltimo captulo sobre multincleos, multiprocesadores y clsteres es mayori-tariamente material nuevo y debera ser ledo por todos.

    El primer objetivo fue hacer del paralelismo un ciudadano de primera clase enesta edicin, cuando en la anterior edicin era un captulo aparte en el CD. Elejemplo ms evidente es el captulo 7. En este captulo se introduce el modeloRoofline para la evaluacin de las prestaciones y se muestra su validez con la eva-luacin de cuatro microprocesadores multincleo recientes con dos ncleos com-putacionales. Podra demostrarse que este modelo puede ser tan intuitivo para laevaluacin de los multincleos como el modelo de las 3Cs para las caches.

    Dada la importancia del paralelismo, no sera inteligente esperar hasta elltimo captulo para abordarlo, por lo tanto hay una seccin sobre paralelismo encada uno de los seis primeros captulos:

    Captulo 1: Paralelismo y potencia. Se muestra como los lmites impuestospor el consumo de potencia han forzado a los principales fabricantes a mirarhacia el paralelismo, y como el paralelismo ayuda en este problema.

    Captulo 2: Paralelismo e instrucciones: Sincronizacin. Esta seccin analizalos bloqueos para variables compartidas, de forma especfica las instruccio-nes MIPS carga enlazada y almacenamiento condicional.

    Captulo 3. Paralelismo y aritmtica del computador:Asociatividad punto flo-tante. En esta seccin se analizan los retos en precisin numrica y en las

    operaciones punto flotante.

    Captulo 4. Paralelismo y paralelismo a nivel de instrucciones avanzado. Trata elparalelismo a nivel de instrucciones (ILP) avanzado superescalares, especu-lacin, VLIW, desenrollamiento de lazos y OOO as como la relacin entrela profundidad del procesador segmentado y el consumo de potencia.

    Captulo 5. Paralelismo y jerarquas de memoria: Coherencia de cache. Introducelos protocolos de coherencia, consistencia y fisgoneo (snooping) de cache.

    Captulo 6. Paralelismo y E/S: Conjuntos redundantes de discos econmicos(RAID). Describe los sistemas RAID como un sistema paralelo de E/S, ascomo un sistema ICO de alta disponibilidad.

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    15/65

    Prefacio xvii

    El captulo 7 concluye con varias razones para ser optimista con respecto a queesta incursin en el paralelismo debera tener ms xito que las que se realizaron

    anteriormente.Particularmente, estoy entusiasmado con la incorporacin de un apndicesobre Unidades de Procesamiento Grfico escrito por el cientfico jefe de NVIDIA,David Kirk, y el lder del grupo de arquitectos, John Nicolls. En este sentido, elapndice A es la primera descripcin detallada de una GPU, un nuevo e intere-sante empuje para la arquitectura de los computadores. El apndice articula lostemas paralelos de esta edicin para presentar un estilo de computacin que per-mite al programador pensar en un sistema MIMD aunque el hardware ejecute losprogramas como un SIMD cuando es posible. Como las GPUs son baratas y estndisponibles en casi cualquier sistema incluso en computadores porttiles ysus entornos de programacin son de acceso libre, proporciona una plataformahardware paralela con la que experimentar.

    El segundo objetivo ha sido racionalizar el libro para hacer sitio a nuevo materialsobre paralelismo. El primer paso fue mirar con lupa todos los prrafos presentes enlas tres ediciones anteriores para determinar si seguan siendo necesarios. Los cam-bios de grano grueso fueron la combinacin de captulos y la eliminacin de temas.Mark Hill sugiri eliminar la implementacin multiciclo de los procesadores y aa-dir, en su lugar, un controlador de cache multiciclo en el captulo dedicado a la

    jerarqua de memoria. Este cambio permiti presentar el procesador en un nicocaptulo en lugar de en los dos captulos de ediciones anteriores, mejorando el mate-rial sobre el procesador por omisin. Los contenidos del captulo sobre prestacionesde la tercera edicin se aadieron al primer captulo.

    El tercer objetivo fue mejorar los aspectos pedaggicos del libro. El captulo 1 esahora ms jugoso, e incluye material sobre prestaciones, circuitos integrados y con-sumo de potencia, y crea el marco para el resto del libro. Los captulos 2 y 3 original-

    mente estaban escritos con un estilo evolutivo, comenzando con una arquitecturasencilla y terminando con la arquitectura completa del MIPS al final del captulo 3.Sin embargo, este estilo pausado no le gusta a los lectores modernos. Por lo tanto, enesta edicin se junta toda la descripcin del repertorio de instrucciones enteras en elcaptulo 2 haciendo el captulo 3 opcional para muchos lectores y ahora cadaseccin es independiente, de modo que el lector no necesita ya leer todas la seccio-nes anteriores. As, el captulo 2 es mejor como referencia ahora que en edicionesanteriores. El captulo 4 est mejor organizado ahora porque se dedica un nico

    captulo al procesador, ya que la implementacin multiciclo no es de utilidad actual-mente. El captulo 5 tiene una nueva seccin sobre diseo de controladores de cache

    y el cdigo Verilog para este controlador se incluye en una seccin del CD.1El CD-ROM que acompaa al libro, que se introdujo en la tercera edicin, nos per-

    miti reducir el coste del libro, que tena menos pginas, y profundizar en algunos temasque eran de inters slo para algunos lectores, pero no para todos. Desafortunadamente,

    1Nota importante:En la presente edicin en castellano, los contenidos del CD incluido en la edicin original(en ingls) son accesibles a travs de la pgina web www.reverte.com/microsites/pattersonhennessy. Aunque

    en la presente edicin no se proporciona un CD-ROM fsico, a lo largo de todo el texto se menciona el CD

    y se utiliza el icono que lo representa para hacer referencia a su contenido.

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    16/65

    xviii Prefacio

    como consecuencia de nuestro entusiasmo por reducir el nmero de pginas del libro, ellector tena que ir del libro al CD y del CD al libro ms veces de las que le gustara. Esto

    no ocurre en esta edicin. Cada captulo tiene la seccin de Perspectivas histricas en elCD y, adems, todos los ejercicios estn en el libro impreso. Por lo tanto, en esta edicinser muy raro que el lector tenga que ir del libro al CD y del CD al libro.

    Para aquellos que se sorprenden de que incluyamos un CD-ROM con el libro, larespuesta es sencilla: el CD contiene material que hemos considerado que debera serde acceso fcil e inmediato sin importar el lugar en el que se encuentre el lector. Siusted est interesado en los contenidos avanzados o le gustara leer una gua prcticade VHDL (por ejemplo), est en el CD, lista para que la utilice. El CD-ROM incluyetambin una caracterstica que debera mejorar significativamente el acceso al mate-rial: un motor de bsqueda que permite hacer bsquedas de cualquier cadena de textoen el CD o en el libro. Si est buscando algn contenido que podra no estar incluidoen el ndice del libro, simplemente indicando el texto que se quiere buscar el motordevuelve el nmero de la pgina en la que aparece ese texto. Esta caracterstica es muytil y esperamos que usted haga uso de ella frecuentemente.

    Este es un campo en continua evolucin, y como ocurre siempre que se lanza unanueva edicin, uno de los objetivos prioritarios es actualizar los contenidos tcnicos.El procesador Opteron X4 2356 (nombre en clave Barcelona) de AMD se utilizacomo ejemplo gua a lo largo de todo el libro, concretamente para los captulos 1, 4,5 y 7. Los captulos 1 y 6 aaden los resultados obtenidos con los programa deprueba para la evaluacin del consumo de potencia de SPEC. El captulo 2 incor-pora una seccin sobre la arquitectura ARM, que actualmente es la ISA (arquitec-tura del repertorio de instrucciones) de 32 bits ms popular en todo el mundo. Elcaptulo 5 tiene una seccin sobre Mquinas Virtuales, que estn adquiriendo unaimportancia creciente. En el captulo 5 se analizan detalladamente las medidas derendimiento de la cache en el microprocesador multincleo Opteron X4 y se pro-

    porcionan algunos datos, menos detallados, sobre su rival, el procesador Nehalemde Intel, que no ser anunciando antes de que se publique esta edicin. En el cap-tulo 6 se describen por primera vez las memorias Flash as como un destacado servi-dor de Sun, que empaqueta 8 ncleos, 16 DIMMs y 8 discos en una nica unidad1U. Tambin se incluyen resultados recientes sobre fallos de discos a largo plazo. Elcaptulo 7 cubre un gran nmero de temas relacionados con el paralelismo ejecu-cin multihilo, SIMD, procesamiento vectorial, modelos de prestaciones, progra-mas de prueba, redes de multiprocesadores, entre otros y describe tres

    microprocesadores multincleo, adems del Opteron X4: Intel Xeon e5345 (Clover-town), IBM Cell QS20 y Sun Microsystems T2 5120 (Niagara).

    El objetivo final fue intentar que los ejercicios fuesen tiles a los profesores en esta erade Internet, porque los ejercicios que los estudiantes tienen que hacer en su propia casahan sido desde hace mucho tiempo una forma importante de aprender el material con-tenido en el libro. Desafortunadamente, hoy en da las soluciones se cuelgan en la webcasi al mismo tiempo que el libro sale a la venta. Tenemos una propuesta en dos partes.Primero, colaboradores expertos han desarrollado ejercicios totalmente nuevos para

    todos los captulos del libro. Segundo, la mayora de los ejercicios tiene una descripcincualitativa apoyada en una tabla que proporciona varios parmetros cuantitativos alter-nativos que son necesarios para resolver las preguntas. El elevado nmero de ejercicios

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    17/65

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    18/65

    xx Prefacio

    Agradecimientos de la cuarta edicin

    Me gustara dar las gracias a David Kirk, John Nicholls y sus colegas de NVIDIA

    (Michael Garland, John Montrym, Dough Voorhies, Lars Nyland, Erik Lindholm,Paulius Micikevicius, Massimiliano Fatica, Stuart Oberman y Vasily Volkov) por escri-bir el primer apndice que analiza en profundidad las GPUs. Quiero expresar otra vezmi agradecimientoa Jim Larusde Microsoft Research por su buena disposicin a con-tribuir como experto en programacin en lenguaje ensamblador y por alentar a loslectores de este libro a utilizar el simulador que l mismo desarroll y mantiene.

    Tambin estoy muy agradecido por las contribuciones de muchos expertos quedesarrollaron los nuevos ejercicio de esta edicin. Escribir buenos ejercicios no es

    una tarea fcil y todos los colaboradores tuvieron que trabajar mucho y duro paraplantear unos problemas exigentes y atractivos.

    Captulo 1: Javier Bruguera(Universidade de Santiago de Compostela)

    Captulo 2: John Oliver(Cal Poly, San Luis Obispo), con contribuciones deNicole Kaiyan(University of Adelaide) y Milos Prvulovic(Georgia Tech)

    Captulo 3: Matthew Farrens(University of California, Davis)

    Captulo 4: Milos Prvulovic(Georgia Tech) Captulo 5: Jichuan Chang, Jacob Leverich, Kevin Lim y Partha Rangana-

    than (todos de Hewlett-Packard), con contribuciones de Nicole Kaiyan(University of Adelaide)

    Captulo 6: Perry Alexander(The University of Kansas)

    Captulo 7: David Kaeli(Northeastern University)

    Peter Ashedenllev a cabo la herclea tarea de editar y evaluar todoslos nuevosejercicios. Adems, incluso asumi la elaboracin del CD que acompaa al libro yde las diapossitivas para las clases.

    Gracias a David August y Prakash Prabhu de Princenton University por sutrabajo sobre los concursos de los captulos que estn disponibles para los profe-sores en la Web de los editores.

    Cont con el apoyo de mis colegas del Silicon Valley para la elaboracin de granparte del material tcnico del libro:

    AMD, por los detalles y medidas del Opteron X4 (Barcelona): WilliamBrantley, Vasileios Liaskovitis, Chuck Moorey Brian Waldecker.

    Intel, por la informacin prelanzamiento del Intel Nehalem: Faye Briggs.

    Micron, por la informacin sobre memorias Flash del captulo 6: Dean Klein.

    Sun Microsystems, por las medidas de mezclas de instrucciones de los pro-gramas de prueba SPEC2006 en el captulo 2 y los detalles y medidas del Sun

    Server x4150 en el captulo 6: Yan Fisher, John Fowler, Darryl Gove, PaulJoyce, Shenik Mehta, Pierre Reynes, Dimitry Stuve, Durgam Vahia yDavid Weaver.

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    19/65

    Prefacio xxi

    U.C. Berkeley, Krste Asanovic(que proporcion la idea para la concurren-cia software frente a paralelismo hardware del captulo 7), James DemmelyVelvel Kahan(con sus comentarios sobre paralelismo y clculos punto flo-tante), Zhangxi Tan (que dise en controlador de cache y escribi elcdigo Verilog para el mismo en el captulo 5), Sam Williams (que propor-cion el modelo Roofline y las medidas para los multincleos en el captulo7) y el resto de mis colegas en el Par Labque hicieron sugerencias y comen-tarios para los distintos aspectos del paralelismo que se pueden encontrar eneste libro.

    Estoy agradecido a los muchos profesores que contestaron los cuestionariosenviados por los editores, revisaron nuestras propuestas y asistieron a los grupos dediscusin para analizar y responder a nuestros planes para esta edicin. Esto incluyea las siguientes personas:Grupo de discusin: Mark Hill (University of Wisconsin,Madison), E.J. Kim (Texas A&M University), Jihong Kim (Seoul National Univer-sity), Lu Peng (Louisiana State University), Dean Tullsen (UC San Diego), Ken Voll-mar (Missouri State University), David Wood (University of Wisconsin, Madison),Ki Hwan Yum (University of Texas, San Antonio); Revisiones: Mahmoud Abou-Nasr(Wayne State University), Perry Alexander (The University of Kansas), Hakan Aydin(George Mason University), Hussein Badr (State University of New York at StonyBrook), Mac Baker (Virginia Military Institute), Ron Barnes (George Mason Uni-versity), Douglas Blough (Georgia Institute of Technology), Kevin Bolding (SeattlePacifi c University), Miodrag Bolic (University of Ottawa), John Bonomo (West-minster College), Jeff Braun (Montana Tech), Tom Briggs (Shippensburg Univer-sity), Scott Burgess (Humboldt State University), Fazli Can (Bilkent University),Warren R. Carithers (Rochester Institute of Technology), Bruce Carlton (MesaCommunity College), Nicholas Carter (University of Illinois at Urbana-Cham-

    paign), Anthony Cocchi (The City University of New York), Don Cooley (Utah StateUniversity), Robert D. Cupper (Allegheny College), Edward W. Davis (North Caro-lina State University), Nathaniel J. Davis (Air Force Institute of Technology), MolisaDerk (Oklahoma City University), Derek Eager (University of Saskatchewan),Ernest Ferguson (Northwest Missouri State University), Rhonda Kay Gaede (TheUniversity of Alabama), Etienne M. Gagnon (UQAM), Costa Gerousis (ChristopherNewport University), Paul Gillard (Memorial University of Newfoundland),Michael Goldweber (Xavier University), Georgia Grant (College of San Mateo),

    Merrill Hall (The Masters College), Tyson Hall (Southern Adventist University), EdHarcourt (Lawrence University), Justin E. Harlow (University of South Florida),Paul F. Hemler (Hampden-Sydney College), Martin Herbordt (Boston University),Steve J. Hodges (Cabrillo College), Kenneth Hopkinson (Cornell University), Dal-ton Hunkins (St. Bonaventure University), Baback Izadi (State University of NewYorkNew Paltz), Reza Jafari, Robert W. Johnson (Colorado Technical University),Bharat Joshi (University of North Carolina, Charlotte), Nagarajan Kandasamy(Drexel University), Rajiv Kapadia, Ryan Kastner (University of California, Santa

    Barbara), Jim Kirk (Union University), Geoffrey S. Knauth (Lycoming College),Manish M. Kochhal (Wayne State), Suzan Koknar-Tezel (Saint Josephs University),Angkul Kongmunvattana (Columbus State University), April Kontostathis (Ursinus

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    20/65

    xxii Prefacio

    College), Christos Kozyrakis (Stanford University), Danny Krizanc (Wesleyan Uni-versity), Ashok Kumar, S. Kumar (The University of Texas), Robert N. Lea (Univer-sity of Houston), Baoxin Li (Arizona State University), Li Liao (University ofDelaware), Gary Livingston (University of Massachusetts), Michael Lyle, DouglasW. Lynn (Oregon Institute of Technology), Yashwant K Malaiya (Colorado StateUniversity), Bill Mark (University of Texas at Austin), Ananda Mondal (Clafl in Uni-versity), Alvin Moser (Seattle University), Walid Najjar (University of California,Riverside), Danial J. Neebel (Loras College), John Nestor (Lafayette College), JoeOldham (Centre College), Timour Paltashev, James Parkerson (University of Arkan-sas), Shaunak Pawagi (SUNY at Stony Brook), Steve Pearce, Ted Pedersen (Univer-sity of Minnesota), Gregory D Peterson (The University of Tennessee), DejanRaskovic (University of Alaska, Fairbanks) Brad Richards (University of PugetSound), Roman Rozanov, Louis Rubinfi eld (Villanova University), Md AbdusSalam (Southern University), Augustine Samba (Kent State University), RobertSchaefer (Daniel Webster College), Carolyn J. C. Schauble (Colorado State Univer-sity), Keith Schubert (CSU San Bernardino), William L. Schultz, Kelly Shaw (Uni-versity of Richmond), Shahram Shirani (McMaster University), Scott Sigman(Drury University), Bruce Smith, David Smith, Jeff W. Smith (University of Georgia,Athens), Philip Snyder (Johns Hopkins University), Alex Sprintson (Texas A&M),

    Timothy D. Stanley (Brigham Young University), Dean Stevens (MorningsideCollege), Nozar Tabrizi (Kettering University), Yuval Tamir (UCLA), AlexanderTaubin (Boston University), Will Thacker (Winthrop University), Mithuna Thotte-thodi (Purdue University), Manghui Tu (Southern Utah University), Rama Viswa-nathan (Beloit College), Guoping Wang (Indiana-Purdue University), PatriciaWenner (Bucknell University), Kent Wilken (University of California, Davis), DavidWolfe (Gustavus Adolphus College), David Wood (University of Wisconsin, Madi-son), Mohamed Zahran (City College of New York), Gerald D. Zarnett (Ryerson

    University), Nian Zhang (South Dakota School of Mines & Technology), JilingZhong (Troy University), Huiyang Zhou (The University of Central Florida), WeiyuZhu (Illinois Wesleyan University).

    Me gustara dar las gracias especialmente a la gente de Berkeley que dio unaretroalimentacin clave para el captulo 7 y el apndice A, que fueron las dos par-tes de este libro ms complicadas de escribir: Krste Asanovic, Christopher Bat-ten, Rastilav Bodik, Bryan Catanzaro, Jike Chong, Kaushik Data, GregGiebling, Anik Jain, Jae Lee, Vasily Volkovy Samuel Williams.

    Un agradecimiento especial tambin para Mark Smothermanpor sus mlti-ples revisiones para encontrar errores tcnicos y de escritura, que contribuyeron amejorar significativamente la calidad de esta edicin. Su papel ha sido incluso msimportante esta vez puesto que esta edicin se hizo en solitario.

    Queremos agradecer a la familia de Morgan Kaufmann por estar de acuerdo enla publicacin de este libro otra vez bajo la direccin de Denise Penrose. Natha-niel McFaddenfue el editor de desarrollo (developmental editor) para esta edi-cin y trabaj codo con codo conmigo en los contenidos del libro. Kimberlee

    Honjocoordin las encuestas de los usuarios y sus respuestas.Dawnmarie Simpsonllev a cabo la supervisin del proceso de produccin del

    libro. Tambin queremos dar las gracias a muchos agentes por cuenta propia (fre-

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    21/65

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    22/65

    1Abstraccionesy tecnologa de

    los computadores

    1.1 Introduccin 3

    1.2 Bajo los programas 10

    1.3 Bajo la cubierta 13

    1.4 Prestaciones 26

    1.5 El muro de la potencia 39

    1.6 El gran cambio: el paso de monoprocesado-

    res a multiprocesadores 41

    La civilizacin avanzaextendiendo el

    nmero de operacionesimportantes que sepueden hacer sinpensar en ellas

    Alfred North WhiteheadAn Introduction to Mathematics, 1911

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    23/65

    1.7 Casos reales: fabricacin y evaluacin del AMD

    Opteron x4 441.8 Falacias y errores habituales 51

    1.9 Conclusiones finales 54

    1.10 Perspectiva histrica y lecturas

    recomendadas 55

    1.11 Ejercicios 56

    Nota importante:En la presente edicin en castellano, los contenidos del CD in-cluido en la edicin original (en ingls) son accesibles a travs de la pgina webwww.reverte.com/microsites/pattersonhennessy. Aunque en la presente edicin nose proporciona un CD-ROM fsico, a lo largo de todo el texto se menciona el CD yse utiliza el icono que lo representa para hacer referencia a su contenido.

    Bienvenido a este libro! Estamos encantados de tener esta oportunidad de trans-mitir el entusiasmo del mundo de los computadores. ste no es un campo rido y

    aburrido, donde el progreso es glacial y donde las nuevas ideas se atrofian pornegligencia. No! Los computadores son el producto de la increblemente vibranteindustria de las tecnologas de la informacin, que en su conjunto es responsablecomo mnimo del 10% del producto nacional bruto de los Estados Unidos y cuyaeconoma se ha vuelto, en parte, dependiente de las rpidas mejoras en tecnolo-gas de la informacin prometidas por la ley de Moore. Esta inslita industriaimpulsa la innovacin a una velocidad asombrosa. En los ltimos 25 aos apare-cieron varios computadores nuevos cuya introduccin pareca que iba a revolu-

    cionar la industria de la computacin; estas revoluciones duraban poco tiemposimplemente porque alguien construa un computador aun mejor.Esta carrera por innovar condujo a un progreso sin precedentes desde el inicio de

    la computacin electrnica en los ltimos aos de la dcada de 1940. Si los mediosde transporte hubiesen ido a la par con la industria de la computacin, por ejemplo,hoy en da se podra viajar de Nueva York a Londres en aproximadamente unsegundo por unos pocos cntimos. Pensemos un momento cmo tal adelantohabra cambiado la sociedad (vivir en Tahit y trabajar en San Francisco, ir a Mosc

    para ver el Ballet Bolshoi) y podremos apreciar las implicaciones de tal cambio.

    1.1 Introduccin 1.1

    4 Captulo 1 Abstracciones y tecnologa de los computadores

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    24/65

    4 Captulo 1 Abstracciones y tecnologa de los computadores

    Los computadores nos han llevado a una tercera revolucin de la civilizacin, larevolucin de la informacin, que se sita a la par de las revoluciones agrcola eindustrial. El resultado de la multiplicacin de la potencia y el alcance intelectual dela humanidad ha afectado profundamente a nuestras vidas cotidianas y tambin hacambiado la manera de obtener nuevos conocimientos. Hay ahora una nueva formade investigacin cientfica, en la cual cientficos informticos trabajan junto a cient-ficos tericos y experimentales en la exploracin de nuevas fronteras en astronoma,biologa, qumica y fsica entre otras.

    La revolucin de los computadores contina. Cada vez que el coste de la com-putacin se mejora en un factor 10, las oportunidades para los computadores semultiplican. Aplicaciones que eran econmicamente inviables repentinamente se

    convierten en factibles. Hasta hace muy poco, las siguientes aplicaciones eranciencia ficcin computacional.

    Computadores en los coches: hasta que los microprocesadores mejorarondrsticamente en precio y prestaciones a principios de la dcada de 1980, elcontrol por computador en los coches era risible. Hoy en da los computa-dores reducen la contaminacin y mejoran las prestaciones del combustibleva controles en el motor, y tambin mejoran la seguridad al prevenir peli-

    grosos patinazos e inflando los air bagspara proteger a los ocupantes en casode colisin.

    Telfonos porttiles: quin habra podido soar que los avances en sistemasde computacin llevaran al desarrollo de telfonos mviles, permitiendouna comunicacin persona-a-persona casi en cualquier parte del mundo?

    Proyecto genoma humano:el coste del equipamiento informtico para carto-grafiar y analizar las secuencias del ADN humano es de centenares de millo-

    nes de dlares. Es improbable que alguien hubiese considerado esteproyecto si los costes de los computadores hubiesen sido entre 10 y 100veces mayores, tal y como eran hace 10 o 20 aos. Adems, el coste continabajando; podramos ser capaces de adquirir nuestro propio genoma, permi-tiendo que los cuidados mdicos se adapten a nosotros.

    World Wide Web (La telaraa mundial):la World Wide Web, que no existaen la primera edicin de este libro, ha cambiado nuestra sociedad. Paramuchos, la www ha reemplazado a las bibliotecas.

    Motores de bsqueda: Dado que el contenido de la WWW ha crecido entamao y valor, encontrar informacin relevante es cada vez ms impor-tante. En la actualidad, mucha gente confa tanto en los motores de bs-queda que se veran en apuros si no pudiesen utilizarlos.

    Claramente, los avances en esta tecnologa influyen hoy en da en casi todos losaspectos de nuestra sociedad. Los avances en el hardware han permitido a los pro-gramadores crear programas maravillosamente tiles, y explican por qu los com-

    putadores son omnipresentes. Lo que hoy es ciencia ficcin, sern las aplicacionesnormales en el futuro: ya hay mundos virtuales, reconocimiento de voz y asisten-cia mdica personalizada.

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    25/65

    6 Captulo 1 Abstracciones y tecnologa de los computadores

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    26/65

    6 p t t y t g p t

    Los computadores empotrados constituyen la clase de computadores msamplia y son los que tienen la gama ms amplia de aplicaciones y prestaciones. Loscomputadores empotrados incluyen los microprocesadores que se encuentran enlos coches, los computadores de los telfonos mviles o de los computadores de losvideojuegos o de los televisores digitales, y las redes de procesadores que controlanlos aviones modernos o los barcos de carga. Los sistemas de computacin empo-trada se disean para ejecutar una aplicacin o un conjunto de aplicaciones relacio-nadas, que normalmente estn integradas con el hardware y se proporcionan comoun nico sistema; as, a pesar del gran nmero de computadores empotrados,muchos usuarios nunca ven realmente que estn usando un computador!

    La figura 1.1. muestra que durante los ltimos aos el incremento de los telfo-

    nos mviles, que dependen de los computadores empotrados, ha sido mucho msrpido que el incremento de los computadores de sobremesa. Obsrvese que lastelevisiones digitales, coches, cmaras digitales, reproductores de msica, videojue-gos y otros muchos dispositivos de consumo incorporan tambin computadoresempotrados, lo que incrementa an ms la diferencia entre el nmero de computa-dores empotrados y computadores de sobremesa.

    Las aplicaciones empotradas a menudo tienen un nico requisito de aplicacinque combina unas prestaciones mnimas con fuertes limitaciones en coste o con-

    sumo de potencia. Por ejemplo, pensemos en un reproductor de msica: El proce-sador necesita solamente tener la velocidad suficiente para llevar a cabo estafuncin limitada, y a partir de aqu, los objetivos ms importantes son reducir elcoste y el consumo de potencia. A pesar de su coste reducido, los computadores

    FIGURA 1.1 El nmero de telfonos mviles, computadores personales y televisores fabri-

    cados cada ao entre 1997 y 2007.(Solo hay datos de televisores del ao 2004). Ms de mil millones denuevos telfonos mviles se vendieron en 2006. En 1997, la venta de telfonos mviles superaba a la de PC en unfactor 1.4; y este factor creci hasta 4.5 en 2007. En 2004, se estimaba que haba 2000 millones de televisores en

    uso, 1800 millones de telfonos mviles y 800 millones de PCs. Cmo la poblacin mundial era 6400 millones depersonas, haba aproximadamente 1 PC, 2.2 telfonos mviles y 2.5 televisores por cada 8 habitantes del planeta.En 2006, un estudio estim que en Estados Unidos haba una media de 12 dispositivos por familia, incluyendo 3televisiones, 2 PCs y otros aparatos como consolas para videojuegos, reproductores de MP3 y telfonos mviles.

    Computadores empo-trados: computador quese encuentra dentro de

    otro dispositivo y que seutiliza para ejecutar unaaplicacin predetermi-nada o un conjunto deaplicaciones relacionadas.

    0

    100

    200

    300

    400

    500

    600

    700

    800

    900

    1000

    1100

    1200

    7991

    8991

    9991

    0002

    1002

    2002

    3002

    4002

    5002

    6002

    7002

    Mviles PCs TVs

    1.1 Introduccin 7

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    27/65

    empotrados tienen a menudo menor tolerancia a fallos, porque las consecuenciasde un fallo pueden variar desde ser molestas (cuando nuestra televisin nueva seestropea) a devastadoras (algo que puede ocurrir cuando falla el computador de unavin o de un barco de carga). En aplicaciones empotradas orientadas al consumo,como por ejemplo electrodomsticos digitales, la funcionalidad se obtiene princi-palmente a travs de la sencillez; se intenta hacer una funcin tan perfectamentecomo sea posible. En grandes sistemas empotrados, se emplean a menudo tcnicasde redundancia desarrolladas para el mundo de los servidores (vase seccin 6.9).Aunque este libro se centra en los computadores de propsito general, la mayorade los conceptos son aplicables directamente, o con pocas modificaciones, a loscomputadores empotrados.

    Extensin: Las extensiones son secciones cortas que se usan a lo largo del textopara proporcionar un mayor detalle sobre algn tema en particular, que puede ser de

    inters. Los lectores que no estn interesados en una extensin, pueden saltrsela, ya

    que el material siguiente nunca depender de su contenido.

    Muchos procesadores empotrados se disean usando ncleos de procesador, una

    versin de un procesador escrito en un lenguaje de descripcin hardware, tal como

    Verilog o VHDL (vase captulo 4). El ncleo permite a un diseador integrar otro hard-

    ware especfico de la aplicacin con el ncleo del procesador para fabricar un nico cir-cuito integrado.

    Qu puede aprender en este libro

    Los programadores de xito siempre han estado comprometidos con las prestacio-nes de sus programas, porque proporcionar de forma rpida resultados al usuario esfundamental para crear software de xito. En las dcadas de 1960 y 1970, la principal

    restriccin para las prestaciones era el tamao de la memoria del computador. As,los programadores frecuentemente seguan una sencilla regla: minimizar el espaciode la memoria para hacer programas rpidos. En la ltima dcada, los avances en eldiseo de los computadores y en la tecnologa de la memoria redujeron drstica-mente la importancia del pequeo tamao de la memoria en muchas aplicaciones,excepto las de los sistemas de computacin empotrada.

    Los programadores interesados en las prestaciones necesitan ahora conocer lascuestiones que han reemplazado el modelo de memoria simple de la dcada de

    1960: la naturaleza jerrquica de las memorias y la naturaleza paralela de los pro-cesadores. Los programadores que buscan construir versiones competitivas de loscompiladores, los sistemas operativos, las bases de datos, e incluso de aplicacionestendrn consecuentemente que incrementar su conocimiento de la organizacinde los computadores.

    Nosotros tenemos la oportunidad de explicar qu hay dentro de esta mquinarevolucionaria, desentraando el software bajo su programa y el hardware bajo lascubiertas de su computador. Cuando complete este libro, creemos que ser capaz

    de contestar a las siguientes preguntas: Cmo se escriben los programas en un lenguaje de alto nivel, tales como C o

    Java, cmo se traducen al lenguaje del hardware, y cmo ejecuta el hardware

    8 Captulo 1 Abstracciones y tecnologa de los computadores

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    28/65

    el programa resultante? Comprender estos conceptos forma la base paraentender los aspectos tanto del hardware y como del software que afectan alas prestaciones de los programas.

    Cul es la interfaz entre el software y el hardware, y cmo el software ins-truye al hardware para realizar las funciones necesarias? Estos conceptos sonvitales para comprender cmo se escriben muchos tipos de software.

    Qu determina las prestaciones de un programa, y cmo un programadorpuede mejorarlo? Como veremos, esto depende del programa original, elsoftware de traduccin de este programa al lenguaje del computador, y de laefectividad del hardware al ejecutar el programa.

    Qu tcnicas pueden usar los diseadores de hardware para mejorar lasprestaciones? Este libro introducir los conceptos bsicos del diseo de loscomputadores actuales. El lector interesado encontrar mucho ms materialsobre este tema en nuestro libro avanzado, Arquitectura del Computador:Una aproximacin cuantitativa.

    Cules son las razones y consecuencias del reciente paso del procesamientosecuencial al paralelo? En este libro se indican las motivaciones, se describe el

    hardware disponible actualmente para dar soporte al paralelismo y se revisa lanueva generacin de microprocesadores multincleo(vase captulo 7).

    Sin comprender las respuestas a estas preguntas, mejorar las prestaciones desus programas en un computador moderno, o evaluar qu caractersticas podranhacer un computador mejor que otro para una aplicacin particular, sera uncomplejo proceso de prueba y error, en lugar de un procedimiento cientfico con-ducido por la comprensin y el anlisis.

    El primer captulo contiene los fundamentos para el resto del libro. Introduce

    las ideas bsicas y las definiciones, pone en perspectiva los mayores componentesdel hardware y del software, muestra como evaluar prestaciones y potencia eintroduce los circuitos integrados, la tecnologa que alimenta la revolucin de loscomputadores y explica la evolucin hacia los multincleos.

    En este captulo, y otros posteriores, probablemente usted ver un montn denuevas palabras, o palabras que puede haber odo, pero que no est seguro de lo quesignifican. No se preocupe! S, hay un montn de terminologa especial que se usa enla descripcin de los computadores modernos, pero la terminologa realmente es una

    ayuda que nos permite describir con precisin una funcin o capacidad. Adems, alos diseadores de computadores (incluidos a los autores de este libro) les encantausar acrnimos, que son ms fciles de comprender cuando se sabe lo que significacada una de sus letras! Para ayudarle a recordar y localizar los trminos, hemosincluido una definicin resaltada de cada uno de ellos la primera vez que aparece enel texto. Despus de un breve periodo trabajando con la terminologa, usted estarhabituado, y sus amigos se quedarn impresionados de la manera tan correcta comousa palabras como BIOS, CPU, DIMM, DRAM, PCIE, SATA y tantas otras.

    Para reforzar la comprensin de cmo los sistemas hardware y software que seusan para ejecutar un programa afectan a las prestaciones, a lo largo del librousamos la seccin especial Comprender las prestaciones de los programas. A

    Microprocesador mul-tincleo:procesadorque contiene varios pro-cesadores o ncleos enun nico circuito inte-grado.

    Acrnimo:palabraconstruida tomando las

    letras iniciales de cadauna de las palabras deuna frase; por ejemplo,RAM es un acrnimo deRandom Access Memory(memoria de acceso alea-torio), y CPU es un acr-nimo de for CentralProcessing Unit(unidad

    central de proceso).

    1.1 Introduccin 9

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    29/65

    continuacin veremos la primera. Estas secciones resumen detalles importantesde las prestaciones de los programas.

    AutoevaluacinLas secciones Autoevaluacin se han diseado para ayudar a los lectores a valo-rar si han comprendido los conceptos principales introducidos en un captulo yhan entendido las implicaciones de los mismos. Algunas preguntas de estas sec-ciones Autoevaluacin tienen respuestas sencillas; otras son para debate engrupo. Las respuestas a las cuestiones especficas se pueden encontrar al final del

    captulo. Las preguntas de Autoevaluacin aparecen slo al final de una seccin,de manera que es fcil saltarlas si usted est seguro de que entiende el material.

    1. La seccin 1.1 mostraba que el nmero de procesadores empotrados vendi-dos cada ao supera significativamente el nmero de procesadores de com-putadores de sobremesa. Puede confirmar o negar esta percepcinbasndose en su propia experiencia? Intente contar el nmero de procesa-dores empotrados que hay en su casa. Cmo es este nmero comparadocon el nmero de computadores de sobremesa que hay en su casa?

    2. Tal y como se mencion antes, tanto el hardware como el software afectana las prestaciones de un programa. Puede pensar ejemplos dnde cada unode los tems siguientes sea el lugar adecuado para buscar un cuello de bote-lla de las prestaciones?

    El algoritmo elegido

    El lenguaje de programacin o el compilador

    El sistema operativo El procesador

    El sistema de E/S y los dispositivos

    Las prestaciones de un programa dependen de una combinacin de efectividad delos algoritmos usados en el programa, de los sistemas de software usados paracrear y traducir el programa en instrucciones mquina y de la efectividad delcomputador al ejecutar esas instrucciones, las cuales pueden incluir operacionesde entrada y salida (E/S). La siguiente tabla resume cmo afectan a las prestacio-nes tanto el hardware como el software.

    Comprenderlas prestacionesde los programas

    Componente Hardwareo software

    Cmo afecta este componentea las prestaciones

    Dnde se cubreeste tema

    Algoritmo Determina el nmero de sentencias de alto nivel y

    el nmero de operaciones de E/S que se ejecutarn

    Otros libros!

    Lenguaje de programacin,

    compilador y arquitectura

    Determina el nmero de instrucciones mquina que

    se ejecutarn por cada sentencia de alto nivel

    captulos 2 y 3

    Procesador y sistema

    de memoria

    Determina cun rpido se pueden ejecutar

    las instrucciones

    captulos 4, 5 y 7

    Sistema de E/S (hardware

    y sistema operativo)

    Determina cun rpido se pueden ejecutar

    las operaciones de E/S

    captulo 6

    10 Captulo 1 Abstracciones y tecnologa de los computadores

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    30/65

    Una aplicacin tpica, tal como un procesador de textos o un gran sistema de basede datos, puede consistir de cientos de miles o millones de lneas de cdigo ydepender de sofisticadas bibliotecas de software que implementan funcionescomplejas de soporte a la aplicacin. Tal y como veremos, el hardware de un com-putador slo puede ejecutar instrucciones extremadamente simples de bajo nivel.Para ir de una aplicacin compleja hasta las instrucciones simples se ven involu-

    cradas varias capas de software que interpretan o trasladan las operaciones de altonivel en instrucciones simples del computador.Estas capas de software estn organizadas principalmente en forma jerrquica,

    donde las aplicaciones son el anillo ms externo y una variedad de software desistemasse coloca entre el hardware y las aplicaciones software, como muestra lafigura 1.2.

    Hay muchos tipos de software de sistemas, pero actualmente hay dos tipos queson fundamentales para todos los computadores: un sistema operativo y un com-

    pilador. Un sistema operativointeracta entre el programa del usuario y el hard-ware y proporciona una variedad de servicios y funciones de supervisin. Entresus funciones ms importantes estn:

    manejo de las operaciones bsicas de entrada y salida

    asignacin de espacio de almacenamiento y de memoria

    facilitar la comparticin del computador entre mltiples aplicacionessimultneas

    Ejemplos de sistemas operativos en uso hoy en da son Windows, Linux y MacOS.

    1.2 Bajo los programas 1.2

    FIGURA 1.2 Vista simplificada del hardware y el software como capas jerrquicas, mos-

    tradas como crculos concntricos con el hardware en el centro y el software de las apli-

    caciones en el exterior. En aplicaciones complejas frecuentemente se encuentran mltiples capassoftware. Por ejemplo, un sistema de base de datos puede ejecutarse sobre el software de sistemas que alojauna aplicacin, el cual a su vez se ejecuta sobre la base de datos.

    En Pars slo me mira-ban fijamente cuando leshablaba en francs;

    nunca consegu hacerentender a esos idiotas su

    ropio idioma.

    Mark Twain, The Inno-cents Abroad, 1869

    Software de sistemas:software que proporcionaservicios que habitual-mente son tiles, entreellos los sistemas operati-vos, los compiladores y los

    ensambladores.Sistema operativo:programa de supervi-sin que gestiona losrecursos de un computa-dor para provecho de losprogramas que se ejecu-tan en esa mquina.

    Progr

    amas de aplicaci

    n

    Pro

    gram

    as desistema

    Circuitera

    1.2 Bajo los programas 11

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    31/65

    Loscompiladores realizan otra funcin vital: la traduccin de un programaescrito en un lenguaje de alto nivel, como C, C++, Java o Visual Basic a instruc-ciones que el hardware puede ejecutar. Dada la sofisticacin de los modernos

    lenguajes de programacin y las instrucciones simples ejecutadas por el hard-ware, la traduccin desde un programa en un lenguaje de alto nivel a instruccio-nes hardware es compleja. Daremos una breve visin general del proceso yvolveremos a este tema en el captulo 2 y apndice B.

    Del lenguaje de alto nivel al lenguaje del hardware

    Para hablar realmente a una mquina electrnica es necesario enviar seales

    elctricas. Las seales elctricas ms fciles de entender para las mquinas sonencendido (on) y apagado (off),y por lo tanto el alfabeto de la mquina tieneslo dos letras. Del mismo modo que las 26 letras del alfabeto ingls no limi-tan cunto se puede escribir, las dos letras del alfabeto de los computadoresno limitan lo que los stos pueden hacer. Los dos smbolos para estas letrasson los nmeros 0 y 1 y habitualmente pensamos en el lenguaje de las mqui-nas como nmeros en base 2, o nmeros binarios. Nos referimos a cadaletra como dgito binarioo bit.1Los computadores son esclavos de nuestrasrdenes. De ah que el nombre para una orden individual sea instruccin. Lasinstrucciones, que son simples colecciones de bits que el computador puedecomprender, se pueden pensar como nmeros. Por ejemplo, los bits

    1000110010100000

    indican a un computador que sume dos nmeros. En el captulo 3 explicamos porqu usamos nmeros para instruccionesydatos; no queremos adelantar aconteci-mientos, pero el uso de nmeros tanto para las instrucciones como para los datoses de importancia capital para la informtica.

    Los primeros programadores se comunicaban con los computadores mediantenmeros binarios, pero eso era tan laborioso que rpidamente inventaron nuevasnotaciones ms prximas a la forma de pensar de los humanos. Al principio estasnotaciones se traducan a binario a mano, pero ese proceso an era fatigoso. Usandola propia mquina para ayudar a programar la mquina, los pioneros inventaronprogramas para traducir de notacin simblica a binario. El primero de estos progra-mas fue llamado ensamblador. Este programa traduce la versin simblica de unainstruccin a su versin binaria. Por ejemplo, el programador escribira

    add A, B

    y el ensamblador traducira esta notacin a

    1000110010100000

    Esta instruccin indica al computador que sume los nmeros A y B. El nombreacuado para este lenguaje simblico, an usado hoy en da, es lenguajeensamblador. Por el contrario, el lenguaje binario que entiende el computador

    se llama lenguaje mquina.

    1. Originariamente, contraccin inglesa debinary digit. (N.del T.)

    Compiladores:programa que traducesentencias en un lenguaje

    de alto nivel a sentenciasen lenguaje ensamblador.

    Dgito binario:tam-bin llamado bit. Uno

    de los dos nmeros enbase 2 (0 1) que sonlos componentes de lainformacin.

    Instruccin: orden queel hardware del compu-tador entiende y obe-dece.

    Ensamblador:programaque traduce una versinsimblica de las instruc-

    ciones a su versin binaria.

    Lenguaje ensam la or:representacin simblicade las instrucciones de lamquina.

    Lenguaje mquina:representacin binaria delas instrucciones mquina.

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    32/65

    1.3 Bajo la cubierta 13

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    33/65

    Un compilador permiten que un programador escriba esta expresin en len-guaje de alto nivel:

    A + B

    El compilador compilara esto en esta sentencia de lenguaje ensamblador:

    add A, B

    El ensamblador traducira esto en la instruccin binaria que indica al computadorque sume los nmeros A y B.

    Los lenguajes de programacin de alto nivel ofrecen varias ventajas impor-

    tantes. Primero, permiten al programador pensar en un lenguaje ms natural,usando palabras inglesas y notacin algebraica, dando lugar a programas con unaspecto mucho ms parecido a un texto que a una tabla de smbolos crpticos(vase figura 1.3). Por otro lado, permiten que los lenguajes sean diseados deacuerdo con su intencin de uso. De este modo, el Fortran fue diseado paracomputacin cientfica, Cobol para el procesado de datos comerciales, Lisp paramanipulacin simblica, etc. Hay tambin lenguajes de dominio especfico,incluso para pequeos grupos de usuarios, como por ejemplo los interesados ensimulacin de fluidos.

    La segunda ventaja de los lenguajes de programacin es la mejora de la produc-tividad del programador. Una de las pocas cuestiones con amplio consenso en eldesarrollo de programas es que toma menos tiempo desarrollar programascuando se escriben en lenguajes que requieren menos lneas para expresar unaidea. La concisin es una ventaja clara de los lenguajes de alto nivel sobre el len-guaje ensamblador.

    La ventaja final es que los lenguajes de programacin permiten a los programasser independientes del computador sobre el que se desarrollan, ya que los compi-ladores y ensambladores pueden traducir programas en lenguaje de alto nivel a lasinstrucciones binarias de cualquier mquina. Estas tres ventajas son tan decisivasque hoy en da se programa muy poco en lenguaje ensamblador.

    Ahora que hemos mirado debajo de los programas para descubrir la pro-gramacin subyacente, abramos la cubierta del computador para aprender sobrela circuitera que hay debajo. El hardware de cualquier computador lleva a cabolas mismas funciones bsicas: introduccin de datos, extraccin de resultados,procesamiento de datos y almacenamiento de datos. El tema principal de estelibro es explicar cmo se realizan estas funciones, y los captulos siguientes tratan

    las diferentes partes de estas cuatro tareas.Cuando llegamos a un punto importante en este libro, un punto tan importanteque desearamos que lo recordase para siempre, lo enfatizamos identificndolo con

    1.3 Bajo la cubierta 1.3

    14 Captulo 1 Abstracciones y tecnologa de los computadores

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    34/65

    un tem de Idea clave. Tenemos cerca de una docena de Ideas clave en este libro,siendo la primera los cinco componentes de un computador que realizan las tareasde entrada, salida, proceso y almacenamiento de datos.

    Los cinco componentes clsicos de un computador son entrada, salida,memoria, camino de datos y control, donde las dos ltimas a veces estncombinadas y se llaman el procesador. La figura 1.4 muestra la organiza-cin estndar de un computador. Esta organizacin es independiente dela tecnologa del hardware: se puede colocar cada parte de cada computa-dor, pasado y presente, en una de estas cinco categoras. Para ayudarle a

    tener todo esto en perspectiva, los cinco componentes de un computadorse muestran en la primera pgina de los captulos siguientes, con la partede inters para ese captulo resaltada.

    FIGURA 1.4 La organizacin de un computador, mostrando los cinco componentes clsi-

    cos.

    El procesador toma las instrucciones y datos de la memoria. La entrada escribe datos en la memoria yla salida lee datos de la memoria. El control enva seales que determinan las operaciones del camino dedatos, la memoria, la entrada y la salida.

    IDEclave

    1.3 Bajo la cubierta 15

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    35/65

    La figura 1.5 muestra un computador de sobremesa tpico, con teclado,ratn y pantalla. Esta fotografa revela dos de los componentes clave de uncomputador: dispositivos de entrada,como el teclado y el ratn, y dispositi-vos de salida, como la pantalla. Tal como sugiere su nombre, la entrada ali-menta al computador y la salida es el resultado de la computacin enviado alusuario. Algunos dispositivos, tales como las redes y discos, ofrecen al compu-tador tanto entrada como salida.

    El captulo 6 describe los dispositivos de entrada/salida (E/S) con mayor deta-lle, pero ahora, como introduccin, haremos un breve recorrido por la circuiteradel computador, empezando por los dispositivos externos de E/S.

    FIGURA 1.5 Un computador de sobremesa. La pantalla de cristal lquido (LCD) es el dispositivo desalida principal, y el teclado y el ratn son los dispositivos de entrada principales. En la parte derecha se puedever un cable de Ethernet que conecta el porttil con la red y la web. El porttil tiene procesador, memoria ydispositivos de E/S. Este computador es un porttil Macbook Pro 15 conectado a un monitor externo.

    Dispositivo de entrada:mecanismo, comoel teclado o el ratn,mediante el cual se intro-duce informacin alcomputador.

    Dispositivos de salida:mecanismo quecomunica el resultado

    de la computacina un usuario o a otrocomputador.

    16 Captulo 1 Abstracciones y tecnologa de los computadores

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    36/65

    Anatoma de un ratn

    Aunque muchos usuarios no se imaginaran ahora un computador sin ratn, la idea

    de un dispositivo para sealar, como es el ratn, fue mostrada por primera vez porEngelbart usando un prototipo de investigacin en 1967. El Alto, que fue la inspira-cin para todas las estaciones de trabajo (workstations)ypara los sistemas operativosMacintosh y Windows, inclua un ratn como dispositivo para sealar en 1973. En ladcada de 1990, todos los computadores de sobremesa incluan este dispositivo y sehicieron populares nuevas interfaces basadas en presentaciones grficas y ratones.

    El primer ratn era electromecnico y usaba una bola grande que cuando rodabaa lo largo de una superficie haca que unos contadores xeyse incrementasen. La

    cantidad de incremento de cada contador deca cunto se haba movido el ratn.La mayora de los ratones electromecnicos fueron reemplazados por el novedosoratn ptico, que en realidad es un procesador ptico en miniatura que incluye undiodo luminoso (Light Emitting Diode, LED) para proporcionar iluminacin, unaminscula cmara en blanco y negro y un procesador ptico sencillo. El LED iluminala superficie que hay debajo del ratn; la cmara toma 1500 fotografas de muestrapor segundo de la zona iluminada. Las sucesivas fotografas se envan al procesadorptico que compara las imgenes y determina si el ratn se ha movido y en qu

    medida. La sustitucin del ratn electromecnico por el ratn electro-ptico es unailustracin de un fenmeno comn: los costes decrecientes y la mayor fiabilidad de laelectrnica hace que una solucin electrnica reemplace a una solucin electromec-nica ms antigua. En la pgina 22 veremos otro ejemplo: la memoria flash.

    A travs del cristal de observacin

    El dispositivo de E/S ms fascinante es probablemente la pantalla grfica. Los com-putadores porttiles y los de mano, las calculadoras, los telfonos mviles o celulares

    y casi todos los computadores de sobremesa usan una pantalla de cristal lquido(liquid crystal display, LCD)o de panel plano, para conseguir una pantalla delgaday de bajo consumo. La diferencia principal es que el pxeldelLCD no es la fuente deluz; en su lugar controla la transmisin de la luz. Un LCD tpico consiste en molcu-las en forma de bastoncillos suspendidos en un lquido. Estas molculas forman unahlice retorcida que refractan la luz que entra en la pantalla, habitualmente de unafuente de luz situada detrs de ella o, menos frecuentemente, de una luz reflejada.Las barras se alinean cuando se aplica una corriente y dejan de refractar la luz;

    puesto que el material del cristal lquido est entre dos pantallas polarizadas a 90grados, la luz no puede pasar si no es refractada. Hoy en da, muchas pantallas deLCD usan una matriz activaque tiene un minsculo transistor que acta como inte-rruptor en cada pxelpara controlar con precisin la corriente y as formar imgenesms ntidas. La intensidad de los tres colores rojo, verde, azul de la imagen finalse obtiene a partir de una mscara roja-verde-azul asociada a cada punto de la panta-lla; en una matriz activa LCD de color, hay tres transistores en cada punto.

    La imagen se compone de una matriz de elementos, o pxels,1 que se pueden

    representar en una matriz de bits, llamada mapa de bits (bit map). Dependiendo de la1. Originariamente, contraccin de picture element, elemento de imagen. Dada la extensin de suuso, se ha optado por mantener el trmino. (N. del T.)

    Se me ocurri la idea delratn mientras estaba enuna conferencia de com-

    utadores. El conferen-ciante era tan aburridoque empec a soar des-

    ierto y di con la idea.

    Doug Engelbart

    En las pantallas de loscomputadores he hechoaterrizar un avin en lacubiertade un portaavio-

    nes en movimiento, hevisto el impacto de una

    artcula nuclear con untomo, he volantempladoun computador reve-lando todas sus tareasms internas.

    Ivan Sutherland,pa-dre de los grficos porcomputador, cita deComputer Software forGraphics; Scientific

    American, 1984.

    Pantalla de panel plano,pantalla de cristallquido:tecnologa de

    pantalla que usa una capafina de polmeros de lqui-dos que se pueden usarpara transmitir o bloquearla luz segn si se aplicauna carga elctrica o no.

    Pantalla de panel plano,

    Pantalla de matrizactiva:pantalla de cristallquido que usa un transis-tor para controlar la trans-misin de luz a cada pxelindividual.

    Pxel: el elemento indi-vidual ms pequeo de laimagen. Las pantallas

    estn formadas de millo-nes de pxels organizadoscomo una matriz.

    1.3 Bajo la cubierta 17

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    37/65

    medida de la pantalla y de la resolucin, la matriz vara en tamao desde 640 480,hasta 2560 1600 pxeles en 2008. Una pantalla en color puede usar 8 bits para cadauno de los tres colores primarios (rojo, azul y verde), 24 bits por pxel en total, y per-

    mite ver millones de colores diferentes en la pantalla.El soporte del hardware del computador para grficos consiste principalmente en

    un bfer de refresco, o bfer de pantalla, para almacenar el mapa de bits. La imagenque se va a representar se almacena en el bfer de pantalla y el patrn de bits de cadapxel se leen hacia la pantalla grfica a la velocidad de refresco. La figura 1.6 muestraun bfer de pantalla con 4 bits por pxel.

    El objetivo del mapa de bits es representar fielmente lo que est en la pantalla.Los problemas en sistemas grficos aparecen debido a que el ojo humano es muybueno detectando cambios sutiles.

    Apertura de la caja

    Si se abre la caja del computador, se ve una placa fascinante de plstico verdedelgado, cubierta con docenas de pequeos rectngulos grises o negros. En lafigura 1.7 se puede ver el contenido del computador porttil de la figura 1.5.

    En la parte superior de la foto se muestra la placa base. En la parte frontal haydos bahas de disco, el disco duro a la derecha y el DVD a la izquierda. Elhueco en el medio es para albergar la batera del porttil.

    Los pequeos rectngulos de la placa base son los dispositivos que impul-san nuestra avanzada tecnologa, los circuitos integrados o chips. La placaconsta de tres partes: la parte que conecta con los dispositivos de E/S antesmencionados, la memoria y el procesador.

    La memoriaes el lugar donde se guardan los programas mientras se ejecutan;

    tambin contiene los datos requeridos por stos. En la figura 1.8, la memoria seencuentra en las dos placas pequeas, y cada pequea placa de memoria contieneocho circuitos integrados. La memoria de la figura 1.10 est construida con chips

    FIGURA 1.6 Cada coordenada en el bfer de pantalla de la izquierda determina el som-

    breado de la correspondiente coordenada de la pantalla CRT de la derecha.El pxel (X0, Y0)contiene el patrn de bits 0011, el cual es un tono de gris ms claro en pantalla que el patrn de bits 1101 delpxel (X1, Y1).

    X0 X1

    Y0

    bfer de pantalla

    pantalla CRT

    0011

    1101

    Y1

    X0 X1

    Y0

    Y1

    Placa base:placa de pls-tico que contiene empa-quetados de circuitosintegrados o chips, inclu-

    yendo al procesador,cache, memoria y conec-tores para los dispositi-vos de E/S tales comoredes o discos.

    Circuito integrado:tam-bin llamado chip. Dispo-sitivo que combina desdedocenas a millones de tran-sistores.

    Memoria:rea de almace-namiento en la cual sealmacenan los programascuando se estn ejecutando

    y que contiene los datosque necesitan esos mismosprogramas.

    18 Captulo 1 Abstracciones y tecnologa de los computadores

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    38/65

    FIGURA 1.7 El porttil de la figura 1.5 por dentro. La caja delgada con la etiqueta blanca de la esquina izquierda es un disco duroSATA de 100GB, y la caja delgada metlica de la esquina derecha es un DVD. La batera se alojar en el hueco entre ellos. El hueco pequeoencima del hueco de la batera es para la memoria DIMM. La figura 1.8 muestra una visin ms cercana de los DIMMs que se insertan eneste porttil. En la parte superior de la batera y el DVD est la placa base, un circuito impreso que contiene la mayor parte de la electrnicadel computador. Los dos crculos delgados de la mitad superior son dos ventiladores con sus cubiertas. El procesador es e l rectngulo quepuede verse justo debajo del ventilador de la izquierda. Foto por gentileza de OtherWorldComputing.com

    Disco duro PlacabaseProcesador Ventiladorcon

    cubierta

    Espaciopara

    DIMMs dememoria

    Espaciopara

    bateras

    Ventiladorcon

    cubierta

    Lectorde DVD

    1.3 Bajo la cubierta 19

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    39/65

    DRAM. La DRAM es la memoria dinmica de acceso aleatorio (dynamic ran-dom access memory). Se usan conjuntamente varias DRAMs para contener lasinstrucciones y los datos de los programas. En contraste con las memorias de

    acceso secuencial, como las cintas magnticas, la parte RAM del trmino DRAMsignifica que los accesos a memoria toman el mismo tiempo independientementede la posicin de memoria que se lea.

    Elprocesador es la parte activa de la placa y se encarga de seguir las instrucciones deun programa al pie de la letra. Suma nmeros, comprueba nmeros, indica la activa-cin de dispositivos de E/S, etc. El procesador es el cuadrado grande que se encuentradebajo del ventilador y est cubierto por un disipador trmico, en la parte izquierda dela figura 1.7. A veces, al procesador se le llama CPU, porque el trmino suena ms

    oficial: unidad central de proceso (central processing unit, CPU).Adentrndonos an ms en el hardware, la figura 1.9 revela detalles del procesa-dor. El procesador comprende dos componentes principales: el camino de datos(datapath) y el control, la fuerza y el cerebro del procesador, respectivamente. Elcamino de datosrealiza las operaciones aritmticas. El controlindica al camino dedatos, a la memoria y a los dispositivos de E/S lo que deben hacer, de acuerdo con lavoluntad de las instrucciones del programa. El captulo 4 explica el camino de datos

    y el control para obtener un diseo con mejores prestaciones.

    Introducirse en las profundidades de cualquier componente del hardwaresupone comprender lo que hay en la mquina. Dentro del procesador hay otrotipo de memoria: la memoria cache. La memoria cachees una memoria pequea

    FIGURA 1.8 La memoria se aprecia con una vista cercana de la parte inferior del porttil.

    La memoria principal se aloja en una o ms pequeas tarjetas mostradas a la izquierda. El hueco para la baterase puede apreciar a la derecha. Los chips de DRAM se colocan en esas tarjetas (llamadas DIMM, dual inlinememory moduleso modulos de memoria en lnea duales) y se enchufan a los conectores. Foto por gentileza de

    OtherWorldComputing.com

    Memoria de accesoaleatorio dinmica(DRAM):memoria cons-

    truida como un circuitointegrado, que proveeacceso aleatorio a cual-quier posicin.

    DIMM (mdulo dememoria de dos lneas):pequea tarjeta que con-

    tiene chips DRAM enambas caras. Los SIMMstienen DRAMs en unasola cara.

    Unidad central de pro-ceso (CPU): tambin lla-mada procesador. Es laparte activa de un compu-tador; contiene los cami-

    nos de datos y el controlque suma y compruebanmeros, indica a los dis-positivos de E/S que se acti-ven, etc.

    Camino de datos:com-ponente del procesadorque ejecuta las operacionesaritmticas.

    Control:componente delprocesador que gobierna elcamino de datos, la memo-ria y los dispositivos de E/Ssegn a las instruccionesdel programa.

    Memoria cache:memo-ria rpida y pequea que

    acta como un bferparaotra memoria mayor yms lenta.

    20 Captulo 1 Abstracciones y tecnologa de los computadores

  • 7/21/2019 Estructura y diseo de computadores L A I N T E R F A Z S O F T W A R E / H A R D W A R E

    40/65

    y rpida que acta como un bferpara la memoria DRAM. (Esta definicin notcnica de cache es una buena forma de ocultar detalles que se vern posterior-

    mente.) La memoria cachese construye usando una tecnologa de memoria dife-rente, memoria de acceso aleatorio esttico (static random acces memory,SRAM). La SRAM es ms rpida pero menos densa, y por lo tanto, ms cara que laDRAM (vase captulo 5).

    Se observa fcilmente un aspecto comn en las descripciones tanto del soft-ware como del hardware: penetrar en las profundidades revela ms informacin,o a la inversa, los detalles de bajo nivel se ocultan para ofrecer un modelo mssimple a los niveles ms altos. El uso de estos niveles o abstraccioneses una tcni-

    ca fundamental para disear computadores muy complejos.Una de las abstracciones ms importantes es la interfaz entre el hardware

    y el nivel ms bajo del software. Por su importancia recibe un nombre espe-cial: arquitectura del repertorio de instrucciones (instruction set architec-ture), o simplemente arquitectura, de una mquina. La arquitectura delrepertorio de instrucciones incluye todo lo que los programadores puedannecesitar para construir un programa correcto en lenguaje mquina binario,incluidas las instrucciones, los dispositivos de E/S, etc. Tpicamente, el sis-

    tema operativo se encarga de realizar los detalles de las operaciones de E/S,de asignacin de memoria y de otras funciones de bajo nivel del sistema, demanera que los programadores de aplicaciones no necesitan preocuparse de

    FIGURA 1.9 Interior del chip del microprocesador AMD Barcelona. La parte izquierda es una microfotografa de un chip proce-sador AMD Barcelona y la parte derecha muestra los principales bloques del procesador. Este chip tiene 4 procesadores o ncleos. El micro-procesador del porttil de la figura 1.7 tiene dos ncleos, Intel Core 2 Duo.

    Cache

    L3

    compar-

    tida de

    2 MB

    Puente norte

    Ncleo 4 Ncleo 3

    Ncleo 2CacheL2 de

    512KB

    HT PHY, enlace 1

    FPU de 128 bits

    Cache L1