arquitectura de computadoras - behrooz parhami.pdf

576

Upload: jhefersonfernneytorrecillagalvis

Post on 26-Dec-2015

836 views

Category:

Documents


116 download

TRANSCRIPT

  • ARQUITECTURA DE COMPUTADORAS

    DE LOS MICROPROCESADORES A LAS SUPERCOMPUTADORAS

    Behrooz ParhamiUniversity of California, Santa Barbara

    Revisin tcnicaAlejandro Velzquez Mena

    Universidad Nacional Autnoma de Mxico

    MXICO BOGOT BUENOS AIRES CARACAS GUATEMALA LISBOA MADRID NUEVA YORK SAN JUAN SANTIAGO AUCKLAND LONDRES MILN MONTREAL NUEVA DELHI

    SAN FRANCISCO SO PAULO SINGAPUR SAN LUIS SIDNEY TORONTO

  • Director Higher Education: Miguel ngel Toledo CastellanosDirector editorial: Ricardo A. del Bosque AlaynEditor sponsor: Pablo Eduardo Roig Vzquez Editora de desarrollo: Ana Laura Delgado RodrguezSupervisor de produccin: Zeferino Garca Garca

    Traductor: Vctor Campos Olgun

    ARQUITECTURA DE COMPUTADORAS. De los microprocesadores a las supercomputadoras

    Prohibida la reproduccin total o parcial de esta obra,por cualquier medio, sin la autorizacin escrita del editor.

    DERECHOS RESERVADOS 2007 respecto a la primera edicin en espaol porMcGRAW-HILL/INTERAMERICANA EDITORES, S.A. DE C.V.A Subsidiary of The McGraw-Hill Companies, Inc.

    Edifi cio Punta Santa FeProlongacin Paseo de la Reforma 1015, Torre APiso 17, Colonia Desarrollo Santa Fe, Delegacin lvaro ObregnC.P. 01376, Mxico, D. F.Miembro de la Cmara Nacional de la Industria Editorial Mexicana, Reg. Nm. 736

    ISBN-13: 978-970-10-6146-6ISBN-10: 970-10-6146-2

    Traducido de la primera edicin de la obra: Computer Architecture: From Microprocessors To Supercomputers by Behrooz Parhami. Copyright 2005 by Oxford University Press, Inc. All rights reserved.ISBN-13: 978-0-19-515455-9 ISBN: 0-19-515455-X

    1234567890 09865432107

    Impreso en Mxico Printed in Mexico

  • UN VISTAZO A LA ESTRUCTURA

    Partes Captulos

    1. Antecedentes y motivacin 1. Circuitos digitales combinacionales 2. Circuitos digitales con memoria 3. Tecnologa de sistemas de computacin 4. Rendimiento de computadoras

    2. Arquitectura de conjunto de instrucciones 5. Instrucciones y direccionamiento 6. Procedimientos y datos 7. Programas en lenguaje ensamblador 8. Variaciones en el conjunto de instrucciones

    C

    P

    U

    3. La unidad aritmtica/lgica 9. Representacin de nmeros 10. Sumadores y ALU simples 11. Multiplicadores y divisores 12. Aritmtica de punto fl otante

    4. Ruta de datos y control

    13. Pasos de ejecucin de instrucciones 14. Sntesis de unidad de control 15. Ruta de datos encauzadas 16. Lmites del rendimiento de pipeline

    5. Diseo de sistemas de memoria

    17. Conceptos de memoria principal 18. Organizacin de memoria cach 19. Conceptos de memoria masiva 20. Memoria virtual y paginacin

    6. Entrada/salida e interfases

    21. Dispositivos de entrada/salida 22. Programacin de entrada/salida 23. Buses, ligas e interfases 24. Conmutacin conceptual e interrupciones

    7. Arquitecturas avanzadas

    25. Hacia un mayor rendimiento 26. Procesamientos vectorial y matricial 27. Multiprocesamiento lento de memoria compartida 28. Multicomputacin distribuida

  • CONTENIDO

    Prefacio xv

    PARTE UNO ANTECEDENTES Y MOTIVACIN 1

    1. Circuitos digitales combinacionales 31.1 Seales, operadores lgicos y compuertas 31.2 Funciones y expresiones booleanas 71.3 Diseo de redes de compuertas 81.4 Partes combinacionales tiles 111.5 Partes combinacionales programables 131.6 Estimaciones de temporizacin y de circuito 15Problemas 17Referencias y lecturas sugeridas 19

    2. Circuitos digitales con memoria 212.1 Latches, ip- ops y registros 212.2 Mquinas de estado nito 242.3 Diseo de circuitos secuenciales 252.4 Partes secuenciales tiles 282.5 Partes secuenciales programables 312.6 Relojes y temporizacin de eventos 32Problemas 34Referencias y lecturas sugeridas 37

    3. Tecnologa de sistemas de computacin 383.1 De los componentes a las aplicaciones 393.2 Sistemas de cmputo y sus partes 413.3 Generaciones de progreso 453.4 Tecnologas de procesador y memoria 483.5 Perifricos, I/O y comunicaciones 513.6 Sistemas de software y aplicaciones 54Problemas 56Referencias y lecturas sugeridas 58

    4. Rendimiento de computadoras 594.1 Costo, rendimiento y costo/rendimiento 594.2 De nicin de rendimiento de computadora 62

    vii

  • viii Contenido

    4.3 Mejora del rendimiento y ley de Amdahl 654.4 Medicin del rendimiento contra modelado 674.5 Informe del rendimiento de computadoras 724.6 Bsqueda de mayor rendimiento 74Problemas 76Referencias y lecturas sugeridas 80

    PARTE DOS ARQUITECTURA DE CONJUNTO DE INSTRUCCIONES 81

    5. Instrucciones y direccionamiento 835.1 Visin abstracta del hardware 835.2 Formatos de instruccin 865.3 Aritmtica simple e instrucciones lgicas 895.4 Instrucciones load y store 915.5 Instrucciones jump y branch 935.6 Modos de direccionamiento 97Problemas 99Referencias y lecturas sugeridas 102

    6. Procedimientos y datos 1036.1 Llamadas de procedimiento simples 1036.2 Uso de la pila para almacenamiento de datos 1066.3 Parmetros y resultados 1086.4 Tipos de datos 1106.5 Arreglos y apuntadores 1136.6 Instrucciones adicionales 116Problemas 120Referencias y lecturas sugeridas 122

    7. Programas en lenguaje ensamblador 1237.1 Lenguajes de mquina y ensamblador 1237.2 Directivas de ensamblador 1267.3 Seudoinstrucciones 1277.4 Macroinstrucciones 1307.5 Ligado y cargado 1317.6 Corrida de programas ensamblador 133Problemas 136Referencias y lecturas sugeridas 138

    8. Variaciones en el conjunto de instrucciones 1398.1 Instrucciones complejas 1398.2 Modos de direccionamiento alterno 1418.3 Variaciones en formatos de instruccin 145

  • Contenido ix

    8.4 Diseo y evolucin del conjunto de instrucciones 147 8.5 La dicotoma RISC/CISC 148 8.6 Dnde dibujar la lnea 151

    Problemas 154Referencias y lecturas sugeridas 156

    PARTE TRES LA UNIDAD ARITMTICA/LGICA 157

    9. Representacin de nmeros 1599.1 Sistemas numricos posicionales 1599.2 Conjuntos de dgitos y codi caciones 1629.3 Conversin de base numrica 1659.4 Enteros con signo 1669.5 Nmeros de punto jo 1699.6 Nmeros de punto otante 171Problemas 174Referencias y lecturas sugeridas 176

    10. Sumadores y ALU simples 17810.1 Sumadores simples 17810.2 Redes de propagacin de acarreo 18010.3 Conteo e incremento 18310.4 Diseo de sumadores rpidos 18510.5 Operaciones lgicas y de corrimiento 18810.6 ALU multifuncin 191Problemas 193Referencias y lecturas sugeridas 196

    11. Multiplicadores y divisores 19711.1 Multiplicacin corrimiento-suma 19711.2 Multiplicadores de hardware 20111.3 Multiplicacin programada 20411.4 Divisin corrimiento-resta 20611.5 Divisores de hardware 21011.6 Divisin programada 213Problemas 215Referencias y lecturas sugeridas 218

    12. Aritmtica con punto fl otante 21912.1 Modos de redondeo 21912.2 Valores y excepciones especiales 22412.3 Suma con punto otante 22612.4 Otras operaciones con punto otante 229

  • x Contenido

    12.5 Instrucciones de punto otante 23012.6 Precisin y errores resultantes 233Problemas 237Referencias y lecturas sugeridas 239

    PARTE CUATRO RUTA DE DATOS Y CONTROL 241

    13. Pasos de ejecucin de instrucciones 24313.1 Un pequeo conjunto de instrucciones 24413.2 La unidad de ejecucin de instrucciones 24613.3 Una ruta de datos de ciclo sencillo 24713.4 Bifurcacin y saltos 24913.5 Derivacin de las seales de control 25013.6 Rendimiento del diseo de ciclo sencillo 253Problemas 255Referencias y lecturas sugeridas 257

    14. Sntesis de unidad de control 25814.1 Implementacin multiciclo 25814.2 Ciclo de reloj y seales de control 26114.3 La mquina de control de estado 26414.4 Rendimiento del diseo multiciclo 26614.5 Microprogramacin 26714.6 Excepciones 271Problemas 273Referencias y lecturas sugeridas 276

    15. Rutas de datos encauzadas 27715.1 Conceptos de pipelining 27715.2 Atascos o burbujas encauzadas 28115.3 Temporizacin y rendimiento encauzado 28415.4 Diseo de rutas de datos encauzadas 28615.5 Control encauzado 28915.6 Pipelining ptimo 291Problemas 293Referencias y lecturas sugeridas 296

    16. Lmites del rendimiento de pipeline 29716.1 Dependencias y riesgos de datos 29716.2 Adelantamiento de datos 30016.3 Riesgos de la bifurcacin pipeline 30216.4 Prediccin de bifurcacin 30416.5 Pipelining avanzado 30616.6 Excepciones en una pipeline 309

  • Contenido xi

    Problemas 310Referencias y lecturas sugeridas 313

    PARTE CINCO DISEO DE SISTEMAS DE MEMORIA 315

    17. Conceptos de memoria principal 31717.1 Estructura de memoria y SRAM 31717.2 DRAM y ciclos de regeneracin 32017.3 Impactar la pared de memoria 32317.4 Memorias encauzada e interpolada 32517.5 Memoria no voltil 32717.6 Necesidad de una jerarqua de memoria 329Problemas 331Referencias y lecturas sugeridas 334

    18. Organizacin de memoria cach 33518.1 La necesidad de una cach 33518.2 Qu hace funcionar a una cach? 33818.3 Cach de mapeo directo 34118.4 Cach de conjunto asociativo 34218.5 Memoria cach y principal 34518.6 Mejoramiento del rendimiento cach 346Problemas 348Referencias y lecturas sugeridas 352

    19. Conceptos de memoria masiva 35319.1 Fundamentos de memoria de disco 35419.2 Organizacin de datos en disco 35619.3 Rendimiento de disco 35919.4 Caching de disco 36019.5 Arreglos de discos y RAID 36119.6 Otros tipos de memoria masiva 365Problemas 367Referencias y lecturas sugeridas 370

    20. Memoria virtual y paginacin 37120.1 Necesidad de la memoria virtual 37120.2 Traduccin de direccin en memoria virtual 37320.3 Translation lookaside buffer 37620.4 Polticas de sustitucin de pgina 37920.5 Memorias principal y masiva 38220.6 Mejora del rendimiento de la memoria virtual 383

  • xii Contenido

    Problemas 386Referencias y lecturas sugeridas 389

    PARTE SEIS ENTRADA/SALIDA E INTERFASES 391

    21. Dispositivos de entrada/salida 39321.1 Dispositivos y controladores de entrada/salida 39321.2 Teclado y ratn 39521.3 Unidades de presentacin visual 39721.4 Dispositivos de entrada/salida de copia impresa 40021.5 Otros dispositivos de entrada/salida 40421.6 Redes de dispositivos de entrada/salida 406Problemas 408Referencias y lecturas sugeridas 410

    22. Programacin de entrada/salida 41122.1 Rendimiento I/O y benchmarks 41122.2 Direccionamiento entrada/salida 41322.3 I/O calendarizado: sondeo 41622.4 I/O con base en peticin: interrupciones 41722.5 Transferencia de datos I/O y DMA 41822.6 Mejora del rendimiento I/O 421Problemas 425Referencias y lecturas sugeridas 428

    23. Buses, ligas e interfases 42923.1 Ligas intra e intersistema 42923.2 Buses y su presentacin 43323.3 Protocolos de comunicacin de bus 43523.4 Arbitraje y rendimiento de bus 43823.5 Fundamentos de interfases 44023.6 Estndares en la creacin de interfases 441Problemas 445Referencias y lecturas sugeridas 448

    24. Conmutacin contextual e interrupciones 44924.1 Peticiones al sistema por I/O 44924.2 Interrupciones, excepciones y trampas 45124.3 Manejo de interrupciones simples 45324.4 Interrupciones anidadas 45624.5 Tipos de conmutacin contextual 45824.6 Hilos y multihilos 460Problemas 462Referencias y lecturas sugeridas 464

  • Contenido xiii

    PARTE SIETE ARQUITECTURAS AVANZADAS 465

    25. Hacia un mayor rendimiento 46725.1 Tendencias de desarrollo pasadas y actuales 46725.2 Extensiones ISA impulsadas por rendimiento 47025.3 Paralelismo a nivel de instruccin 47325.4 Especulacin y prediccin del valor 47625.5 Aceleradores de hardware de propsito especial 47925.6 Procesamientos vectorial, matricial y paralelo 482Problemas 485Referencias y lecturas sugeridas 488

    26. Procesamiento vectorial y matricial 49026.1 Operaciones sobre vectores 49126.2 Implementacin de procesador vectorial 49326.3 Rendimiento del procesador vectorial 49726.4 Sistemas de control compartido 49926.5 Implementacin de procesador matricial 50126.6 Rendimiento de procesador matricial 503Problemas 504Referencias y lecturas sugeridas 507

    27. Multiprocesamiento de memoria compartida 50827.1 Memoria compartida centralizada 50827.2 Cachs mltiples y coherencia de cach 51227.3 Implementacin de multiprocesadores simtricos 51427.4 Memoria compartida distribuida 51727.5 Directorios para gua de acceso a datos 51927.6 Implementacin de multiprocesadores asimtricos 521Problemas 524Referencias y lecturas sugeridas 527

    28. Multicomputacin distribuida 52828.1 Comunicacin mediante paso de mensajes 52828.2 Redes de interconexin 53228.3 Composicin y enrutamiento de mensajes 53528.4 Construccin y uso de multicomputadoras 53728.5 Computacin distribuida basada en red 54028.6 Computacin en retcula y ms all 542Problemas 543Referencias y lecturas sugeridas 547

    ndice 548

  • PREFACIO

    hay una tendencia cuando en realidad comienzas a aprender algo acerca de alguna cosa: no querer escribir respecto de ello sino ms bien seguir aprendiendo en relacin con ello a menos que seas muy egosta, lo cual, desde luego, explica muchos libros.

    Ernest Hemingway, Death in the Afternoon

    El contexto de la arquitectura de computadoras

    La arquitectura de computadoras constituye un rea de estudio que se refi ere a las computadoras digi-tales en la interfaz entre hardware y software. Aqulla est mas orientada al hardware que los sistemas de cmputo, un rea que usualmente se cubre en los cursos acadmicos con el mismo nombre en las materias de ciencias o ingeniera de la computacin, y se preocupa ms por el software que los campos conocidos como diseo computacional y organizacin de computadoras. No obstante, la materia es bastante fl uida y vara enormemente de un texto o curso a otro, en su orientacin y cobertura. Esto ltimo explica, en parte, por qu existen tantos libros diferentes acerca de arquitectura de computado-ras y por qu, incluso, otro texto en la materia puede ser til.

    En este contexto, la arquitectura de computadoras abarca un conjunto de ideas fundamentales que se aplican al diseo o comprensin de cualquier computadora, desde los ms pequeos microproce-sadores anidados que controlan los aparatos electrodomsticos, cmaras y muchos otros dispositivos (por ejemplo, mquinas personales, servidores y complejos sistemas de computadoras) hasta las ms poderosas supercomputadoras que se encuentran slo en (y son costeables por) los grandes centros de datos o en los principales laboratorios cientfi cos. Tambin se ramifi ca en otras reas ms avanzadas, cada una con su propia comunidad de investigadores, revistas especializadas, simposios y, desde lue-go, lenguaje tcnico. Los diseadores de computadoras no deben dudar en familiarizarse con todo el campo para ser capaces de usar la variedad de mtodos disponibles con el propsito de disear siste-mas rpidos, efi cientes y poderosos. Menos obvio es el hecho de que incluso los simples usuarios de computadoras se pueden benefi ciar de las ideas fundamentales y de la apreciacin de los conceptos ms avanzados en la arquitectura de computadoras.

    Un tema comn en arquitectura de computadoras consiste en enfrentar su complejidad. Gran parte de sta surge de nuestro deseo de hacer todo tan rpido como sea posible. Algunas de las tcnicas resultantes, como la ejecucin predictiva y especulativa, estn peleadas con otras metas del diseo de sistemas que incluyen bajo costo, compacticidad, ahorro de energa, poco tiempo para entrar al mer-cado y comprobacin. La constante problemtica de tales requerimientos confl ictivos propicia que la arquitectura de computadoras represente un prspero e interesante campo de estudio. Adems de lo anterior, se encuentran las fuerzas opositoras de innovacin y compatibilidad con las inversiones en habilidades, sistemas y aplicaciones.

    mbito y caractersticas

    Este libro de texto, que en realidad constituye una prolongacin de las notas de clase que el autor desa-rroll y mejor a lo largo de muchos aos, cubre las ideas fundamentales de la arquitectura de compu-tadoras con cierta profundidad y ofrece muchos conceptos avanzados que se pueden seguir en cursos de nivel superior, como los de supercomputadoras, procesamiento paralelo y sistemas distribuidos.

    xv

  • Seis caractersticas clave apartan a este libro de los textos introductorios de la competencia acerca de arquitectura de computadoras:

    a) Divisin del material en captulos con tamao adecuado para clases: En el enfoque docente del autor, una clase representa un mdulo autocontenido con vnculos a clases anteriores e indicado-res hacia lo que se estudiar en lo futuro. Cada clase, con duracin de una o dos horas, tiene un tema o ttulo y procede desde la motivacin hacia los detalles y la conclusin.

    b) Gran cantidad de problemas signifi cativos: Al fi nal de cada de captulo se ofrecen al menos 16 problemas, que adems de estar bien pensados, muchos de ellos probados en clase, clarifi can el material del captulo, ofrecen nuevos ngulos de vista, vinculan el material del captulo con temas en otros captulos o introducen conceptos ms avanzados.

    c) nfasis tanto en la teora subyacente como en los diseos reales: La habilidad para enfrentar la complejidad requiere tanto una profunda comprensin de los puntales de la arquitectura de com-putadoras como de ejemplos de diseos que ayudan a clarifi car la teora. Estos ltimos tambin proporcionan bloques constructores para sntesis y puntos de referencia con el fi n de realizar comparaciones de costo-rendimiento.

    d) Vinculacin de la arquitectura de computadoras con otras reas de la computacin: La arqui-tectura de computadoras se nutre con otros subcampos de diseo de sistemas de cmputo. Tales vnculos, desde los obvios (arquitectura de conjunto de instrucciones frente al diseo de compi-lador) hasta los sutiles (interjuego de la arquitectura con confi abilidad y seguridad), se explican a todo lo largo del libro.

    e) Amplia cobertura de tpicos importantes: El texto cubre casi todos los temas fundamentales de la arquitectura de computadoras; en este sentido, ofrece una visin equilibrada y completa de esta rea. Los ejemplos de material que no se encuentran en muchos otros textos, incluyen cober-tura detallada de aritmtica computacional (captulos 9-12) y computacin de alto rendimiento (captulos 25-28).

    f ) Terminologa/notacin unifi cada y consistente: Se hace gran esfuerzo por usar terminologa/notacin consistente a lo largo del texto. Por ejemplo, r siempre representa la base de la repre-sentacin numrica, k el ancho de palabra y c el acarreo (carry). De igual modo, los conceptos y estructuras se identifi can de manera consistente con nombres nicos bien defi nidos.

    Resumen de temas

    Las siete partes de este libro, cada una compuesta con cuatro captulos, se escribieron con las siguien-tes metas:

    La parte 1 establece las etapas, proporciona contexto, repasa algunos de los temas que se consideran como prerrequisito y brinda un adelanto de lo que est por venir en el resto del libro. Se incluyen dos captulos de repaso acerca de circuitos y componentes digitales, una discusin de tipos de sistemas de cmputo, un panorama de la tecnologa de computacin digital y una perspectiva detallada en el rendimiento de los sistemas de cmputo.

    La parte 2 sita la interfase del usuario con hardware de computadora, tambin conocida como arquitectura con conjunto de instrucciones (ISA, por sus siglas en ingls). En esta tesitura, se describe el conjunto de instrucciones de los miniMIPS (una mquina simplifi cada, aunque muy realista, para la que existe material de referencia abierta y herramientas de simulacin); asimismo, se incluye un captulo acerca de variaciones en ISA (por ejemplo, RISC frente a CISC) y negociaciones asociadas costo-rendimiento.

    xvi Prefacio

  • Las siguientes dos partes cubren la unidad de procesamiento central (CPU). La parte 3 describe con cierto detalle la estructura de las unidades aritmticas/lgicas (ALU, por sus siglas en ingls). Se incluyen discusiones de representaciones de nmeros fi jos y de punto fl otante, diseo de sumadores de alta rapidez, operaciones de corrimiento y lgicas, y hardware multiplicadores/divisores. Tambin se discuten aspectos de implementacin y peligros de la aritmtica de punto fl otante.

    La parte 4 se dedica a las rutas de datos y circuitos de control que comprenden los CPU modernos. Si se comienza con los pasos de ejecucin de instrucciones, en consecuencia se derivan los componen-tes necesarios y los mecanismos de control. A este material le sigue una exposicin de estrategias de diseo de control, el uso de una trayectoria de datos encauzados para mejorar el rendimiento y varias limitaciones de encauzamiento que son resultado de dependencias de datos y control.

    La parte 5 plantea los sistemas de memoria. Se describen las tecnologas en uso para las memorias primarias y secundarias, junto con sus fortalezas y limitaciones. Se muestra cmo el uso de memorias cach efectivamente supera la brecha de rapidez entre el CPU y la memoria principal. De igual modo, se explica el uso de memoria virtual para brindar la ilusin de una memoria principal vasta.

    La parte 6 trata con tpicos de entrada/salida (input/output, I/O) e interfases. A una discusin de tecnologas de dispositivos I/O le siguen mtodos de programacin I/O y los papeles de los buses y enlaces (incluidos estndares) en comunicacin I/O e interfases. Tambin se cubre lo que se refi ere a elementos de procesos y conmutacin contextual, para el manejo de excepciones y la computacin multihilos.

    La parte 7 introduce arquitecturas avanzadas. Se presenta un panorama de estrategias de mejora del rendimiento, ms all de un simple encauzamiento, y se citan ejemplos de aplicaciones que requieren mayor rendimiento. El libro concluye con estrategias de diseo y ejemplos de arquitecturas con base en procesamiento vectorial o matricial, multiprocesamiento y multicomputacin.

    Indicaciones acerca de cmo usar el libro

    Para uso en el saln de clase, los temas en cada captulo de este texto se pueden cubrir en una clase de 1-2 horas de duracin. De acuerdo con su propia experiencia, el autor us los captulos principalmente para clases de 1.5 horas, durante dos veces a la semana en un trimestre con duracin de diez semanas, y omiti o combin algunos captulos para ajustar el material a las 18-20 clases disponibles. Sin embargo, la estructura modular del texto se inclina a s misma hacia otros formatos de clase, autoestudio o repaso del campo por los practicantes. Para los ltimos dos casos, los lectores pueden ver cada captulo como una unidad de estudio (o sea, para una semana) en lugar de verlos como una clase. En este orden de ideas, todos los temas en cada captulo se deben concluir antes de avanzar hacia el siguiente captulo. Sin embargo, si se tienen pocas horas de clase disponibles, entonces se pueden omitir algunas de las subsec-ciones ubicadas al fi nal de los captulos o introducirse slo en trminos de motivaciones e ideas clave.

    Para cada captulo se proporcionan problemas de complejidad variable, desde los ejemplos o ejer-cicios numricos directos hasta estudios o miniproyectos ms demandantes. Estos problemas forman parte integral del libro y no se agregaron como ocurrencia tarda con el propsito de hacer el libro ms atractivo para su uso como texto. Se incluyen 491 problemas. Si se suponen dos clases por semana, se puede asignar tarea en forma semanal o quincenal, y cada asignacin tendr la cobertura especfi ca de la respectiva media parte (dos captulos) o parte completa (cuatro captulos) de su ttulo.

    Al fi nal de cada captulo se mencionan referencias de artculos fundamentales acerca de arquitec-tura de computadoras, ideas de diseo clave e importantes contribuciones en la investigacin actual. Estas referencias ofrecen buenos puntos de partida para realizar estudios a profundidad o para preparar ensayos/proyectos fi nales. Asimismo, aparecen nuevas ideas en esta rea en artculos que se presentan cada ao en el International Symposium on Computer Architecture [ISCA]. Otras reuniones tcnicas

    Prefacio xvii

  • de inters incluyen el Symposium on High-Performance Computer Architecture [HPCA, por sus siglas en ingls], el International Parallel and Distributed Processing Symposium [IPDP] y la Internatio-nal Conference on Parallel Processing [ICPP]. Las revistas especializadas relevantes incluyen IEEE Transactions on Computers [TrCo], IEEE Transactions on Parallel and Distributed Systems [TrPD], Journal of Parallel and Distributed Computing [JPDC] y Communications of the ACM [CACM]. Otros artculos generales y temas de amplio inters aparecen en IEEE Computer [Comp], IEEE Micro [Micr] y ACM Computing Surveys [CoSu].

    Reconocimientos

    Este texto, Arquitectura de computadoras: De los microprocesadores a las supercomputadoras, repre-senta una prolongacin de las notas de clase que el autor usa para el curso de licenciatura de divisin superior ECE 154: Introduccin a la arquitectura de computadoras, en la Universidad de California, Santa Brbara, y, en forma rudimentaria, en muchas otras instituciones antes de 1988. El texto se benefi ci enormemente de importantes observaciones, curiosidad y aliento de muchos estudiantes en estos cursos. Extiendo un sincero agradecimiento a todos ellos! Agradezco tambin a [los editores de la edicin original en ingls] Peter Gordon, quien inici el proyecto editorial, a Danielle Christensen, quien lo gui hasta su fi nalizacin, y a Karen Shapiro, quien dirigi hbilmente el proceso de edicin. Por ltimo, agradezco enormemente el otorgamiento de permiso del Dr. James R. Larus, de Microsoft Research para usar sus simuladores SPIM.

    Referencias generales y lecturas

    La lista que viene a continuacin tiene referencias de dos tipos: 1) libros que han infl uido enormemen-te al texto actual, y 2) fuentes de referencia general para estudios e investigacin a profundidad. Los libros y otros recursos relevantes para captulos especfi cos se citan en las listas de referencias al fi nal de los captulos.[Arch] La pgina WWW de arquitectura de computadoras, recurso Web mantenido por el Departamento

    de Ciencias de la Computacin, Universidad de Wisconsin, Madison, tiene un cmulo de informa-cin acerca de organizaciones, grupos, proyectos, publicaciones, eventos y personas relacionadas con la arquitectura: http://www.cs.wisc.edu/~arch/www/index.html

    [CACM] Communications of the ACM, revista especializada de la Association for Computing Machinery.[Comp] IEEE Computer, revista tcnica de la IEEE Computer Society.[CoSu] Computing Surveys, revista especializada de la Association for Computing Machinery.[Henn03] Hennessy, J. L. y D. A. Patterson, Computer Architecture: A Quantitative Approach, Morgan Kau-

    fmann, 3a. ed., 2003.[HPCA] Proceedings of the Symposium(s) on High-Performance Computer Architecture, patrocinado por el

    IEEE. La 10a. HPCA se realiz del 14 al 18 de febrero de 2004 en Madrid, Espaa.[ICPP] Proceedings of the International Conference(s) on Parallel Processing, se lleva a cabo anualmente

    desde 1972. La 33a. ICPP se realiz del 15 al 18 de agosto de 2004 en Montreal, Canad.[IPDP] Proceedings of the International Parallel and Distributed Processing Symposium(s), que se form

    en 1998 por la fusin del IPPS (realizado anualmente desde 1987) y el SPDP (realizado anualmente desde 1989). El ltimo IPDPS se realiz del 26 al 30 de abril de 2004 en Santa Fe, Nuevo Mxico.

    [ISCA] Proceedings of the International Symposium(s) on Computer Architecture, se organiza anualmente desde 1973, por lo general en mayo o junio. El 31 ISCA se llev a cabo del 19 al 23 de junio de 2004 en Munich, Alemania.

    xviii Prefacio

  • [JPDC] Journal of Parallel and Distributed Computing, publicado por Academic Press.[Micr] IEEE Micro, revista tcnica publicada por la IEEE Computer Society.[Muel00] Mueller, S. M. y W. J. Paul, Computer Architecture: Complexity and Correctness, Springer, 2000.[Patt98] Patterson, D. A. y J. L. Hennessy, Computer Organization and Design: The Hardware/Software

    Interface, Morgan Kaufmann, 2a. ed., 1998.[Rals93] Ralston, A. y E. D. Reilly (eds.), Encyclopedia of Computer Science, Van Nostrand Reinhold, 3a.

    ed., 1993.[Siew82] Siewiorek, D. P., C. G. Bell y A. Newell, Computer Structures: Principles and Examples, McGraw-

    Hill, 1982.[Sohi98] Sohi, G. (ed.), 25 Years of the International Symposia on Computer Architecture: Selected Papers,

    ACM Press, 1998.[Stal03] Stallings, W., Computer Organization and Architecture, Prentice Hall, 6a. ed., 2003.[Swar76] Swartzlander, E. E., Jr (ed.), Computer Design Development: Principal Papers, Hayden, 1976.[TrCo] IEEE Trans. Computers, revista pubicada por la IEEE Computer Society.[TrPD] IEEE Trans. Parallel and Distributed Systems, revista publicada por IEEE Computer Society.[Wilk95] Wilkes, M. V., Computing Perspectives, Morgan Kaufmann, 1995.

    Prefacio xix

  • 1

    ANTECEDENTES Y MOTIVACINLa arquitectura es el juego aprendido, correcto y magn co, de las formas ensambladas en la luz.

    LeCorbusier

    Creo que el futuro arquitecto de computadoras es un arquitecto de sistemas, no simplemente un arquitecto de procesador; de modo que uno debe conjuntar tecnologa de software, aplicaciones de sistemas, aritmtica, todo en un sistema complejo que tenga un comportamiento estadstico que no sea analizado inmediata o simplemente...

    Michael J. Flynn, viendo hacia adelante, circa 1998

    TEMAS DE ESTA PARTE

    1. Circuitos digitales combinacionales2. Circuitos digitales con memoria3. Tecnologa de sistemas de computacin4. Rendimiento de computadoras

    La arquitectura de computadoras abarca un conjunto de ideas centrales aplicables al diseo o com-prensin de virtualmente cualquier computadora digital, desde los ms pequeos sistemas anida-dos hasta las ms grandes supercomputadoras. La arquitectura de computadoras no es slo para dise-adores de computadoras; incluso los simples usuarios se benefi cian de un fi rme asidero de las ideas centrales y de una apreciacin de los conceptos ms avanzados en este campo. Ciertas realizaciones clave, como el hecho de que un procesador de 2x GHz no necesariamente es el doble de rpido que un modelo de x GHz, requieren una capacitacin bsica en arquitectura de computadoras.

    Esta parte comienza con la revisin de los componentes de hardware usados en el diseo de cir-cuitos digitales y subsistemas. Los elementos combinaciones, incluidos compuertas, multiplexores, demultiplexores, decodifi cadores y codifi cadores, se cubren en el captulo 1, mientras que los circuitos secuenciales, ejemplifi cados por archivos de registro y contadores, constituyen el tema del captulo 2. En el captulo 3, se presenta un panorama de los desarrollos en tecnologa de computacin y su estado actual. A esto sigue, en el captulo 4, una discusin del rendimiento absoluto y relativo de los sistemas de cmputo, acaso el captulo individual ms importante, pues monta el escenario para los mtodos de mejoramiento de rendimiento que se presentarn a lo largo del resto del libro.

    PARTE UNO

  • CAPTULO 1CIRCUITOS DIGITALESCOMBINACIONALES

    Solamos pensar que si conocamos uno, conocamos dos, porque uno y uno son dos. Ahora encontramos que debemos aprender muchas ms cosas acerca del y.

    Sir Arthur Eddington

    Este producto contiene minsculas partculas cargadas elctricamente, que se mueven a velocidades superiores a los 500 millones de millas por hora. Manjese con extremo cuidado.

    Propuesta de etiqueta de advertencia acerca de la verdad en el producto, colocada en todos los sistemas digitales (fuente desconocida)

    TEMAS DEL CAPTULO

    1.1 Seales, operadores lgicos y compuertas1.2 Funciones y expresiones booleanas1.3 Diseo de redes de compuertas1.4 Partes combinacionales tiles1.5 Partes combinacionales programables1.6 Estimaciones de temporizacin y de circuito

    El inters por estudiar arquitectura de computadoras requiere de familiaridad con el diseo digital; en este sentido, se supone que el lector la tiene. La cpsula de revisin que se presenta en ste y el captulo siguiente tienen la intencin de refrescar la memoria del lector y ofrecerle una base de apoyo para que comprenda la terminologa y los diseos en el resto del libro. En este captulo se revisarn algunos conceptos clave de los circuitos digitales combinacionales (sin memoria), tambin se introducen algu-nos componentes tiles que se encuentran en muchos diagramas de este libro. Los ejemplos incluyen buffers tres estados (regulares o de inversin), multiplexores, decodifi cadores y codifi cadores. Esta re-visin contina en el captulo 2, que trata acerca de los circuitos digitales secuenciales (con memoria). Los lectores que tengan problemas para comprender el material de estos dos captulos, debern consul-tar cualquiera de los libros de diseo lgico que se incluyen como referencias al fi nal del captulo.

    1.1 Seales, operadores lgicos y compuertas

    Todos los elementos de informacin en las computadoras digitales, incluidas las instrucciones, nme-ros y smbolos, se codifi can como seales electrnicas que casi siempre tienen dos valores. Aun cuan-do las seales multivaluadas y los circuitos lgicos asociados son accesibles y se usan ocasionalmente,

    3

  • 4 Captulo 1 / Circuitos digitales combinacionales

    las computadoras digitales modernas son predominantemente binarias. Las seales binarias se pueden representar mediante la presencia o ausencia de alguna propiedad elctrica como voltaje, corriente, campo o carga. En este libro los dos valores de una seal binaria se referirn como 0 o 1. Estos valores pueden representar los dgitos de un nmero con base 2 en la forma natural o se usan para de-notar estados (encendido/apagado), condiciones (falso/verdadero), opciones (trayecto A/trayecto B), etc. La asignacin de 0 y 1 a estados binarios o condiciones es arbitraria, pero es ms comn que el 0 represente apagado o falso y el 1 corresponda a encendido o verdadero. Cuando las seales binarias se representen mediante voltaje alto/bajo, la asignacin de voltaje alto a 1 conduce a lgica positiva y lo opuesto se considera como lgica negativa.

    Los operadores lgicos representan abstracciones para especifi car transformaciones de seales bina-rias. Existen 22 4 posibles operadores de entrada sencilla, porque la tabla de verdad de determinado operador tiene dos entradas (correspondientes a que la entrada sea 0 o 1) y cada entrada se puede llenar con 0 o 1. Un operador de dos entradas con entradas binarias se puede defi nir en 24 16 formas dife-rentes, dependiendo de si produce una salida 0 o 1 para cada una de las cuatro posibles combinaciones de valores de entrada. La fi gura 1.1 muestra el operador de entrada sencilla conocido como NOT (com-plemento o inversor) y tres de los operadores de dos entradas de uso ms comn: AND, OR y XOR (OR exclusiva). Para cada uno de estos operadores se proporciona el signo que se usa en las expresiones l-gicas y la forma alterna que favorecen los libros de diseo lgico. En la fi gura 1.1 se destacan los signos de operador usados en dichos libros. En particular, en este texto se usar para OR en lugar del ms comn , pues tambin se tratar mucho acerca de la suma y, de hecho, a veces la suma y OR se usa-rn en el mismo prrafo o diagrama. Por otra parte, para AND la simple yuxtaposicin de los operandos no propiciar ningn problema, pues AND es idntico a multiplicacin para las seales binarias.

    La fi gura 1.1 tambin relaciona los operadores lgicos con operadores aritmticos. Por ejemplo, complementar o invertir una seal x produce 1 x. Puesto que tanto AND como OR son asociativas, lo que signifi ca que (xy)z (yz) y (x y) z = x (y z), dichos operadores se pueden defi nir con ms de dos entradas, sin causar ambigedad acerca de sus salidas. Adems, como consecuencia de que el smbolo grfi co para NOT consiste de un tringulo que representa la operacin identidad (o ninguna operacin en absoluto) y una pequea burbuja que signifi ca inversin, los diagramas lgicos se pue-den representar de manera simple y menos confusa si se ponen burbujas de inversin en las entradas o salidas de las compuertas lgicas. Por ejemplo, una compuerta AND y un inversor conectado a su sali-da se pueden fusionar en una sola compuerta NAND, que se dibuja como una compuerta AND con una

    Figura 1.1 Algunos elementos bsicos de los circuitos lgicos digitales. Se destacan los signos de operador usados en este libro.

    ORNOTNombre XORAND

    Smbolo grfico

    Signo de operador y alternativa(s)

    Salida 1 ssi (si y slo si)1:

    x

    x o xxy

    x ^ y x y

    x y

    Entrada es 0 Ambas entradas son 1

    Al menos unaentrada es 1

    Entradasdiferentes

    Expresin aritmtica

    1 x x y o xy x y xy x y 2xy

    x y

    x y^

  • 1.1 Seales, operadores lgicos y compuertas 5

    OR NAND NOR XNORAND

    burbuja en su lnea de salida. De igual modo, las compuertas se pueden defi nir como NOR y XNOR (fi gura 1.2). Las burbujas tambin se pueden colocar en las entradas de una compuerta, ello conduce a la representacin grfi ca de operaciones como x y z con un smbolo de compuerta.

    Muchas de las variables en un programa reciben nombre, el nombre de una seal lgica se debe escoger con cuidado para expresar informacin til acerca del papel de dicha seal. En lo posible se evitarn los nombres o muy cortos o muy largos. A una seal de control cuyo valor es 1 se le refi ere como postulada, mientras que una seal con valor 0 no es postulada. Postular una seal de control constituye una forma usual de propiciar una accin o evento. Si los nombres de seal se eligen cuida-dosamente, una seal denominada sub quiz provoque que se realice una operacin de sustraccin cuando se postule, mientras que una seal atada de tres bits oper codifi car la realizacin de una de ocho posibles operaciones por alguna unidad. Cuando la no postulacin de una seal provoca un evento, el nombre de aqulla aparecer en forma de complemento para dar claridad; por ejemplo, la seal add, cuando no est postulada, puede hacer que la suma se realice. Tambin es posible aplicar un nombre, como addsub, para que una seal cause dos diferentes acciones segn su valor.

    Si una entrada de una compuerta AND de dos entradas se visualiza como seal de control y la otra como seal de datos, una signifi car que la postulacin de la seal de control permite que la seal de datos se propague a la salida, mientras que la no postulacin de la seal de control fuerza a la salida a 0, independientemente de los datos de entrada (fi gura 1.3). Por ende, una compuerta AND puede actuar como un interruptor o vlvula de datos controlada por una seal habilitacin e o paso. Un me-canismo alterno para este propsito, que tambin se muestra en la fi gura 1.3, representa un buffer tres estados cuya salida es igual a la entrada de datos x cuando la seal de control e se postula y supone un

    Figura 1.2 Compuertas con ms de dos entradas o con seales invertidas en la entrada o salida.

    Figura 1.3 Una compuerta AND y un buffer tres estados pueden actuar como interruptores o vlvulas controladas. Un buffer de inversin es similar a una compuerta NOT.

    a) Compuerta AND para transferencia controlada

    c) Modelo de interruptor AND

    b) Buffer tres estados

    e

    ex0

    1

    0x

    d) Modelo de buffer tres estados

    1x

    e

    Sin datos o x

    0

    e

    Entrada de datos

    Entrada de datos

    Salida de datos

    xx o 0

    Seal de habilitacin/paso

    xSalida de datos x o mayor impedancia

    Seal de habilitacin/pasoe

  • 6 Captulo 1 / Circuitos digitales combinacionales

    x

    ex

    ySalida de datos (x, y, z o 0)

    ey

    z

    ez

    a) Alambrado OR de trminos producto

    ex

    ey

    ez

    x

    y Salida de datos(x, y, z o altaimpedancia)

    z

    b) Alambrado OR de salidas tres estados

    valor indeterminado (alta impedancia en trminos elctricos) cuando e no es postulada. Un buffer tres estados asla efectivamente la salida de la entrada siempre que la seal de control no se postule. Una compuerta XOR con un control y una seal de datos se puede visualizar como un inversor controlado que invierte los datos si su control se postula y queda, de otro modo, invariable.

    Las salidas de varios interruptores AND, buffer tres estados o de inversin se pueden conectar unos a otros para una funcin OR implcita o alambrada. De hecho, una aplicacin primaria de los buffers tres estados consiste en conectar un nmero importante de fuentes de datos (como celdas de memo-ria) a una lnea comn de datos a travs de la que viajan los datos hacia un receptor. En la fi gura 1.4, cuando slo una de las seales de habilitacin se postula, los datos correspondientes pasan a travs y prevalecen en el lado de salida. Cuando no se postula seal de habilitacin, entonces la salida ser 0 (para compuertas AND) o alta impedancia (para buffers tres estados). Cuando se postula ms de una seal de habilitacin, la OR lgica de las entradas de datos asociados prevalecen en el lado de salida, aunque esta situacin se evita con frecuencia.

    De manera recurrente se usa un arreglo de compuertas idnticas para combinar haces de seales. Para bosquejar tal arreglo, en el texto se dibuja slo una compuerta y se indica, mediante una marca gruesa y un entero junto a ella, cuntas seales o compuertas se involucran. Por ejemplo, la fi gura 1.5a muestra la operacin NOR en lgica de bits realizada en dos haces de ocho bits. Si los haces de entrada son x y y y el haz de salida z, entonces esto equivale a hacer zi (xi yi) para cada i. De igual modo, se puede tener un arreglo de 32 interruptores AND, todos unidos a la misma seal Habilitador, para controlar el fl ujo de una palabra de datos de 32 bits desde el lado de entrada hacia el lado de salida (fi gura 1.5b). Como ejemplo fi nal, se puede usar un arreglo de k compuertas XOR para invertir todos los bits en un haz de k bits siempre que Compl se postule (fi gura 1.5c).

    Figura 1.5 Arreglos de compuertas lgicas representadas por el smbolo de una sola compuerta.

    Figura 1.4 El alambrado OR permite unir varias seales controladas.

    a) Ocho compuertas b) 32 compuertas ANDNOR

    c) k compuertas XOR

    32

    Habilitador

    32k

    k

    Compl8

    88

  • Siete entradas Tres salidas

    Lnea # spalanca c25 c10 achicle abarra pchicle pbarra rmonedas rchicle rbarra

    1 0 x x x x x x 0 0 02 1 0 0 x x x x x 0 03 1 0 1 x x x x 1 0 04 1 1 0 x x x x 1 0 05 1 1 1 x x 0 0 1 0 06 1 1 1 x x 1 1 1 0 07 1 1 1 x 0 0 1 1 0 x8 1 1 1 x 1 0 1 0 0 19 1 1 1 0 x 1 0 1 x 010 1 1 1 1 x 1 0 0 1 0

    1.2 Funciones y expresiones booleanas

    Una seal, que puede ser 0 o 1, representa una variable booleana. Una funcin booleana de n varia-bles depende de n variables booleanas y produce un resultado en {0, 1}. Las funciones booleanas son de inters porque una red de compuertas lgicas con n entradas y una salida implementa una funcin booleana de n variables. Existen muchas formas para especifi car funciones booleanas.

    a) Una tabla de verdad constituye una lista de los resultados de la funcin para todas las combina-ciones de valores de entrada. En este sentido, la tabla de verdad para una funcin booleana de n variables tiene n columnas de entrada, una columna de salida y 2n renglones. Asimismo, se le pue-de usar con m columnas de salida para especifi car m funciones booleanas de las mismas variables a la vez (tabla 1.1). Una entrada del tipo no importa x en una columna de salida signifi ca que el resultado de la funcin es de inters en dicho rengln, acaso porque dicha combinacin de valores de entrada no se espera que surja alguna vez. Una x en una columna de entrada signifi ca que el resultado de la funcin no depende del valor de la variable particular involucrada.

    b) Una expresin lgica se hace con variables booleanas, operadores lgicos y parntesis. En ausencia de estos ltimos, NOT tiene preeminencia sobre AND, que a la vez la tiene sobre OR/XOR. Para una asignacin especfi ca de valores a las variables, una expresin lgica se puede evaluar para pro-ducir un resultado booleano. Las expresiones lgicas se pueden manipular con el uso de leyes del lgebra booleana (tabla 1.2). Usualmente, la meta de este proceso es obtener una expresin lgica

    TABLA 1.1 Tres funciones booleanas de siete variables especifi cadas en una tabla de verdad compacta con entradas del tipo no importa en las columnas de entrada y salida.

    1.2 Funciones y expresiones booleanas 7

    Nombre de la ley Versin OR Versin AND

    Identidad x 0 = x x 1 = xUno/Cero x 1 = 1 x 0 = 0Idempotencia x x = x xx = xInverso x x = 1 xx = 0Conmutativa x y = y x xy = yxAsociativa (x y) z = x ( y z) ( xy)z = x ( yz)Distributiva x ( yz) = (x y)( x z) x ( y ? z) = (xy) (xz)De DeMorgan (x y) = x y (xy) = x y

    TABLA 1.2 Leyes (identidades bsicas) del lgebra booleana.

  • 8 Captulo 1 / Circuitos digitales combinacionales

    equivalente que en alguna forma es ms simple o ms adecuada para la realizacin en hardware.Una expresin lgica que se forma al operar OR varios trminos AND representa una forma de suma (lgica) de productos, por ejemplo, xy yz zx w x yz. o De igual modo, al operar AND varios trminos OR conduce a una expresin de producto de sumas (lgicas); por ejemplo, (x y)(y z)(z x) o w(x y z).

    c) Un enunciado en palabras puede describir una funcin lgica de unas cuantas variables boolea-nas. Por ejemplo, el enunciado la alarma sonar si la puerta se abre mientras est activado el sistema de seguridad o cuando el detector de humo se dispare, corresponde a la funcin boolea-na ealarma (spuertasseguridad) dhumo, que relaciona una seal de habilitacin (e) con un par de seales de estado (s) y una seal de detector (d).

    d) Un diagrama lgico constituye una representacin grfi ca de una funcin booleana que tambin porta informacin acerca de su realizacin en hardware. De acuerdo con lo anterior, derivar un diagrama lgico a partir de cualesquiera tipos de especifi cacin mencionados representa el pro-ceso de sntesis de circuito lgico. Al hecho de ir a la inversa, desde un diagrama lgico hacia otra forma de especifi cacin, se le denomina anlisis de circuito lgico. Adems de las compuer-tas y otros componentes elementales, un diagrama lgico puede incluir cajas de varias formas que representan bloques constructores del tipo estndar o subcircuitos previamente diseados.

    Con frecuencia se usa una combinacin de los cuatro mtodos precedentes, en un esquema jerrquico, para representar hardware de computadora. Por ejemplo, un diagrama lgico de alto nivel, compuesto de subcircuitos y bloques estndar, puede ofrecer la imagen completa. Cada uno de los elementos del tipo no estndar, que no son lo sufi cientemente simples para ser descritos mediante una tabla de verdad, expre-sin lgica o enunciado en palabras, puede, a su vez, especifi carse mediante otro diagrama, etctera.

    Ejemplo 1.1: Probar la equivalencia de expresiones lgicas Pruebe que los siguientes pares de expresiones lgicas son equivalentes.

    a) Ley distributiva, versin AND: x(y z) (xy) (xz)b) Ley de DeMorgan, versin OR: (x y) x yc) d)

    Solucin: Cada parte se prueba con un mtodo diferente para ilustrar el rango de posibilidades.a) Use el mtodo de tabla de verdad: forme una tabla de verdad de ocho renglones, que corresponde a

    todas las posibles combinaciones de valores para las tres variables x, y y z. Observe que las dos expre-siones conducen al mismo valor en cada rengln. Por ejemplo, 1(0 1) = (1 0) (1 1) = 1.

    b) Use las sustituciones aritmticas que se muestran en la fi gura 1.1 para convertir este problema de igual-dad lgica en la igualdad algebraica de fcil comprobacin 1 (x + y xy) = (1 x)(1 y).

    c) Use el anlisis de caso: por ejemplo, derive formas simplifi cadas de la igualdad para x 0 (prue-be z yz = z) y x 1 (pruebe y yz = y). Es posible que ms adelante tenga que dividir un problema ms complejo.

    d) Use manipulacin lgica para convertir una expresin en la otra: (x y)(y z)(z x) =(xy xz yy yz)(z x) = (xz y)(z x) = xzz xzx yz yx = xz yz yx .

    xy x z yz xy x zxy yz zx (x y)(y z)(z x)

    1.3 Diseo de redes de compuertas

    Cualquier expresin lgica compuesta de NOT, AND, OR, XOR y otros tipos de compuertas repre-senta una especifi cacin para una red de compuertas. Por ejemplo, xy yz zx especifi ca la red de

  • a) Circuito AND-OR b) Circuito intermedio c) Equivalente NAND-NAND

    x

    y

    y

    z

    z

    x

    x

    y

    y

    z

    z

    x

    x

    y

    y

    z

    z

    x

    compuertas de la fi gura 1.6a. ste es un circuito lgico AND-OR de dos niveles con compuertas AND en el nivel 1 y una compuerta OR en el nivel 2. Puesto que, de acuerdo con la ley de DeMorgan (tabla 1.2, ltimo rengln, columna media), una compuerta OR se puede sustituir por compuertas NAND con entradas complementadas, se observa que la fi gura 1.6b equivale a la fi gura 1.6a. Ahora, al mover las burbujas de inversin en las entradas de la compuerta NAND del nivel 2 en la fi gura 1.6b, a las salidas de las compuertas AND en el nivel 1, se deriva el circuito NAND-NAND de nivel dos de la fi gura 1.6c que realiza la misma funcin. Un proceso similar convierte cualquier circuito OR-AND de nivel dos a un circuito equivalente NOR-NOR. En ambos casos, se debe invertir cualquier seal que entre directamente a una compuerta de nivel 2 (porque la burbuja permanece).

    Mientras que el proceso de convertir una expresin lgica en un diagrama lgico, y, por tanto, una rea-lizacin de hardware asociada, es trivial, no lo es el hecho de obtener una expresin lgica que conduzca al mejor circuito hardware posible. Por un lado, la defi nicin mejor cambia segn la tecnologa y el esquema de implementacin que se use (por ejemplo, VLSI a la medida, lgica programable, compuertas discretas) y en las metas de diseo (por ejemplo, alta rapidez, ahorro de potencia, bajo costo). Asimismo, si el proceso de simplifi cacin no se hace mediante herramientas de diseo automticas, no slo resultar engorroso sino tambin imperfecto; por ejemplo, se puede basar en minimizar el nmero de compuertas empleadas, sin tomar en consideracin las implicaciones de rapidez y costo de los alambres que conectan las compuertas. Este libro no se preocupar por el proceso de simplifi cacin para las expresiones lgicas. Lo anterior se sustenta en que cada funcin lgica que encontrar, cuando se divida de manera adecuada, es lo sufi cientemente simple para permitir que las partes requeridas se realicen mediante circuitos lgicos efi cientes en una forma directa. El proceso se ilustra con dos ejemplos.

    Figura 1.6 Circuito AND-OR de dos niveles y dos circuitos equivalentes.

    1.3 Diseo de redes de compuertas 9

    Ejemplo 1.2: Decodifi cador BCD a siete segmentos La fi gura 1.7 muestra cmo los dgitos deci-males 0-9 pueden aparecer en un display de siete segmentos. Disee los circuitos lgicos para generar las seales de habilitacin que provoquen que los segmentos se enciendan o apaguen, de acuerdo con una representacin binaria de cuatro bits del dgito decimal (decimal codifi cado en binario o cdigo BCD) a desplegar como entrada.

    Figura 1.7 Display de siete segmentos de dgitos decimales. Los tres segmentos abiertos se pueden usar de manera opcional. El dgito 1 se puede mostrar en dos formas; aqu se muestra la versin ms comn del lado derecho.

    Solucin: La fi gura 1.7 constituye una representacin grfi ca de los renglones 0-9 de una tabla de ver-dad de 16 renglones, donde cada uno de los renglones 10-15 signifi ca una condicin del tipo no importa. Existen cuatro columnas de entrada x3, x2, x1, x0 y siete columnas de salida e0e6. La fi gura 1.8 muestra

  • 10 Captulo 1 / Circuitos digitales combinacionales

    la numeracin de los segmentos y el circuito lgico que produce la seal de habilitacin para el segmento nmero 3. La columna de salida de la tabla de verdad asociada con e3 contiene las entradas 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, x, x, x, x, x, x (el 9 se muestra sin el segmento nmero 3). lo anterior representa la expresin lgica e3 = x1x 0 x 2x 0 x 2x1 x2x 1x0 . Observe que e3 es independiente de x3. Derivar los circuitos lgicos para los restantes seis segmentos se hace de manera similar.

    Figura 1.8 Circuito lgico que genera la seal de habilitacin para el segmento inferior (nmero 3) en una unidad de display de siete segmentos.

    x3 x2 x1 x0

    e4

    e3

    e2

    e1

    e6

    e0

    e5

    Entrada de cuatro bits en [0, 9] 0

    6

    3

    24

    5 1

    Seales para habilitar o encender los segmentos

    Ejemplo 1.3: Actuador de una simple mquina expendedora Una pequea mquina expendedora dispensa un paquete de chicle o una barra de dulce, cuyo costo individual es de 35 centavos. El cliente debe depositar el costo exacto, ste consiste en una moneda de 25 centavos y otra de 10 centavos; cuan-do esto ltimo se realiza, entonces se indicar la preferencia por uno de los dos artculos al presionar al botn correspondiente, luego se jalar una palanca para liberar el artculo deseado y ste caer en un recipiente. El actuador representa un circuito combinacional con tres salidas: rchicle(rbarra), cuando se pos-tula libera un paquete de chicle (barra de dulce); el hecho de postular rmonedas propicia que las monedas depositadas se regresen cuando, por cualquier razn, una venta no se concluye. Las entradas al actuador son las seales siguientes:

    a) spalanca indica el estado de la palanca (1 signifi ca que la palanca se jal)b) c25 y c10, para las monedas, proporcionada por un mdulo de deteccin de monedac) achicle y abarra proporcionada por dispositivos que perciben la disponibilidad de los dos artculosd) pchicle y pbarra que provienen de dos botones que expresan la preferencia del cliente

    Solucin: Remtase de nuevo a la tabla 1.1, que constituye la tabla de verdad para el actuador de la mquina expendedora. Cuando la palanca no se jale, todas las salidas deben ser 0, sin importar los valo-res de otras entradas (lnea 1). El resto de los casos que siguen corresponden a spalanca 1. Cuando no se depositan monedas, ningn artculo se debe liberar; el valor de rmonedas es inmaterial en este caso, pues no hay moneda para regresar (lnea 2). Cuando slo se ha depositado una moneda, no se debe liberar artculo alguno y la moneda se debe regresar al cliente (lneas 3-4). El resto de los casos corresponden al depsito de 35 centavos y jalar la palanca. Si el cliente no ha seleccionado, o si seleccion ambos

  • 1.4 Partes combinacionales tiles

    Ciertas partes combinacionales se pueden usar en la sntesis de los circuitos digitales, en gran medida como cuando se utilizan en casa los armarios y aditamentos prefabricados para bao. Tales bloques constructores del tipo estndar son numerosos e incluyen muchos circuitos aritmticos que se analiza-rn en la parte 3 del libro. En esta seccin se revisa el diseo de tres tipos de componentes combinacio-nales que se usan con propsitos de control: multiplexores, decodifi cadores y codifi cadores.

    Un multiplexor 2a a 1, mux para abreviar, tiene 2a entradas de datos, x0, x1, x2,, una sola salida z, y a seales de seleccin o direccin ya1,, y1, y0. La salida z es igual a la entrada xi cuyo ndice i tiene la representacin binaria (ya1y1 y0)dos. Los ejemplos incluyen multiplexores 2 a 1 (dos vas) y 4 a 1 (cuatro vas), que se muestran en la fi gura 1.9, que tienen una y dos entradas de direccin, respec-tivamente. Al igual que los arreglos de compuertas, muchos mux controlados por las mismas lneas de direccin son tiles para seleccionar un haz de seales sobre otro (fi gura 1.9d). Un mux n a 1, donde n no es una potencia de 2, se puede construir al recortar las partes innecesarias de un mux ms grande con 2a entradas, donde 2a1 < n < 2a. Por ejemplo, el diseo de la fi gura 1.9 f se puede convertir en un mux de tres entradas al remover el mux con entradas x2 y x3, y luego conectar x2 directamente con el mux de segundo nivel. En cualquier momento la salida z de un mux es igual a una de sus entradas.

    artculos, las monedas se deben regresar y no se debe liberar artculo alguno (lneas 5-6). Si se seleccion una barra de dulce, se libera una barra de dulce o se regresan las monedas, dependiendo de abarra (lneas 7-8). El caso para la seleccin de un paquete de chicle es similar (lneas 9-10). Las siguientes expresiones lgicas para las tres salidas se obtienen fcilmente por inspeccin: r = s c25c10 p r =chicle ,chicle barrapalanca

    spalanca c25c10 p , r = s (c25 c p p p p barra monedas 10palanca chicle barra chicle barra a p a p ).chicle chicle barra barra

    a) Mux 2 a 1 b) Vista de interruptor c) Smbolo de mux

    f ) Diseo de mux 4 a 1e) Mux 4 a 1 con habilitadord) Arreglo de mux

    x0

    x1

    z

    y

    x1z

    y

    x0 z

    x1

    x0 0

    11

    0

    y

    0

    1 3232

    32

    y0z0

    1

    x1

    x0 0

    1

    x3

    x2 0

    1

    y

    y1

    y0

    e (habilitador, enable)

    x0x1x2x3

    y1

    0123

    z

    y0

    Figura 1.9 Un multiplexor, o selector, selecciona una de muchas entradas y la dirige hacia la salida, segn el valor binario de un conjunto de seales de seleccin o direccin que se le proporcionen.

    1.4 Partes combinacionales tiles 11

  • 12 Captulo 1 / Circuitos digitales combinacionales

    Al proporcionar al multiplexor una seal de habilitacin e, que se suministra como entrada adicional a cada una de las compuertas AND de la fi gura 1.9a, se obtiene la opcin de forzar la salida a 0, inde-pendientemente de las entradas de datos y direcciones. En esencia, esto ltimo equivale a que ninguna de las entradas se seleccione (fi gura 1.9e).

    Los multiplexores representan bloques constructores verstiles. Cualquier funcin booleana de a va-riables se puede implementar mediante mux 2a a 1, donde las variables se conectan a las entradas de direccin y cada una de las 2a entradas de datos lleva un valor constante 0 o 1 de acuerdo con el valor de la tabla de verdad de la funcin para dicho rengln particular. De hecho, si el complemento de una de las variables est disponible en la entrada, entonces un mux ms pequeo 2a1 a 1 es sufi ciente. Como ejem-plo concreto, para implementar la funcin e3 defi nida en el ejemplo 1.2, es posible usar un mux 8 a 1 con entradas de direccin conectadas a x2, x1, x0 y entradas de datos que llevan 1, 0, 1, 1, 0, 1, 1, 0, de arriba abajo. De manera alterna, se puede usar un mux 4 a 1, con lneas de direccin conectadas a x1 y x0 y lneas de datos que portan x2 , x2, 1 y x2 , nuevamente de arriba abajo. Los ltimos cuatro trminos se derivan fcilmente de la expresin para e3 mediante la fi jacin exitosa del valor de x1x0 en 00, 01, 10 y 11.

    Un decodifi cador a a 2a (a entradas) postula una y slo una de sus 2a lneas de salida. La salida xi que se postula tiene un ndice i cuya representacin binaria empata el valor en las a lneas de direccin. En la fi gura 1.10a se muestra el diagrama lgico para un decodifi cador 2 a 4, y en la fi gura 1.10b se proporciona su smbolo abreviado. Si las salidas de tal decodifi cador se usan como seales de habili-tacin para cuatro diferentes elementos o unidades, entonces el decodifi cador permite elegir cul de las cuatro unidades se habilita en un momento especfi co. Si se quiere tener la opcin de no habilitar alguna de las cuatro unidades, entonces se puede usar un decodifi cador con una entrada de habilitacin (fi gura 1.10c), tambin conocido como demultiplexor o demux, donde la entrada de habilitacin e se proporciona como una entrada adicional a cada una de las cuatro compuertas AND de la fi gura 1.10a (ms generalmente 2a compuertas AND). La denominacin demultiplexor indica que este circuito realiza la funcin opuesta de un mux: mientras que un mux selecciona una de sus entradas y la dirige hacia la salida, un demux recibe una entrada e y la orienta a una salida seleccionada.

    La funcin de un codifi cador es exactamente la opuesta de un decodifi cador. Cuando se postula una, y slo una, entrada de un codifi cador de 2a entradas (2a a a), su salida de bit a proporciona el ndice de

    Figura 1.10 Un decodifi cador permite la seleccin de una de 2a opciones que usan una direccin de bit a como entrada. Un demultiplexor (demux) constituye un decodifi cador que slo selecciona una salida si se postula su seal de habilitacin.

    x0

    y0

    x1

    x2

    x3

    y1

    a) Decodificador 2 a 4 b) Smbolo de decodificador

    x0x1x2x3

    y0y1

    0123

    c) Demultiplexor o decodificador con habilitacin (enable)

    x0x1x2x3

    y0y1

    0123

    (habilitador))e

  • la entrada postulada en la forma de un nmero binario. En la fi gura 1.11a se muestra el diagrama l-gico de un codifi cador 4 a 2, y en la fi gura 1.11b su smbolo abreviado. De manera ms general, el n-mero n de entradas no necesita ser una potencia de 2. En este caso, la salida del codifi cador de log2 n

    bits constituye la representacin binaria del ndice de la nica entrada postulada; esto es, un nmero entre 0 y n 1. Si se disea un codifi cador como una coleccin de compuertas OR, como en la fi gura 1.11a, produce la salida todos 0 cuando ninguna entrada se postula o cuando la entrada 0 se postula. Estos dos casos son, por ende, indistinguibles en la salida del codifi cador. Si se levanta la restriccin de que cuando mucho una entrada del codifi cador se puede postular y se disea el circuito para dar salida al ndice de la entrada postulada con el ndice ms bajo, entonces resulta un codifi cador de prioridad. Por ejemplo, si supone que se postulan las entradas x1 y x2, el codifi cador de la fi gura 1.11a produce la salida 11 (ndice 3, que no corresponde a alguna entrada postulada), mientras que un codifi cador de prioridad dara salida 01 (ndice 1, el ms bajo de los ndices para entradas postuladas). La seal activo diferencia entre los casos de ninguna de las entradas postuladas y x0 postulada.

    Tanto decodifi cadores como codifi cadores son casos especiales de convertidores de cdigo. Un decodifi cador convierte un cdigo binario de a bits en un cdigo de 1 de 2a, un cdigo con 2a palabras cdigo cada una de las cuales se compone de un solo 1 y todos los otros bits 0. Un codifi cador convier-te un cdigo 1 de 2a a un cdigo binario. En el ejemplo 1.2 se disea un convertidor de cdigo BCD a siete segmentos.

    1.5 Partes combinacionales programables

    Para evitar el uso de gran nmero de circuitos integrados de pequea escala con el propsito de imple-mentar una funcin booleana de muchas variables, los fabricantes de CI (circuitos integrados) ofrecen muchos arreglos de compuertas cuyas conexiones se pueden adecuar mediante la programacin. Con respecto al mecanismo de programacin, existen dos tipos de circuitos. En uno, todas las conexiones de inters potencial ya estn hechas, pero se pueden remover de manera selectiva. Tales conexiones se hacen mediante fusibles que se pueden quemar al pasar una corriente sufi cientemente grande a travs de ellos. En otro, los elementos antifusible se usan para establecer selectivamente conexio-nes donde se desee. En los diagramas lgicos, la misma convencin se usa para ambos tipos: una conexin que se queda en lugar, o se establece, aparece como un punto grueso sobre lneas que se cruzan, mientras que para una conexin que se quema, o no se establece, no hay tal punto. La fi gura 1.12a muestra cmo se pueden implementar las funciones w x y x zy mediante compuertas OR programables. Un arreglo de stas, conectado a las salidas de un decodifi cador de a a 2a, permite implementar muchas funciones de a variables de entrada a la vez (fi gura 1.12c). Este ordenamiento se conoce como memoria de slo lectura programable o PROM.

    Figura 1.11 Un codifi cador 2a a a da sa-lida a un nmero binario de a bits igual al ndice del nico 1 entre sus 2a entradas.a) Codificador 4 a 2 b) Smbolo de codificador

    x0x1x2x3

    y0y1

    0123

    x0

    x1

    x2

    x3

    y0y1

    Activo

    Activo

    1.5 Partes combinacionales programables 13

  • 14 Captulo 1 / Circuitos digitales combinacionales

    b) Equivalente lgico de la parte a)

    c) Memoria de slo lectura programable (PROM)

    w

    z

    y

    x

    . . .

    . . .Dec

    odifi

    cado

    r

    Entradas

    Salidas

    w

    z

    y

    x

    a) Compuertas OR programables

    La fi gura 1.13a muestra una estructura ms general para circuitos de lgica combinacional progra-mable en la que el decodifi cador de la fi gura 1.12c se sustituy por un arreglo de compuertas AND. Las n entradas, y sus complementos formados internamente, se proporcionan al arreglo AND, que genera un nmero de trminos producto que involucran variables y sus complementos. Estos trminos producto constituyen entrada a un arreglo OR que combina los trminos producto adecuados para cada una de has-ta m funciones de inters que sean salida. PROM representa un caso especial de esta estructura donde el

    Figura 1.12 Conexiones programables y su uso en una PROM.

    Figura 1.13 Lgica combinacional programable: estructura general y dos clases conocidas como dispositivos PAL y PLA. No se muestran la PROM con arreglo AND fi jo (un decodifi cador) y arreglo OR programable.

    a) Lgica combinacional programable general

    b) PAL: arreglo AND programable, arreglo OR fijo

    c) PLA: arreglos AND y OR programables

    AND de ocho entradas

    AND de seis entradas

    OR de cuatro entradas

    Entradas

    Salidas

    Arreglo AND (plano AND)

    . . .

    . . .

    . . .

    Arreglo OR

    (plano OR)

  • arreglo AND es un decodifi cador fi jo y el arreglo OR se puede programar de manera arbitraria. Cuando el arreglo OR tiene conexiones fi jas pero las entradas a las compuertas AND se pueden programar, el resultado es un dispositivo de lgica de arreglo programable o PAL (fi gura 1.13b). Cuando tanto los arre-glos AND como OR se pueden programar, el circuito resultante se denomina arreglo lgico programable o PLA (fi gura 1.13c). Los dispositivos PAL y PLA son ms efi cientes que las PROM porque generan menos trminos producto. Los primeros son ms efi cientes, pero menos fl exibles, que los segundos.

    En las partes PAL comerciales, debido al limitado nmero de trminos producto que se pueden combi-nar para formar cada salida, con frecuencia se proporciona un mecanismo de retroalimentacin que hace que algunas de las salidas se seleccionen como entradas hacia compuertas AND. En la fi gura 1.13b la sali-da izquierda se retroalimenta hacia el arreglo AND, donde se puede usar como entrada en las compuertas AND que contribuyen a la formacin de la salida derecha. De manera alterna, tales salidas retroalimen-tadas se pueden usar como entradas primarias para el caso de que se necesitaran entradas adicionales. Un producto PAL usado de manera comn es el dispositivo PAL16L8. Los nmeros 16 y 8 en el nombre del dispositivo se refi eren a lneas de entrada y salida, respectivamente; el paquete tiene 20 pines para diez entradas, dos salidas, seis lneas I/O bidireccionales, potencia y tierra. El arreglo AND programable de este dispositivo consiste de 64 compuertas AND, cada una con 32 entradas (las 16 entradas y sus comple-mentos). Las 64 compuertas AND se dividen en ocho grupos de ocho compuertas. Dentro de cada grupo, siete compuertas AND alimentan una compuerta OR de siete entradas que produce una salida, y el resto de la compuerta AND genera una seal de habilitacin para un buffer tres estados inversor.

    Los PLA no se usan como partes de artculos sino como estructuras que permiten la implementacin regular y sistemtica de funciones lgicas en chips VLSI (very large scale integration, integracin a muy grande escala) a la medida. Por ejemplo, ms tarde se ver (en el captulo 13) que la instruccin decodifi cacin lgica de un procesador es un candidato natural para la implementacin PLA.

    1.6 Estimaciones de temporizacin y de circuito

    Cuando varan las seales de entrada a una compuerta, cualquier cambio de salida requerida no ocurre inmediatamente sino que ms bien toma efecto con cierto retardo. El retardo de compuerta vara con la tecnologa subyacente, tipo de compuerta, nmero de entradas (carga de entrada de compuerta), voltaje suministrado, temperatura de operacin, etc. Sin embargo, como aproximacin de primer orden, todos los retardos de compuerta se pueden considerar iguales y se denotan mediante el smbolo . De acuerdo con lo anterior, un circuito lgico de nivel dos tiene un retardo de 2. Para la tecnologa CMOS (comple-mentary metal-oxide semiconductor, semiconductor de xido metlico complementario) que se usa en la mayora de los circuitos digitales modernos, el retardo de compuerta puede ser tan pequeo como una fraccin de nanosegundo. La propagacin de seal en los alambres que conectan las compuertas tambin aporta cierto retardo pero, de nuevo en el contexto de un anlisis aproximado, tales retardos se pueden ignorar para simplifi car los anlisis; sin embargo, conforme las dimensiones del circuito se reducen, tal omisin se vuelve ms problemtica. La nica forma precisa de estimar el retardo de un circuito lgico es correr el diseo completo, con todos los detalles de los elementos lgicos y alambrados, mediante una herramienta de diseo. Entonces, se deben incluir mrgenes de seguridad en las estimaciones de tempo-rizacin para explicar las irregularidades de proceso y otras variaciones.

    Cuando los retardos a lo largo de las trayectorias de un circuito lgico son desiguales, sea que se deban al diferente nmero de compuertas a travs de las que pasan las diferentes seales o las variaciones antes mencionadas, ocurre un fenmeno conocido como interferencia (glitching). Suponga que debe imple-mentar la funcin f = x y z con el circuito de la fi gura 1.13b. Puesto que las compuertas OR en el circuito blanco slo tienen dos entradas, primero debe generar a = x y en la salida izquierda y luego usar el resultado para formar f = a z en la salida derecha. Note que las seales x y y pasan a travs de

    1.6 Estimaciones de temporizacin y de circuito 15

  • 16 Captulo 1 / Circuitos digitales combinacionales

    x 0

    y

    z

    f a z

    ^

    ^

    a x y

    2 2

    cuatro niveles de compuertas, mientras que z pasa a travs de slo dos niveles. El proceso anterior condu-ce a la situacin que se muestra en el diagrama de temporizacin de la fi gura 1.14, donde x 0 en toda la extensin, mientras que y cambia de 0 a 1 en casi el mismo tiempo que z cambia de 1 a 0. Tericamente, la salida debe ser 1 en todo momento. Sin embargo, debido a los diferentes retardos, la salida supone el valor 0 para 2 unidades de tiempo. sta es una razn por la que se necesitan anlisis de temporizacin precisos y mrgenes de seguridad para garantizar que se permite un tiempo adecuado para que los cam-bios se propaguen por completo a travs del circuito, y con el propsito de que las salidas supongan sus valores fi nales correctos, antes de que los resultados generados se usen en otros clculos.

    Aun cuando en este libro se trate exclusivamente con circuitos lgicos combinacionales construi-dos de compuertas, se debe mencionar, para complementar, que con la tecnologa CMOS se pueden derivar y usar otros elementos de circuito que no corresponden directamente con una compuerta o red de compuertas. En la fi gura 1.15 se presentan dos ejemplos. El circuito de dos transistores bosqueja-do en la fi gura 1.15a, junto con su representacin simblica, se denomina compuerta de transmisin (TG, por sus siglas en ingls). Dicha compuerta conecta sus dos lados cuando la seal de control N se postula y los desconecta cuando P se postula. Para el caso de que las seales N y P sean comple-mentarias, la compuerta de transmisin se comporta como un interruptor controlado. Se pueden usar dos compuertas de transmisin y un inversor (otro circuito CMOS de dos transistores) para formar un mux de 2 a 1, como se muestra en la fi gura 1.15b. Un mux de 2a entradas se puede construir con el uso de 2a compuertas de transmisin y un decodifi cador que convierte la seleccin de nmero binario (ya1 1 0 y y )dos en una sola seal postulada que alimenta una de las compuertas de transmisin.

    Figura 1.15 Compuerta de transmisin CMOS y su uso para construir un mux 2 a 1.

    Figura 1.14 Diagrama de temporiza-cin para un circuito que muestra inter-ferencia.

    x0

    x1

    z

    y

    TG

    TG

    b) Mux de dos entradas construido con dos compuertas de transmisin.

    a) Compuerta de transmisin CMOS: circuito y smbolo

    TG

    P

    N

  • PROBLEMAS

    1.1 Elementos lgicos universalesLos tres elementos lgicos AND, OR y NOT forman un conjunto universal porque cualquier funcin lgica se puede implementar mediante estos elementos, y no se requiere nada ms.a) Demuestre que remover AND u OR del conjunto deja

    universal el resto del conjunto de dos elementos.b) Demuestre que XOR forma un conjunto universal o

    con AND o con OR.c) Demuestre que la compuerta NAND es universal.d) Demuestre que la compuerta NOR es universal.e) Demuestre que el multiplexor 2 a 1 es universal.f ) Existe algn otro elemento de dos entradas, adems

    de NAND y NOR, que sea universal? Sugerencia: Existen diez funciones de dos variables que depende de ambas variables.

    1.2 Actuador de mquina expendedoraExtienda el diseo del actuador de mquina expendedo-ra del ejemplo 1.3 en las siguientes formas:a) Cada uno de los dos artculos cuesta 65 centavos.b) Hay cuatro artculos a elegir.c) Los dos cambios de las partes a) y b).d) Modifi que el diseo de la parte a) para aceptar cual-

    quier cantidad, hasta un dlar (incluidos billetes), y para regresar cambio.

    1.3 Realizacin de funciones booleanasDisee un circuito lgico de tres entradas y una salida que implemente alguna funcin booleana deseada de las tres entradas con base en un conjunto de entradas de control. Sugerencia: Existen 256 diferentes funciones booleanas de tres variables, de modo que la entrada de control al circuito (el opcode, cdigo de operacin) debe contener al menos ocho bits. La tabla de verdad de una funcin booleana de tres variables tiene ocho entradas.

    1.4 Decodifi cador BCD a siete segmentosConsidere el decodifi cador BCD a siete segmentos par-cialmente diseado en el ejemplo 1.2.a) Complete el diseo y suponga que no se incluye nin-

    guno de los tres segmentos abiertos de la fi gura 1.7.

    b) Rehaga el diseo con un decodifi cador de cuatro a 16 y siete compuertas OR.

    c) Determine qu se desplegar cuando los circuitos lgi-cos derivados en la parte a se alimenten con cada una de las seis entradas prohibidas de la 1010 a la 1111.

    d) Repita la parte c) para el diseo de la parte b).

    1.5 Decodifi cador BCD a siete segmentosDisee formas modifi cadas del decodifi cador BCD a siete segmentos del ejemplo 1.2 bajo cada uno de los siguientes conjuntos de suposiciones. En todo caso su-ponga que 1 se representa mediante los dos segmen-tos en el extremo derecho del panel.a) Las entradas representan dgitos BCD; los dgitos 6,

    7 y 9 se despliegan con 6, 3 y 6 segmentos, respecti-vamente (vea la fi gura 1.7).

    b) Las entradas constituyen dgitos hexadecimales, con los dgitos agregados 10-15 representados con letras maysculas (A, C, E, F) o minsculas (b, d). Use las suposiciones de la parte a) para los dgitos 6, 7 y 9.

    c) Las entradas son dgitos BCD y las formas de dis-play se eligen de tal modo que cualquier seal de habilitacin de segmento individual que queda per-manentemente pegada en 0 no conduce a un error de display indetectable.

    d) Repita la parte c) para una seal de habilitacin indi-vidual que se queda permanentemente pegada en 1.

    1.6 Generacin de paridad y verifi cacinUn generador de paridad par de n entradas produce una salida 1 si y slo si (ssi) un nmero impar de sus entra-das es 1. El circuito se llama as porque al unir la salida producida a la entrada de n bit produce una palabra de (n 1) bits de paridad par. Un verifi cador de paridad par de n entradas produce una salida 1 (seal de error) ssi un nmero impar de sus entradas es 1.a) Disee un generador de paridad par de ocho entradas

    slo con el uso de compuertas XOR.b) Repita la parte a) para un generador de paridad impar.c) Disee un verifi cador de paridad par de nueve entra-

    das slo con el uso de compuertas XOR. Cmo se relaciona su diseo con los de las partes a) y b)?

    d) Repita la parte c) para un verifi cador de paridad im-par.

    e) Demuestre que los circuitos de generador de paridad ms rpidos se pueden construir de forma recursiva,

    Problemas 17

  • 18 Captulo 1 / Circuitos digitales combinacionales

    con base en el diseo de un circuito de (n/2) entradas de tipos adecuados. Qu ocurre cuando n es impar?

    1.7 Multiplicidad de funciones booleanasExisten cuatro funciones booleanas de una sola variable, de las cuales slo dos dependen realmente de la variable de entrada x (x y x). De igual modo, existen 16 funcio-nes de dos variables, de las cuales slo diez dependen de ambas variables (excluidas x, x, y, y, 0 y 1).a) Cuntas funciones booleanas de tres variables exis-

    ten, y cuntas de ellas en realidad dependen de las tres variables?

    b) Generalice el resultado de la parte a) para funciones de n variables. Sugerencia: Debe sustraer del nme-ro de funciones de n variables todas aquellas que de-pendan de n1 o menos variables.

    1.8 Expresiones lgicas equivalentesPruebe cada una de las cuatro equivalencias del ejemplo 1.1 con el uso de los otros tres mtodos mencionados en el ejemplo.

    1.9 Expresiones lgicas equivalentesUse el mtodo de sustitucin aritmtica para probar los siguientes pares de equivalentes de expresiones lgicas.a) b) c) d)

    1.10 Expresiones lgicas equivalentesPruebe que los siguientes pares de expresiones lgicas son equivalentes, primero mediante el mtodo de tabla de verdad y luego mediante la manipulacin simblica (use las leyes del lgebra booleana).a) b) c) d)

    1.11 Diseo de un interruptor 2 2Disee un circuito combinacional que acte como un in-terruptor 2 2. El interruptor tiene entradas de datos a y

    b, una seal de control cruzado c y salidas de datos x y y. Cuando c 0, a se conecta a x y b a y. Cuando c 1, a se conecta a y y b a x (es decir, las entradas se cruzan).

    1.12 Circuitos de comparacin numricaSuponga x (x2x1x0)dos y y (y2y1y0)dos son nmeros binarios de tres bits sin signo. Escriba una expresin lgica en trminos de las seis variables booleanas x2, x1, x0, y2, y1, y0 que suponga el valor 1 ssi:a) b) c) d)

    1.13 Circuitos de comparacin numricaRepita el problema 1.2 (todas las partes), pero suponga que las entradas de tres bits x y y son nmeros en com-plemento a 2 en el rango 4 a 3.

    1.14 Suma de productos y producto de sumasExprese cada una de las siguientes expresiones lgicas en formas de suma de productos y producto de sumas.a) b) c) d)

    1.15 Cdigo Hamming SEC/DEDUn tipo particular de cdigo Hamming tiene palabras cdigo de ocho bits P8 D7 D6 D5 P4 D3 P2 P1 que codifi -can 16 diferentes valores de datos. Los bits de paridad Pi se obtienen de los bits de datos Dj de acuerdo con las ecuaciones lgicas P1 = D3 D5 D6, P2 = D3 D5 D7, P4 = D3 D6 D7, P8 = D5 D6 D7.a) Demuestre que este cdigo es capaz de corregir cual-

    quier error de bit sencillo (SEC, Single Error Corrector) y derive las reglas de correccin. Sugerencia: Piense en trminos de calcular cuatro resultados de verifi -cacin de paridad, como C1 = P1 D3 D5 D6 , que deben producir 0 para una palabra cdigo libre de error.

    b) Demuestre que el cdigo detecta todos los errores de doble bit (DED, Double Error Detector) adems

    xy x z yz xy x zxyz x y z 1x y z xyz xyz x yz x yzxz wyz wxy wxy x yz xz wyz wyz wx z

    xy x z yz xy x zxyz x y z 1x y z xyz xyz x yz x yzxz wyz wxy wxy x yz xz wyz wyz wx z

    x = yx < yx yx y 1x yx + y

    es constantees divisible entre 3

    (x y)(y wz)(xy z)(y wz)x(x y)(y z) x x y z

  • de corregir los errores sencillos (por ende, es un cdigo SEC/DED).

    c) Disee el circuito de codifi cacin, slo con el uso de compuertas NAND de dos entradas.

    d) Disee el circuito decodifi cador que incluya correc-cin de error sencillo y postulacin de una seal in-dicadora de error en caso de dobles errores.

    e) Derive una implementacin PROM del circuito de-codifi cador de la parte d).

    1.16 Implementacin de funciones lgicas con base en muxMuestre las entradas requeridas para implementar las dos siguientes funciones lgicas con el uso de multi-plexores 4 a 1 si slo la entrada x est disponible en forma de complemento.a) b)

    1.17 Implementacin de funciones lgicas con base en muxa) Demuestre que cualquier funcin lgica de tres va-

    riables f (x, y, z) se puede realizar con el uso de tres multiplexores de dos entradas, si se supone que x est disponible como entrada.

    b) Bajo qu condiciones se puede realizar una funcin de tres variables con el uso de tres multiplexores de dos entradas, sin requerir entrada complementada al-guna?

    c) Proporcione un ejemplo de una funcin de tres va-riables (que verdaderamente dependa de las tres va-riables) que se pueda realizar slo con el uso de dos multiplexores de dos entradas, sin entrada comple-mentada disponible. Tambin muestre un diagrama de la realizacin de la funcin con dos multiplexores.

    d) Una funcin de tres variables que es realizable con un solo mutliplexor de dos entradas puede depender verdaderamente de las tres variables? Proporcione un ejemplo o demuestre por qu tal arreglo es imposible.

    1.18 Comparador numrico iterativoUn comparador iterativo para nmeros binarios no sig-nados de k bits consiste de k celdas ordenadas en un circuito lineal o en cascada. Una celda recibe un bit de cada uno de los dos operandos x y y, y un par de seales GE (x y hasta aqu) y LE (x y hasta aqu) de una celda vecina, y produce seales GE y LE para la otra vecina. Note que GE LE 1 signifi ca que los dos nmeros son iguales hasta aqu.a) Disee la celda requerida y suponga que las seales

    GE y LE se propagan de derecha a izquierda.b) Repita la parte a) para propagar la seal de izquierda

    a derecha.c) Demuestre que las celdas de la parte a) o b) se pue-

    den conectar en una estructura de rbol, en oposicin al arreglo lineal, para producir un comparador ms rpido.

    1.19 Expresiones aritmticas para compuertas lgicasLas expresiones aritmticas que caracterizan a las com-puertas lgicas (fi gura 1.1) se pueden extender a com-puertas con ms de dos entradas. Esto es trivial para las compuertas AND. Escriba las expresiones aritmticas equivalentes para compuertas OR de tres y cuatro en-tradas. Generalice la expresin para una compuerta OR de h entradas.

    1.20 Partes combinacionales programablesa) Muestre cmo realizar la funcin lgica f (x, y, z)

    yz x y xz

    en el PLA de la fi gura 1.13c.b) Repita la parte a) en la PAL de la fi gura 1.13b.c) Demuestre que cualquier funcin que se pueda reali-

    zar por la PAL de la fi gura 1.13b tambin es realiza-ble por el PLA de la fi gura 1.13c. Observe que esto ltimo no es una afi rmacin acerca de las PAL y los PLA en general, sino ms bien acerca de las instan-cias especfi cas que se muestran en la fi gura 1.13.

    Referencias y lecturas sugeridas 19

    f (x, y, z) = yz x y xzg(w, x, y, z) = wx z wyz xz

    REFERENCIAS Y LECTURAS SUGERIDAS[Brow00] Brown, S. y Z. Vranesic, Fundamentals of Digital Logic with VHDL Design, McGraw-Hill, 2000.[Erce99] Ercegovac, M. D., T. Lang y J. H. Moreno, Introduction to Digital Systems, Wiley, 1999.[Haye93] Hayes, J. P., Introduction to Digital Logic Design, Addison-Wesley, 1993.

  • 20 Captulo 1 / Circuitos digitales combinacionales

    [Katz94] Katz, R. H., Contemporary Logic Design, Benjamin/Cummings, 1994. [Parh99] Parhami, B. y D. M. Kwai, Combinational Circuits, en Encyclopedia of Electrical and Electro-

    nics Engineering, Wiley, vol. 3 (Ca-Co), 1999, pp. 562-569.[Wake01] Wakerly, J. F., Digital Design: Principles and Practices, Prentice Hall, updated 3a. ed., 2001.[WWW] Sitios Web de algunos fabricantes de PAL y PLA: altera.com, atmel.com, cypress.com, latticesemi.

    com, philips.com, vantis.com.

  • CAPTULO 2CIRCUITOS DIGITALES CON MEMORIA

    Los microprocesadores no fueron un producto de la industria de la computacin. Son resultado del deseo, y la necesidad imperiosa, de la nueva industria de semiconductores por encontrar una aplicacin rentable para los primeros VLSI Los ingenieros de Intel saban poco acerca de arquitectura de computadoras. Su objetivo inmediato era realizar dispositivos programables que sustituiran la lgica aleatoria.

    Maurice Wilkes, Computing Perspectives

    Los das del reloj digital estn numerados.

    Tom Stoppard

    TEMAS DEL CAPTULO

    2.1 Latches, fl ip-fl ops y registros2.2 Mquinas de estado fi nito2.3 Diseo de circuitos secuenciales2.4 Partes secuenciales tiles2.5 Partes secuenciales programables2.6 Relojes y temporizacin de eventos

    21

    El comportamiento de un circuito combinacional (sin memoria) slo depende de sus entradas de co-rriente, no de la historia pasada. En este sentido, un circuito digital secuencial tiene una cantidad fi nita de memoria, cuyo contenido, determinado por entradas pasadas, afecta el comportamiento de corrien-te de entrada/salida (I/O). En este captulo se ofrece un repaso de los mtodos para defi nir y realizar tales circuitos secuenciales mediante elementos de almacenamiento (latches, fl ip-fl ops, registros) y lgica combinacional. Tambin se introducen algunos componentes muy tiles que se encuentran en muchos diagramas de este libro. Los ejemplos incluyen archivos de registro, registros de corrimiento y contadores. Al igual que en el captulo 1, los lectores que tengan problemas para comprender este mate-rial debern consultar cualquiera de los libros de diseo lgico que se mencionan al fi nal del captulo.

    2.1 Latches, fl ip-fl ops y registros

    El diseo de circuitos secuenciales que exhiben memoria requieren el uso de elementos de almace-namiento capaces de retener informacin. El elemento de almacenamiento ms simple es capaz de retener un solo bit y se puede establecer (set) en 1 o restablecer (reset) a 0 a voluntad. El latch SR, que se muestra en la fi gura 2.1a, es uno de tales elementos. Cuando las entradas R y S son 0, el latch se

  • 22 Captulo 2 / Circuitos digitales con memoria

    D Q

    QC

    RQ

    QS

    R

    C

    D

    Q

    QS

    a) Latch SR b) Latch D

    c) Flip-flop D maestro/esclavo d) Smbolo del flip-flop D e) Registro de k bits

    Q

    Q

    D

    C

    D Q

    QCFF k

    k

    kD Q

    QC

    D Q

    QCFF

    encuentra en uno de dos estados estables correspondientes a Q 0 (Q 1) o Q 1 (Q 0). Postu-lar la entrada R restablece (reset) el latch a Q 0, mientras que postular S establece (set) el latch a Q 1. En consecuencia, persiste cualquier estado despus de que la entrada postulada deja de hacerlo. Agregar dos compuertas AND a un latch SR, como en la fi gura 2.1b, produce un latch D con entradas de datos (D) y reloj (clock, C). Cuando C se postula, la salida Q del latch SR sigue a D (el latch se establece si D 1 y se restablece si D 0). Se dice que el latch est abierto o es transparente para C 1. despus de que C deja de postularse, el latch SR se cierra y conserva como su salida el ltimo valor de D antes de la prdida de postulacin de C.

    Dos latches D se pueden conectar, como en la fi gura 2.1c, para formar un fl ip-fl op D maestro/escla-vo (master/slave). Cuando C se postula, el latch maestro se abre y su salida sigue a D, mientras que el latch esclavo se cierra y conserva su estado. La no postulacin de C cierra el latch maestro y provoca que su estado se copie en el latch esclavo. La fi gura 2.1d muestra la notacin abreviada de un fl ip-fl op D. La burbuja en la entrada C indica que el nuevo estado del fl ip-fl op tiene efecto en el extremo negativo de la entrada clock, o sea cuando el reloj pasa de 1 a 0. Se dice que tal fl ip-fl op es activado por fl anco de bajada (negative-edge-triggered). Es posible construir un fl ip-fl op D activado por fl anco de subida (positive-edge-triggered) al invertir la entrada C de la fi gura 2.1c. Un arreglo de k fl ip-fl op, todos unidos a la misma entrada de reloj, forma un registro de k bits (fi gura 2.1e). Puesto que un fl ip-fl op maestro-esclavo conserva su contenido conforme se modifi ca, es ideal para usar en registros constructivos que con frecuencia se leen y e