You are on page 1of 566
Miles J. Murdocca - Vincent P. Heuring Rutgers University University of Colorado Principios de arquitectura de computadoras . h Priticipios de arquitectura de computadoras: ‘TRaDUCCCION Ing. Fernando Szklanny Universidad de Buenos Aires Universidad Nacional de La Matanza Universidad de Morén REVISION TECNICA Ing. Elio de Maria Universidad Necional de La Matanza Universidad de Morén Universidad de Palermo Argentina + Botivia « Brasil» Colombia + Costa’ Rica * Chile » Ecuador * El Salvador + Espaita + Guaternala + Honduras * México » Nicaragua * Panamd + Paraguay + Peri + * Puerto Rico + Repibliea Dominicana * Uruguay * Venezuela 2 Amsterdam = Harlow + Londres = Menlo Parte nici» Nueva Delhi » Nuova Jersey = toy, Nueva York + Ontario + Paris Sidnoy + Singapur + Tokio + Toronto * Zurich es J. Murdocéa ~ Vincent P. Heuring: j | j Pier een Joos Muniocca, Mites MUR Principios de anquitectura de computadoras / Miles ‘Mardocca y Vincent Heuring ~ I" ed. - Buenas Aices Pearson Education, 2002. S84; 25,5 x 19,500 ‘Traducciém de: Feroando S2klanny ISBN: 987.9560.69-3 1, Heuring, Vinceat Il. Tiulo -1. Compuradoras = Arquiteetora Editor: Enrique Baumann Disetio de Tapa: Diego Linares Disefio de Interior: Adriana Mariner ‘Tradueci6n: Fernando Saklanny Correccién: Masta E. Walas Produccién: Marcela Mangacelli / Cristian Rodrigues Yabares ‘Traducido de: PRINCIPLES OF COMPUTER ARCHITECTURE, 1* Edicion by MURDOCCA, MILES, HEURING, VICENT P, published by Peatson Education, lnc, publishing as PRENTICE HALL, INC, Copyright © 2000, ISBN: 0-20-0143664-7 Edicién en espafiol publicada por: Copyright © 2002 PEARSON EDUCATION S.A. Ay, Regimiento de Patcicios 1959 (C12G6AAF), Buenos Aires, Rep. Argentina PRENTICE HALL Y PEARSON EDUCACION son marcas de propiedad de FEARSON EDUCATION S.A. ISBN: 987-9460-69-3 Primera edicién: enero de 2002 Queda hecho el depésito que dispone la ley 11.723 Esce libro no puede ser eproducide soral ni parcialmente en ninguna forma, ni por ningin media procedi- tiento, sea reprogrifico,forocopia, microfilmacién, mimeogrdfico o cualquier otro sistema mecinico,Foroqul- formitico, magnética, electrodptica, exétera. Cualquier reproduccién sin el permiso pre- vio por escrito de la editorial viola derechos reservados, es ilegal y constituye un delio, Impreso en Brasil por RR Donnelley, en el mes de enero de 2002. Rus Epiacaba 90 -Vila Arapus— 04257.170 - So Paulo SP Para Ellen, Alexandra y Nicole Para Gretchen Indice . de contenidos Prélogo 1. Introduccién 1.1 Planteo general 1.2 Una historia breve 1.3 El modelo von Neumann 1.4 El modelo de interconexi6n a través de bus 1.5 Niveles de méquina 5.1 Compatibilidad “hacia arriba” 1.5.2 Los niveles 1.6 Un sistema de computacién tipico 1.7 Organizacién de la obra 1,8 Estudio de un caso: ;Qué le ocurrié a las supercomputadoras? Resumen Para lectura posterior Problemas 2, Representacién de la informacién 2.1 Introduccién 2.2 Nimeros de punto fijo 1 Rango y precisi6n on nimeras de punto fijo 2.2.2 La ley asociativa del dlgebra no siempre funciona en la computadora 2.2.3 Sistemas de numeracién posicionales 2.2.4 Conversién entre sistemas 2.2.5 Una primera mirada a la aritmética de las computadoras 2.2.6 Niimeros signados en formato de punto fijo 2.2.7 Decimal codificado en binario 2.3 Formato de representacién en punto flotante 2.3.1 Rango y precisién en nimeros de punto flotante 2.3.2 La normalizaci6n y el esquema de bits implicitos X_PRINGIPIOS DE ARQUITECTURA DE COMPUTADORAS 2.3.3 Representacién de nimeros de punto flotante dentro de la computadora. Introduccién 2.3.4 Errores en la representaci6n de punto flotante Ejemplo 2.3.5 La norma de representacién IEEE 754 2.4 Estudio de un caso: una falla en un misil defensivo Patriot causada por una pérdida de precisién 2.5 Cédigos alfanuméricos 2.5.1 El conjunto de caracteres ASCII 2.5.2 El conjunto de caracteres EBCDIC 2.5.3 El eédigo UNICODE Resumen Para tectura posterior Problemas 3. Aritmética Introducci6n 3.2 Suma y resta en punto fijo 3.2.1 Suma y resta en la representaci6n de complemento a dos 3.2.2 Implementaci6n circuital de sumadores y restadores 3.2.3 Suma y resta en representacién de complemento a uno 3.3 Producto y cociente en punto fijo 3.3.1 Multiplicacién de mimeros sin signo 3.3.2 Divisién sin signo 3.3.3 Producto y cociente signados 3.4 Aritmética de punto flotante 3.4.1 Suma y resta en formato de punto flotante 3.4.2 Producto y cociente en formato de punto flotante 3.5 Aritmética de alto rendimiento 3.5.1 Suma de alto rendimiento 3.5.2 Producto de alto rendimiento 3.5.3 Divisi6n de alto rendimiento 3.5.4 Calculo residual Ejemplo. Sumador de alto rendimiento para palabras largas 3.6 Estudio de un caso: calculadora que utiliza el sistema decimal codificado en binario 3.6.1 La calculadora HP9100A 3.6.2 Suma y resta de némeros codificados en BCD 3.6.3 Suma y resta en BCD punto flotante, Resumen Para lectura posterior Problemas 38 4l 45 45 48 50 50 52 52 55 55 56 61 61 61 62 67 69 69 mW 13 14 14 18 16 76 2B 82 85 86 88 88 89 92 94 94 95 4, La arquitectura de programacién 99 4.1 Componentes circuitales de la arquitectura de programacién 100 4.1.1 Una revisién del modelo de bus 100 4.1.2 Memoria 101 4.1.3 La unidad central de proceso (CPU) 104 4.2 ARC, una computadora RISC 108 4.2.1 Memoria en ARC 109 4.2.2 El conjunto de instrucciones ARC 109 4.2.3 Formato del lenguaje simb6tico de ARC 112 4.2.4 Formatos de instruceién en ARC 113 4.2.5 Formatos de datos en ARC 115 4.2.6 Descripcién de las instrucciones de ARC 17 4.3 Directivas (seudo operaciones) 121 4.4 Bjemplos de programacién en lenguaje ensamblador 122 4.4.1 Variantes en las arquitecturas y en tos direccionamientos 125 4.4.2 Bficiencia de las arquitecturas de programacién 128 4.5 El acceso a la informacién en la memoria, Modos de direccionamiento 129 4.6 Acceso a subrutinas y pilas 130 4.7 Entrada y salida en lenguaje simbélico. 136 4.8 Estudio de un caso: la arquitectura de programacién de la maquina virtual Java 139 Resumen 144 Para lectura posterior 144 Problemas 45 5. Los lenguajes y la maquina 151 5.1 El proceso de compilacién 1s] 5.1.1 Los pasos de la compilacién 152 5.1.2 La especificacién del mapeo 153 5.1.3 Como convierte el compilador los tres tipos de instrucciones al cédigo ensamblador 153 5.1.4 Movimiento de datos 155 5.1.5 Instrucciones aritméticas 157 5.1.6 Control de secuencia 158 5.2 El proceso de ensamblado 160 5.2.1 El proceso de ensamblado y los ensambladores de dos pasadas 161 5.2.2 El proceso de ensamblada y la tabla de simbolos 164 5.2.3 Tareas finales del programa ensamblador 166 5.2.4 Ubicacién de programas en memoria 168 5.3 Bnlace y carga 168 5.3.1 Enlace (linking) 169 5.3.2 Carga 71 XXll_primcepios DE ARQUITECTURA DE COMPUTADORAS. Bjemplo de programacién 173 5.4 Macroinstrucciones (Macros) 5 5.5 Estudio de un caso: extensiones al juego de instrucciones - Las instrucciones SIMD Intel MMX™ y Motorola AltiVec™™ 17 $.5.1 Fundamentos 178 5.5.2 Las arquitecturas biisicas 178 5.5.3 Registros vectoriales 180 5.5.4 Operaciones de aritmética vectorial 182 5.5.5 Operaciones de comparacién de vectores 184 5.5.6 Conclusiones de los casos de estudio 185 Resumen 185, Para lectura posterior 186 Problemas 187 6. Trayecto de datos y control 191 6.1 Fundamentos de la microarquitectura 192 6.2 Una microarquitectura para ARC 193 6.2.1 El trayecto de datos 193 6.2.2 La seccién de controt 201 6.2.3 Temporizacién 208 6.2.4 El desarrollo del microprograma 205 Ejemplo 24 6.2.5 Traps e interrupciones 216 6.2.6 Nanoprogramacién 218 6.3 Control cablendo 219 Ejemplo 227 6.4 Estudio de un caso: el lenguaje de descripcién de hardware VHDL. 227 6.4.1 Antecedentes 228 6.4.2 ;Qué es VHDL? 228 6.4.3 La funcién mayoria y su descripcién en lenguaje VHDL 29 6.4.4 Sistema I6gico de nueve valores 233 Resumen 234 Para lectura posterior 234 Problemas 235 7. Memoria 243 7.1 Las jerarquias de ta memoria 243 7.2 Memoria de acceso aleatorio 245 7.3 Organizacién de un circuito integrado 246 7.3.1 Construccién de una memoria grande a partir de memorias pequefias 250 7.4 Médulos comerciales de memoria 251 inoice pé conTeminos XIII 7.5 Memoria de lectura 252 7.6 Memoria cache 254 7.6.1 Memoria cache de asignacién asociativa 256 7.6.2 Memoria cache de asignacién directa 260 7.6.3 Asignacién asociativa por conjuntos de la memoria cache 262 7.6.4 Rendimiento de la memoria cache 263 7.6.5 Tasas de acierto y tiempos de acceso 265 7.8.6 Memorias cache multinivel 267 7.6.7 Administracién de la memoria cache 268 7.7 Memoria virtual 270 7.7.1 Superposiciones (overlays) 270 7.7.2 Paginacién 2m 7.7.3 Segmentacién 274 7.7.4 Fragmentacion 216 7.7.5 Memoria virtual versus memoria cache an 7.7.6 El buffer de traducei6n anticipada (Translation Lookaside Buffer - TLB) 28 7.8 Temas avanzados 219 7.8,1 Arboles decodificadores 279 7.8.2 Decodificadores para memorias de acceso aleatorio muy grandes 280 7.8.3 Memorias de diteccionamiento por contenido (asociativas) 281 Ejemplo de disefio de una memoria: memoria RAM de doble puerto 285, 7.9 Estudio de un caso: la memoria Rambus 285 7.10 Estudio de un caso: el sistema de memoria Pentium de Intel 289 Resumen 292 Para lectura posterior 292 Problemas 293 . Entrada y salida 299 8.1 Arquitecturas de un tinico bus 300 8.1.1 Estructura de bus, protocolos y control 301 8.1.2 Frecuencias de reloj en el bus 302 8.1.3 Et bus siner6nico 302 8.1.4 El bus asincrénico 303 8.1.5 Arbitraje del bus, Maestros y esclavos 305 8.2 Arquitecturas de bus basadas en puentes 307 8.3 Metodologfas de comunicacién 309 8.3.1 Entrada-salida programada 309 8.3.2 Entrada-salida administrada por interrupciones 310 8.3.3 Acceso directo a memoria 312 8.4 Estudio de un caso: comunicaciones en Ia arquitectura Pentium de Intel 314. 8.4.1 El reloj del sistema, el reloj del bus y las velocidades de} bus 314 XUV. pruncipios DE ANQUITEETURA DE COMPUTADORAS 8.4.2 Direcciones, datos, memoria y entrada-salida 315 8.4.3 Las palabras de datos no requieren alineacién forzada 38 8.4.4 Ciclos de bus en la familia Pentium 318, 8.4.5 Ciclos de bus de lectura y escritura de memoria 316 8.4.6 El ciclo de bus de lectura por bloques (burst) 317 8.4.7 Retenci6n del bus para admitir pedidos de bus por parte de otro maestro 318 8.4.8 Velocidades de transferencia de datos 319 8.5 Almacenamiento masivo 320 8.5.1 Discos magnéticos 220 8.5.2 Cintas magnéticas 328 8.5.3 Tambores magnéticos 329 8.5.4 Discos épticos 330 Ejemplo: tiempo de transferencia de un disco rigido 332 8.6 Dispositivos de entrada 333 8.6.1 Teclados 334 8.6.2 Tabletas digitalizadoras 335 8.6.3 Ratones y trackballs 335 8.6.4 Lapices dpticos y pantallas sensibles al tacto 336 8.6.5 Palancas de control (joysticks) 337 8.7 Dispositivos de salida 338 8.7.1 Impresoras Miser 338 8.7.2 Pantallas de video 339 Resumen 342 Para lectura posterior 342 Problemas 343 9, Comunicaciones 347 9.1 Médems 347 9.2 Medios de transmisi6n 350 9.2.1 Lineas bipolares abientas 351 9.2.2 Lines de par trenzado 351 9.2.3 Cable coaxial 352 9.2.4 Fibra ptica 352 9.2.5 Sauélites 352 9.2.6 Microondas terrestres. 353 9.27 Radio 353 9.3 Arquitectura de redes: redes de érea local 354 9.3.1 El modelo OSI 354 9.3.2 Topologias 356 9.3.3 Transmisién de datos 358 {wotce OF comTENTDGS XV 9.3.4 Puentes (bridges), encaminadores (routers) y puentes de enlace (gateways) 359 9.4 Errores de comunicacién y cédigos correctores de errores 360 9.4.1 Tasa de error 360 9.4.2 Deteccién y correccién de errores 361 9.4.3 Control de redundancia vertical 367 9.4.4 Control de redundancia ciclica 368 Ejemplo: correccién de dos errores 370 9.5 Arquitectura de redes: Internet am 9.5.1 El modelo Internet 371 9.5.2 Revisi6n de puentes, encaminadores y conmutadores 376 9.6 Estudio de un caso: modo asincrénico de transferencia 378 9.6.1 Transferencia sincrénica contra transferencia asinerénica 379 9.6.2 {Qué es el modo asincrénico de transferencia? 380 9.6.3 Arquitectura de una red ATM. 381 9.6.4 Perspectivas de ATM. 383 Resumen 383 Para lectura posterior 383 Problemas 384 10. Avances en la arquitectura de computadoras 387 10.1 Andlisis cuantitativo de la ejecucién de un programa 388 10.1.1 Andlisis cuantitativo del rendimiento 390 Ejemplo: cdlculo del aumento de velocidad en un nuevo conjunto de instrucciones 301 10.2 De CISC a RISC 301 10.3 Segmentaci6n del trayecto de datos 393 10.3.1 Instrucciones aritméticas, de salto y de acceso a memoria 393 10.3.2 Segmentacién de las instrucciones 395 10.3.3 Cémo mantener ocupada la estructura 395 Bjemplo: andlisis de Ia eficiencia de una estructura segmentada 397 10.4 Superposicién de ventanas de registros 398 Ejemplo: c6digo compilado para ventanas superpuestas y saltos retardados 401 10.5 Maquinas con instrucciones nuiltiples (superescalares). El PowerPC 60t 406 10.6 Estudio de un caso: el procesador PowerPC como arquitectura superescalar 407 10.6.1 La arquitectura de programacién del PowerPC 601 407 10.6.2 La arquitectura de hardware del PowerPC 601 407 10.7 Méquinas con palabra muy larga de instruccién 410 10.8 Estudio de un caso: la arquitectura Intel |A-64 (Merced) 410 10.8.1 Antecedentes: fa arquitectura CISC 80x86 410 10.8.2. El procesador Merced: una arquitectura EPIC an 20VI_ermuceptos ce aRQUITECTURA DE COMPUTADORAS: 10.9 Arquitecturas paralelo 10.9.1 La taxonomia de Flynn 10.9.2 Redes de interconexién Ejemplo: red estrictamente no bloqueante 10.9.3 Asignacién de un algoritmo a una arquitectura paralelo 10.9.4 Paralelismo de grano fino. La arquitectura CM-1 10.9.5 Paralelismo de grano grueso: CM-5 10.10 Estudio de un caso: el procesamiento paralelo en Sega Génesis 10.10.1 La arquitectura Sega Génesis, 10.10.2 Operacién de Sega Génesis 10.0.3 Programacién de Sega Genesis Resumen Para tectura posterior Problemas A. Légica digital A.1 Introduccién A.2 L6gica combinatoria A.3 Tablas de verdad A.4 Compuertas l6gicas AA.1 Implementacién electr6nica de la Iégica AA.2Buffers de tres estados AS Propiedades del dlgebra de Boole AG Representaci6n en suma de productos y diagramas légicos A.7 La forma producto de sumas A.8 Légica positiva o légica negativa A9 La hoja de datos ‘A.10 Componentes digitales A.10.t Niveles de integracién A.10.2 Multiplexores A.10.3 Demultiplexores A.10.4 Decodificadores A.10.3 Codificadores de prioridad A.10.6 Matrices l6gicas programables Ejemplo: un sumador con arrastre serie ALL Légica secuencial A.LL.1 El circuito biestable (flip flop) $-R A112 El flip flop S-R sinerénico A.1L3 El flip flop D y la configuracién maestro-esclavo A.11A4 Flip flops J-K y T A.12Disefio de maquinas de estado 414 ANG 418 422 424 429 431 433 434 435 436 437 437 439 441 44t at 442 444 447 449 450 453 455 456 458 461 461 463 465 466 469 41 472 474 476 477 479 {Noice De conreipes XVII Ejemplo: un detector de secuencia 482 Ejemplo: un controlador para una méquina expendedora 485 A.13El modelo Mealy y el modelo Moore. 487 A.14 Registros 488 A.15 Contadores 489 Resumen 491 Para lectura posterior 491 Problemas 492 B. Simplificaci6n de circuitos légicos 499 B.1 Reducci6n de bégica combinatoria y de I6gica secuencial 499 B.2 Reduccién de las expresiones de dos niveles 499 B.2.1El método algebraico 500 B.2.2E1 método de los mapas K 501 B.2.3E1 método tabular 509 B.2.4Simplificacién légica: su efecto sobre la velocidad y laeficiencia $17 B.3 Reduccién de estados $21 B.3.1 El problema de Ia asignacién de estados 524 Ejemplo de reduccién: un detector de secuencia 526 B.3.2 Tablas de transiciones 528 Ejemplo de tabla de transiciones: un detector de mayorfa 533 Resumen 535 Para lectura posterior 535 Problemas 536 indice analitico 541 Préloga Acerca dei libro Nuestro propésito al escribir este texto es describir el funcionamiento interno de la com- putadora digital moderna a un nivel que logte desmitificar lo que ocurre dentro de esta, El nico requisito previo para ta lectura de Principios de arquitectura de computadoras €s poscer un adecuado conocimiento prictico de un tenguaje de programacién de alto ni- vel. La seleccién del material cubre temas que habitualmente forman parte de un primer curso de arquitectura de computadoras @ de organizacién de computadoras, La profun- didad y la amplitud con que se han tratado los temas tienen como propésito colocar al estudiante principiante en un camino sétido para la continuidad de sus estudios en disci- plinas relacionadas con las computadoras. Cuando se requiere crear un texto sobre arquitectura de computadoras, las solucio- nes técnicas surgen en forma natural, en tanto que las caracterfsticas organizativas se relacionan con las prestaciones mAs importantes. Entre las caracteristicas que recibie- ron mayor atencién a lo largo de este texto se incluyen la eteccidn de la arquitectura de programacién (ISA, Instruction Set Architecture), el uso de los casos de estudio y un importante desarrollo de ejemplos y ejercicios. La arquitectura de programacién Los textos que analizan los Jenguajes absolutos de programacién tienen dos criterios pa- ra el tipo de arquitectura de instrucciones a utilizar: 0 se adopta un modelo propio, o se elige uno de los tantos modelos comerciales existentes en ef mercado. La eleccién afece ta al instructor, que puede necesitar una arquitectura compatible con una plataforma de ta que dispone para los trabajos de programacién que le asigna a sus estudiantes. Para mayor complicacién, ta plataforma local puede cambiar de semestre en semestre: ayer pudo ser MIPS, hoy un Pentium, mafiana un SPARC. Los autores optaron por ambos ca- minos al adoptar como arquitectura la de programacién un subconjunte de Ia arquitectu- ra SPARC, a la que lamaron ARC (4 RISC Computer, una computadora RISC). Esta se Utiliza a lo largo del texto, siendo complementada con herramientas de programacién in- XOL_PRINCIPIOS DE ARQUITECTURA DE COMPUTADORAS dependientes de la plataforma, que permiten simular tanto la arquitectura ARC como las arquitecturas que corresponden a los procesadores Intel X86 (Pentium) o MIPS. Casos de estudio, ejemplos y ejercicios Cada capttulo contiene al menos un caso de estudio como elemento que le permite al alumno acercarse a ejemplos reales sobre el tema. Esto ubica al tema en perspectiva, lo que, a juicio de los autores, aporta al material un aire de realismo ¢ interés. Se han incorporado tantos ejemplos y ejercicios como ha sido posible para cubrir los puntos mis significativos del texto. En el sitio web que acompafia al texto se encuentran disponibles ejemplos adicionales y soluciones a los problemas. Cobertura de los temas El enfoque de este libro presenta a Ia computadora como un sistema integrado. Si se debiera elegir un subiitulo, este podria ser “Un enfoque integrado”, lo que reflejaria las relaciones de alto nivel que vinculan a tos distintos elementos entre ellos. Cada tema se cubre en el contexto de la integridad de ta méquina de la que es parte, y con la pers pectiva de determinar cémo afecta la implementacién a la conducta del sistema. Por ejemplo, la precisién finita de los ntimeros binarios se relaciona con Ia cantidad de unos que pueden sumarse a un atimero expresado en punto ftotante, antes de que el error en la representacién exceda el valor de 1, (Por esta razén, debe evitarse el uso de nime- ros de punto flotante como variables de control en rutinas tipo Lazo.) Otro ejemplo es el tema de ta vinculacign entre subrutinas, que se trata con fa expectativa de que el lec- tor pueda enfrentarse alguna vez con la necesidad de programar en el lenguaje C 0 con programas escritos en Java que invocan subrutinas escritas en otros lenguajes de alto ni- vel, como Fortran, ‘Como otro ejemplo del enfoque integrado, los conceptos de deteccién y correccién de errores se analizan en el contexto de Ia transmisin y almacenamiento masivos, an- te la perspectiva de que el lector pueda encarar aplicaciones referidas a redes (en las que los errores y las pérdidas de datos son un hecho cotidiano) 0 deba lidiar con ele- mentos de almacenamiento poco confiables, como los CD-ROM (compact disk-read only memory). La arquitectura de las computadoras impacta sobre Ja mayor parte de tas actividades que los profesionales de la computacién realizan diariamente, por lo que el enfoque in- tegrado orienta el texto hacia 1a diversidad de reas afines en las que dicho profesional debe capacitarse. Este énfasis es consecuencia de una transicién que esté ocurriendo en muchos planes de estudio de carreras de grado relacionadas con Ja computaci6n. A me~ dida que las arquitecturas de las computadoras se complican cada vez més, deben ser tratadas con niveles de abstracci6n cada vez mayores, ya que, de alguna manera, se han PROLOGO 1X1 wuelto dependientes de la tecnologia. Por esta cazén, la mayor parte del (exto trata sobre Ja arquitectura de computadoras con un enfoque de alto nivel, en tanto que los aspectos de menor nivel, dependientes de lo teenolégico, se tratan en los apéndices y en los casos de estudio, Los capitulos En el capitulo 1, “Introduccién’, se da comienzo al texto con una breve historia de la arguitectura de las computadoras, avanzando a través de las partes bésicas que las com- ponen, con lo que el estudiante termina con una visién de los sistemas de computacién desde el alto nivel. Se presenta el modelo convencional de Von Neumann, seguido por el andlisis descriptivo de una computadora tipica, Este capitulo se propone sentar las bases para permitir un andlisis mas profundo en capftulos sucesivos. Enel capitulo 2, “Representacién de la informacién”, se cubren los temas basicos relacio- nados con la representacién de datos. Se analizan las representaciones de niimeros signa- dos, a través de las convenciones de complemento a uno, complemento a dos, magnitud y signo, y representacién en exceso, Este capitulo también toma en cuenta la representacién, decimal co¢ificada en binario (BCD), utilizada habitualmente en calculadoras. Ademds, se cubre la representacién de ntimeros en formato punto flotante, incluyendo la norma TEBE 754 de uso comin en mimeros binarios. Por ultimo, también se analizan las repre- sentaciones ASCII, EBCDIC y Unicode para caracteres. En ef capitulo 3, “Ariumética’, se analizan la aritmética de computadoras y las represen- taciones avanzadas. Se estudian los procedimientos para realizar operaciones de suma, resta, producto y cociente en notacién de punto fijo. Se consideran también las represen- taciones de complemento a nueve y complemento a diez, utilizadas habitualmente en el célculo BCD, asi como las operaciones aritméticas en BCD y en punto flotante. Se desa- rrollan, ademds, los métodos requeridos para mejorar la eficiencia de estas operaciones, como la suma con arrastre anticipado, la multiplicacién matricial y Ia divisiGn a través de iteracién funcional. Para completar, se analiza brevemente la teoria de residuos, para introducir un enfoque poco convencional de alto rendimiento. En él capitulo 4, “La arquitecura de programacién”, se introducen los conceptos sobre fos componentes arquitecténicos bdsicos requeridos para Ia ejecucién de los programas. Se analizan tos conceptos de lenguaje de maquina y de ciclos biisqueda-ejecucién. Se de- talla la organizacién de la unidad central de proceso, se analizan las funciones del bus del sistema en la articulacién entre las unidades aritumético-légica, de memoria, de entrada y salida, y se detalla la estructura de la unidad de control. En el contexto de la arquitectura ARC (A RISC Computer), ligeramente basada en la arquitectura comercial SPARC, se analiza el tema de la programacién en lenguaje de 2OU_PRONCIPIOS OE AROUITECTURA DE COMPUTADORAS méquina. La arquitectura descriptiva ARC mantiene, con respecto a SPARC, los nom- bres y formatos de las instrucciones, los formatos de los datos y la sintaxis de su lengua~ Je simbélico de programacién, pero, por otra parte, presenta una gran simplificacién res- pecto de aquella. En la mayor parte del capitulo se utilizan solo 15 de fas instrucciones de SPARC, admitiendo en principio un tinico formato para datos, de 32 bits sin signo. Se analizan los formatos de instrucciones, asf como tos modos de direccionamiento. As ‘mismo se trata con distintos enfoques el manejo de subrutinas, que incluye un andlisis detallado de la transferencia de parémetros mediante el uso de una pila. En el capitulo 5, “Los lenguajes y 1a m4quina”, se relaciona el enfoque del programa- dor de un sistema de computacién con la arquitectura de la méquina, Se plantean temas de programacién del sistema, con el objetivo de colocar el lenguaje de bajo nivel a la vista del programador. El capitulo comienza con una explicacién del proceso de com- pilacién, para lo cual primero se analizan los pasos involucrados en la compilacién y luego se plantea Ia generaci6n del c6digo objeto. Se describe el proceso de traducci6n a lenguaje de maquina a través de un ensamblador (assembler) de dos etapas, agregan- do a la descripcién ejemplos de la generacién de tablas de simbolos. Se cubren tam- bién los conceptos asociadas con macros y con los procesos de vinculacién (linking) y de carga. En el capitulo 6, “Trayecto de datos y control”, se realiza el andlisis paso a paso de una unidad de control y los caminos de los datos. Se estudian fos dos métodos cominmente utilizados para las unidades de control: el del controt microprogramado y el de la unidad de control cableada. El instructor podré adoptar un método y omitir el otro, © cubrie ambos en funcién de sv disponibilidad de tiempo. Las unidades de control microprogra- madas y las unidades cableadas, utilizadas como ejemptos, implementan e! subconjunto ARC del lenguaje de programaci6n SPARC presentado en el capitulo 4, En el capitulo 7, “Memoria”, se analiza la memoria de la computadora, comenzando por Ta organizacién de una memoria de acceso al azar bisica, y continuando con conceptos avanzados como memoria virtual y cache. Se analizan los esquemas tradicionales de mapeo de memoria cache, tales como el directo y el asociativo, asi como el cache en va- rios niveles, También se tratan temas como el paginado (overlays), las politicas de reem- plazo, la segmentaci6n, 1a fragmentaci6n y el concepto de buffer de traduccién an pada (ILB, translation lookaside buffer). £n el capitulo 8, “Entrada y salida”, se cubren los métodos de acceso y comunicaciones en buses, Se analiza también la vinculacién entre buses. Ademds, trata sobre los distin- tos dispositivos de entrada-salida de uso habitual, como discos, tectados, impresoras y pantallas. PROLOED xxIN Enel capitulo 9, “Comunicaciones”, se analizan las arquitecturas de redes, con enfoques s0- bre médems, redes de area local (LAN, local area network) y redes de drea extendida (WAN, wide area network), Se plantea especial interés en el anilisis de las arquitecturas de redes, analizando en forma sencilla los protocolos que enfocan las prestaciones clave de di- has arquitecturas de redes. Se analizan en profundidad la deteccidn y ta correccién de erro- res, y se introduce, en el contexto de Internet, el esquema de protocolo TCP/IP. Enel capitulo 10, “Avances en Ia arquitectura de computadoras”, se cubren las caracte- risticas avanzadas de las arquitecturas que han aparecido o cambiado de enfoque en los Uiltimos afios. La primera parte del capitulo analiza los conceptos de la arquitectura de procesadores para las computadoras con conjunto reducido de instrucciones, mas cono- cidas como de arquitectura RISC (Reduced Instruction Set Computer) y las consecuen- cias derivadas de esta arquitectura. La dltima parte de este capitulo trata acerca de las méquinas de instruccién multiple y de palabra muy larga de instruccién (VLIW, Very Large Instruction Word). A través de un caso de estudio se hacen visibles al programa- dor las prestaciones de la arquitectura RISC, para lo cual se realiza el andlisis paso a pa- so de un programa SPARC generado por un compilador C, con explicaciones acerca del uso de registros, de pilas y de segmentacién (pipelining). El capitulo cubre también las arquitecturas distribuidas y paralelas, asf como las redes de interconexidn utilizadas en el procesamiento paralelo y en el procesamiento distribuido. En ol apéndice A, “Légica digital”, se analizan los temas asociados con légica combina- toria y secuencial, ademas de establecer la base que permita entender el disefio légico de Jos componentes analizados en el resto del texto, El apéndice A se inicia con una descrip- cidn de tablas de verdad, algebra de Boole y ecuaciones légicas. Asimismo, se describe la sintesis de circuitos légicos combinatorios, explordndose una gran cantidad de ejemplos. Se analizan los componentes de mediana escala de integracién (MSI, Medium Scale Integration), tales como multiplexores y decodificadores; se completa el andlisis con ejemplos de disefto de circuitos que utilizan componentes MSI. En este apéndice se analiza también el concepto de l6gica sincrénica, inicidndose con una introduccién de los aspectos de temporizacién de los circuitos biestables (flip- flops). Se trata, asimismo, la sintesis de circuitos Idgicos sincrdnicos, con relacién a sus diagramas de estados, sus tablas de estados y el disefio de légica sincrénica. £n el apéndice B, “Simplificacién de circuitos ldgicos”, que es un complemento del apéndice A, se cubren los métodos de reduccién de légica tanto combinatoria como se- cuencial. Se analizan los métodos de minimizacién basados en 1a simplificacién alge- braica, asf como en los diagramas de Kamangh y los métodos tabulares de Quine-Mc- Cluskey para funciones simples y miiltiples. Tambign se analizan la reduccién y la asig- nacién de estados. XXIV _PRINGIPIOS CE ARQUITECTURA OE COMPUTADORAS Ordenamiento de los capitulos El orden de los capitulos ha sido planteado de modo tal que los mismos puedan desa- rrollarse en orden numérico, aun cuando el instructor puede modificar e] ordenamien- to propnesto para adecuarlo a un programa o plan de estudios particular. La figura P.1 plantea los requisitos necesarios para establecer relaciones entre los capitulos, deta- Handose a continuacién algunas consideraciones especiales respecto de la sccuencia planteada. Capitulo 1: Introduce ‘Capitulo 2: Representacién de la informacién Capitulo 3: Aritmética fe —[ Apéndice A: Logica digital] Capitulo 4: La arquitectura| ‘Apéndiee B: Simplifieacion| de programacién de cireuitos l6gicos ‘Capftulo 5: Las lenguajes Capitulo 7: Memoria yy la méquinal I } Capitulo Capitulo 6: Trayectos Entrada y slide de datos y control 1 ‘Capitulo 9: Comunicaciones Capito 10; Avances en la rguitectura de computadoras| Figura P.1 » Requerimientos de correlatividad entre capitulos. El capftulo 2, “Representacién de la informacién”, deberia desarrollarse antes que el ca- pitulo 3, “Aritmética”, dado que este requiere de los conocimientos de representaci6n de datos. Los apéndices A, “Légica digital”, y B, “Simplificaci6n de circuitos 16gicos”, pueden omitirse si el tera de légica digital se ha desarrollado en una asignatura previa de la carrera; pero si el material no se cubre, las estructuras de algunos componentes (ta- Jes como una unidad aritmético-légica o un registro) pueden quedar en el misterio sino se desarrolla al menos el apéndice A antes que el capitulo 3. Los capitutos 4, “La arquitectura de programacién”, y 5, “Los lenguajes y la maquina”, aparecen en Ja primera mitad del texto por dos razones: (1) introducen al lector en el fun- cionamiento de una computadora a un nivel relativamente alto, el que permite un enfoque desde arriba hacia abajo (top-down) del estudio de la arquitectura de ia computadora, y (2) PAGLOGO_XXY es importante iniciar la programaci6n en lenguaje de bajo nivel en forma temprana solo si se realizan pricticas de programacién como parte del curso. El capitulo 10, “Avances en la arquitectura de computadoras”, aparece generalmente en los niveles de grado de los cursos de arquitectura; por ende, deberia desarrollarse solo si el tiempo lo permite, luego de haber desarrollado todo el contenido de los capitulos anteriores. El sitio web Acompaiiando a este texto, se ofrece un sitio web vinculado con el mismo: http: //www.pearsonedlatino.com/murdocca Este sitio contiene un conjunto de elementos de apoyo, como software y diapositivas en formato Acrobat, y una fe de erratus. Para quienes adopten el libro como texto, también se encuentran disponibles las soluciones a los problemas, as{ como problemas tipo para exdmenes con sus respectivas soluciones (aquellos docentes que deseen acceder a esta in- formacién, deberin conectarse con su representante de Prentice Hall). Herramientas de software Se provee un ensamblador y un simulador para la arquitectura ARC, asi como subcon- juntos de los lenguajes de m4quina de los procesadores MIPS y X86 (Pentium). Escri- tos como aplicaciones Java para aprovechar su portabilidad, los ensambladores y simu- ladores pueden descargarse desde el sitio web mencionado. Trasparencias Todas las figuras y tablas de Principios de arquitectura de computadoras se ban inclui- do en una presentacién de diapositivas bajo Adobe Acrobat. La versi6n gratuita de Acro- bat Reader se puede obtener en www.adobe.com. Problemas de exdmenes y soluciones Los problemas tipo y sus soluciones han sido ampliamente probados en clase. Los pro- lemas son los suficientes en cantidad como para servir en exdmenes y evaluaciones, y para ser utilizados como problemas pricticos en clases de repaso a eriterio del instructor. Los problemas tipo (que han sido incluidos con sus soluciones) y las soluciones a los pro- blemas se encuentran a disposicién del instructor que adopte el texto. (Para acceder a es- te sector del sitio web, deberé ponerse en contacto con su representante de Prentice Hall. Los autores solo requieren que este material no sea colocado en algiin otro sitio web.) 2XXV1_PRINCIPIDS DE ARQUITECTURA DE COMPUTADORAS A pesar de los mejores esfuerzos de los autores, editores, revisores, evaluadores y tra- ductores, esie libro seguramente contiene errores. Antes de informar acerca de algiin error, sirvase verificar en www,pearsonediatino.convmurdocea para ver si ya ha sido catalogado. Los errores detectados deberin ser informados a pocabugs@cs.rutgers.edu. El asunto del mensaje de correo electrénico remitido a esa direccién deberd indicar el numero del capitulo en el que se ha encontrado el error. Créditos y agradecimientos Los autores no han trabajado solos durante la creacién de este libro, por lo que agradecen profundamente el apoyo de la gran cantidad de gente que ha influido en la preparacién de este texto y en el pensamiento de los autores en general. Los autores desean agradecer, primeramente, a tos editores Paul Becker, Thomas Robbins y Eric Frank, quienes tuvie- ron el panorama y la visidn para guiar este libro y sus materiales de apoyo a lo largo de todo el trayecto que Slev6 a su concrecién, Donald Chiarulli tuvo una influencia impor- tamte sobre una edici6n temprana de este libro, el que fue probado en clase en las univers sidades de Rutgers y de Pittsburgh, Saul Levy, Donald Smith, Vidyadhar Phalke, Ajay Bakre, Jinsong Huang y Srimat Chakradhar colaboraron con la evaluacién del material en Rutgers y aportaron parte del texto, problemas y algunas aclaraciones de alto valor. Brian Davison y Shridhar Venkatanarisam trabajaron sobre la primera versiGn de las so- luciones y aportaron muchos comentarios de gran ayuda. Irving Rabinowitz aport6 una buena cantidad de problemas. Larry Greenfield hizo su aporte desde el punto de vista de un estudiante nuevo en el tema, por lo que se debe tomar en cuenta su participacién en la organizaci6n del capitulo 2, También quieren destacar su reconocimiento a Blair Gabert Bizjak por haber provisto el esqueleto para la mayor parte del material referido a redes de rea local. Ann Yasuhara aporté el texto sobre las contribuciones de Alan Turing a la ciencia de la computacién. William Waite, de la Universidad de Cotorado, Boulder, pro- porcioné buena cuntidad de los ejemplos en lenguaje de maquina. Ann Root, de la Univer- sidad de Colorado, Boulder, realiz6 un trabajo estupendo en el desarrollo de Jas herrarnien- tas de simulacién que se encuentran disponibles en el sitio web. La poblacién estudiantil de las universidades de Rutgers y Colorado sirvié como amplio campo de ensayo de! material, por lo que los autores desean reconocer su paciencia y sus recomendaciones durante la elaboracién del material para el libro. También desean hacer puiblico su agradecimiento a los revisores, quienes colabora- ron ampliamente al sugerir cambios a los manuscritos, lo que incluye a Perry Alexander (University of Cincinnati), Thomas L. Casavant (University of lowa, Electrical and Computer Engineering Department), J. Kelly Flanagan (Brigham Young Universit Dept. of Computer Science), Shelly Dalton Goggin (University of Colorado, Denver), aguas _yorvn Nikrouz Faroughi (California State University Sacramento, Computer Science Dept.), Mark Jones (Virginia Tech., Department of Electrical and Computer Engineering), Thuy T. Le (Profesor Adjunto. Electrical Engineering Dept., San Jose State University, ¢ In- vestigador Senior, High Performance Computing Group, Fujitsu America, Inc.), Gary Lippman, (Profesor, California State University Hayward, Dept. of Mathematics and Computer Science), Walid Najjar (Colorado State University, Computer Science Dept.), William Hsu (San Francisco State University), Jyh-Charn (Steven) Liu (Computer Science Dept, Texas A&M University), David B. Wortman (University of Toronto, Dept. of Computer Science), Janusz Zalerwski (University of Central Florida, Orlando, Florida, Dept. of Electrical and Computer Engineering). ‘Yo, Miles J. Murdocca quiero expresar mi reconocimiento a mis padres Dolores y Nicolas Murdocca, mi hermana Marybeth y mi hermano Mark por su aliento. Mi espo- sa Ellen y mis hijas Alexandra y Nicole han sido una fuente interminable de aliento € inspiracién. No creo haber podido encontrar la cnergfa necesaria para acometer el es- fuerzo realizado sin todo el apoyo recibido de ellos. Yo, Vincent P. Heuring, deseo agradecer el apoyo de mi esposa Gretchen, quien fue excesivamente paciente y alentadora durante todo el proceso de escritura de este libro. Existen, seguramente, més personas ¢ instituciones que han colaborado con este li- bro, tanto en forma directa como indirecta, cuyos nombres pueden haber sido omitidos en forma accidental, A esa gente y a esas instituciones, Ios autores quieren ofrecer aqui su tdcito reconocimiento y sus disculpas por la omisién de los reconocimientos explici- tos que hubiesen corespondido, Miles J. Murdocca Rutgers University murdocca@es.rutgers.edu Vincent P. Heuring University of Colorado - Boulder heuring @colorado.edu Capitulo 1 Introduccion 1.1 Planteo general El concepto de arquitectura de computadoras, enfocado desde el punto de vista de un programador, se relaciona con el comportamiento funcional de un sistema de computa- cin. Este punto de vista incluye aspectos tales como el tamaiio de los diferentes tipos de datos (por ejemplo, el uso de 16 bits para la representaci6n de enteros) y los tipos de ope- faciones que se pueden realizar (como la suma, la resta y los llamados a subrutinas). La organizacién de computadoras se refiere a las relaciones estructurales que no son visi- bles para el programador, como las interfaces hacia los dispositivos periféricos, la fre- cuencia del reloj y la tecnologia utilizada en las memorias, Este texto trata tanto de la ar- quitectura como de la organizacién, haciendo uso del término “arquitectura” para referirse en forma amplia tanto a la arquitectura como a la organizacién de la computadora. En la arquitectura de computadoras suele emplearse el concepto de niveles. La idea basica es ja de la existencia de muchos niveles, 0 enfoques, desde los cuales considerar a la computadora, los que van desde el nivel superior, en el que el usuario ejecuta pro- gramas o utiliza la computadora, al nivel inferior, consistente en transistores y cables. Entre los niveles superior e inferior existe una cantidad de niveles intermedios. Antes de analizar estos niveles presentaremos una breve historia de la computaci6n, con el objeto de obtener un enfoque claro acerca de su evolucién. 1.2 Una historia breve La existencia de dispositivos mecdnicos destinados al control de operaciones complejas se conoce al menos desde el siglo xvi, cuando ya en las cajas de msica se utilizaban ci- Jindros rotativos con clavijas en una forma similar a las de la actuatidad. Las méquinas para In realizacién de célculos, como ejemplo de elementos que no solo repiten una me- lodia predeterminada, aparecieron en el siglo siguiente, Blas Pascal (1623-1662) desarroll6 una calculadora mecénica con el objeto de cola- borar en el cdlculo de impuestos que realizaba su padre. La calculadora Pascalina, desa- 2. PRunciPios DE ARQUITECTURA DE COMPUTADORAS rrollada por Pascal, consta de ocho diales que se conectan a un tambor (véase la figura 1.1), vinculados entre ellos en una forma innovadora que provoca que uno de los diales se desplace en una posicién cuando se produce un arrastre desde un dial de menor posicién. Se coloca una ventana por encima del dial para permitir la observacién de la posici6n, en forma similar a Ia del odémetro de un auto, con la diferencia de que los diales se encuen- tran colocados horizontalmente, a la manera det dial de un teléfono rotativo. Figura 1.1 ¢ La maquina calculadara de Pascal, (Reproducida con autorizacién del Departamento de Ciencias dela Computacion, Universidad ce Manchester.) Adin existen algunas de las maquinas sumadoras de Pascal, de las que comenz6 a cons- truir en 1642. No obstante, recién alrededor del aito 1800 hubo quien agrupara los con- ceptos de control y cilculo mecénicos en una Gnica miquina que pudiese reconocerse hoy como formada por las partes basicas integrantes de una computadora. Ese alguien fue Charles Babbage. ‘A Charles Babbage (1791-1871) se lo menciona a veces como “el abuelo” de la com- putadora, mas que como “el padre” de la misma, dado que nunca construy6 una versién préctica de las maquinas que disefi6. Babbage vivid en Inglaterra en una época en la que las tablas mateméticas eran de uso comin en la navegacién y en ol trabajo cientifico. Esas tablas se computaban manualmente y, por consiguiente, contenfan gran nimero de errores, Frustrado por las imprecisiones, Bubbage se decidié a crear una méquina que re- solviera célculos a través del posicionamiento de engranajes y de su movimiento. La ma- quina que disefié permitia incluso la generacién de una plancha para impresién, lo que eliminaba los errores que podrtan producirse debido a la intervencién del tipégrafo. Las maquinas de Babbage poseian medios para la lectura de los datos de entrada, el al- ‘macenamiento de los datos, 1a produccién de los datos de salida y el control automatico de la operaci6n de la méquina. Estas son funciones bésicas que se encuentran en précti- ‘camente cualquier computadora moderna. Babbage creé un pequefio prototipo de su ma- quina diferencial, la que evaltia potinomios utilizando el método de las diferencias fini- tas. El éxito del concepto de la méquina diferencial le permitié lograr apoyo gubernamental para la maquina analitiea, mucho més grande y sofisticada, la que poseia Gapituo 1+ mroouccrin 3 ‘mecanismos para realizar bifurcaciones (toma de decisiones) y medios para programar- la empleando tarjetas perforadas, en forma similar a lo que se conoce come tejide por patrones Jacquard. Babbage discié la méquina analitica aunque nunca la construy6, dado que las toleran- ius mecinicas requeridas por su disefio no podian logrurse con la tecnologia de esa épo- ca. En 1991, el Museo de Ciencias de Londres construyé una versién de la méquina dife- rencial de Babbage, la que ain hoy puede ser observada. Pas6 més de un siglo, hasta ef comienzo de la Segunda Guerra Mundial, antes de que surgicra un nuevo avance importante en la computacién. En Inglaterra, los submarinos alemanes U-boat provocaban grandes daiios en los barcos aliados. Los U-boats recibian comunicaciones desde sus bases ubicadas en Alemania, para las que se utilizaban cédi- g0s enctiptados implementados por una maquina desarrollada por Siemens AG y cono- cida como ENIGMA. EI proceso de encriptado de la informacién ya se conocia desde mucho tiempo atrés, y hasta el presidente estadounidense Thomas Jefferson (1743-1826) habia desarrollado un antecesor de ENIGMA, sin haber Ilegado a construir la maquina, El proceso de deco- dificar la informacién encriprada era una tarea mucho més pesada, Este fue el problema que orienté los esfuerzos de Alan Turing (1912-1954) y de otros cientificos ingleses ha- cia la creacién de sistemas para descifrar cédigos. Durante la Segunda Guerra Mundial, Turing era el criptégrafo més importante de Inglaterra, siendo conocido como quien cam- bi6 el concepto de la criptografia, que pasé de ser tema para quienes se ocupaban de des- cifrar idiomas antiguos a ser un tema de y para matemticos. De Bletchley Park, Inglaterra, lugar de trabajo de Turing, surgié Colossus, una exito- sa méquina decodificadora. Su funcionamiento se basaba en la alimentacién de la maqui- na a través de una cinta de papel, cuyos datos se procesaban en valvulas de vacio, reali- zando los cflculos entre esas vélvulas de vacio y una segunda cinta de papel con la que se alimentaba a la m4quina. La programaci6n se efectuaba a través de paneles de cone- xi6n, Se desconoce la participacién de Turing en las distintas versiones de la mquina de- bido al secreto que rodeaba al proyecto, pero algunos aspectos de su vida y obra se pu- dieron ver en Ia obra Breaking the Code, que fuera puesta en escena en Londres y Nueva York sobre finales de la década de 1980, Alrededor de la misma época en que Turing desarrollaba sus esfuerzos, J. Presper Ec- kert y John Mauchly comenzaban a crear una maquina que pudiera usarse para el céleu- lo de tablas de trayectorias balisticas, para la Marina de los Estados Unidos. Et resultado de los esfuerzos de Eckert y Mauchly fue ENIAC (Electronic Numerical integrator and Computer). ENIAC estaba constituida por 18.000 valvulas de vaefo, tas que conforma- ban la seccién de célculo de la maquina. La programacién y el ingreso de los datos se rea- lizaban a través de la fijacién de elementos conmutadores (Ilaves) y del intercambio de cables. No existia el concepto de programa almacenado, ni tampoco una unidad de me- ‘moria central; no obstante, estas limitaciones no eran importantes dado que todo lo que ENIAC debfa hacer era e! cilculo de trayectorias balisticas. A pesar de no haber podido 4_PRINCIPIOS DE AROUTECTURA DE COMPUTADORAS. entrar en servicio hasta 1946, tuego del final de la guerra, fue considerada un modelo exi- toso y utilizada durante nueve afios. Luego del éxito de ENIAC, Eckert y Mauchly, que trabajaban en 1a Escuela Moore en la Universidad de Pennsylvania, se vincularon con John von Neumann (1903-1957), quien de- sarrollaba actividades en el Instituto de Estudios Avanzados de Princeton. En forma conjun- ta trabajaron sobre el desarrollo de una computadora de programa almacenado a la que Ila- maron EDVAC, Debido al surgimiento de un conflicto, los grupos de Pennsylvania y Princeton se separaron. El concepto de la computadora con programa almacenado, no obs- tante, prosper6; el resultado fue un modelo funcional de computadora de programa almace- nado, conocido como EDSAC, construido por Maurice Wilkes, de la Universidad de Cam- bridge, en 1947, . 1.3 El modelo von Neumann Las computadoras digitales convencionales presentan un aspecto comiin que se atribuye avon Neumann, aunque los historiadores coinciden en que el disefio en cuestién fue obra de todo el equipo. Ei modelo von Neumann consta de cinco componentes principales, tal como lo ilustra la figura 1.2. La unidad de entrada provee las instrucciones y los da- tos requeridos por el sistema, los que se almacenan en la unidad de memoria. Las ins- trucciones y los datos se procesan en la unidad aritmético-Iégien (ALU) bajo la direc- ci6n de la unidad de control. Los resultados obtenidos se envian a la unidad de salida. El conjunto constituido por las unidades aritmético-légica y de control se designa habi- tualmente bajo el nombre de unidad central de proceso (CPU). La mayoria de las com- putadoras comerciales pueden descomponerse en estas cinco unidades. Unidad de memoria { Unidad Unidad Unidas heft} aitmatica- de entrada vogice (ALD Unidad de salida ‘Unidad de control Figura 1.2 Una computadora digital segin el mode'o von Neumann. 12s flechas gruesas cepresentan ‘ulas de datos. Las flechas mds finas representan rulas de control, captruco 1 + irropucciim § El programa almacenado es el aspecto més importante del modelo von Neumann, Los programas se almacenan en la memoria de la computadora junto con los datos a procesar. Si bien en Ia actualidad podemos plantear esto como un hecho concreto, antes del desa- rrolo de las computadoras de programa almacenado, los programas se almacenaban en un medio extemno, tales como ios tableros de clavijas ~anteriormente mencionados-, cin- tas o tarjetas perforadas. En la computadora de programa almacenado, el programa pue- de manipularse como si se tratara de datos, Este concepto da origen a los compiladores y sistemas operativos, y es Ia base de la gran versatitidad de las computadoras modemas. 1.4 El modelo de interconexidn a través de bus Si bien ef modelo yon Neumann prevalece en la estructura de las actuales computadoras, el mismo ha sido modernizado. La figura 1.3 muestra e! modelo de una computadora que utiliza e) sistema de interconexién a través de lo que se denomina bus del sistema. El modelo considera que el sistema de computacidn est4 constituido por tres subconjuntos, Ja CPU, la memoria y la entrads-salida (E/S). Este refinamiento del modelo von Neu- ‘mann combina la ALU y 1a unidad de control en un solo bloque funcional, 1a CPU. Las unidades de entrada y de salida se combinan, asimismo, en una unica unidad de entrada- salida. ‘Lo més importante de este modelo es que realiza las comunicaciones entre los com- ponentes por medio de un camino compartide conocido como bus del sistema*, consti tuido a su vez por un bus de datos (que trasporta la informacién que se est trasmitien- do), un bus de direcciones (que determina hacia donde esta siendo enviada dicha informacién) y un bus de control (que describe aspectos de Ia forma en que se esté Ile- vando a cabo la mencionada trasferencia de informacién). Existe también un bus de ali- mentaci6n, que lleva energia eléctrica a los componentes. Este ultimo no figura en los esquemas pero se sobreentiende su presencia. Algunas arquitecturas pueden tener, ade- més de los anteriores, un bus de entrada-salida, Fisicamente, los buses estén constituidos por conjuntos de cables agrupados de acuer- do con su funcién. Un bus de datos de 32 bits contiene 32 cables individuales, cada uno de los cuales trasporta un bit de datos (distinguiéndolo de la informacién de direcciones o contol). En este sentido, el bus del sistema es, en realidad, un grupo de buses indivi- duales clasificados de acuerdo con su funcién, El bus de datos trasporta datos entre los componentes del sisteria. Algunos sistemas tienen buses de datos separados para el ingreso o la salida de informacién hacia o desde * M. de T: Se ha preferido mantener la denominaci6n original de bus para distinguir este conjunto de lineas ‘léctricas. a pasar del posible reemplazo por términos como barra, mazo 9 similares, utlizados para definir ‘conjuntos de cables, debido a que dicha término ya es de uso comiin en el ambiente de la computacién, la CPU, en euyo caso existirén un bus de entrada de datos y otro bus de salida de da- tos. Pero, més a menudo, un Gnico bus de datos cumple con la funcién de transportar los datos en una u otra direccién, aunque nunca en ambas direcciones en forma simulténea. | madelo de un sistema de computacién basado en un bus. (Apartado por Donald Chiaruli, Lnivarsidad de Pitsburg.] Figura 1.: Siel bus tiene ser compantido por diferentes elementos que se comunican entre si, los ele mentos deben tener identidades distintivas: direcciones. En algunas computudoras, todas las direcciones se suponen direcciones de memoria sin importar que formen parte de la memoria del sistema o que, en realidad, sean dispositivos de entrada-salida, mientras que en otras maquinas los dispositivos de entrada-salida tienen direcciones de entrada-salida separadas. (El tema del direccionamiento de entrada-salida se trata con mas detalle en el capitulo 8, “Entradas y salidas”.) La locacién o direceién de memoria identifica una celda de memoria en la que se al- macena informaci6n, tal como se utiliza la direcciGn postal para identificar el lugar en que un individuo recibe 0 envia comespondencia, Durante una operacién de lectura o escritura de memoria, el bus de dirceciones contiene la direecién de la celda de memoria en fa que debe leerse 0 escribirse el dato. Debe notarse que las expresiones “lectura” y “escritura” se plantean con respecto a la CPU: ta CPU lee datos desde la memoria y los escribe en la me- moria. Si se requiere leer un dato desde ta memoria, el bus de datos contend el valor lef- do desde la celda de memoria seleccionada. Si la informaci6n se escribiera en memoria, ol bus de datos contendria el valor del dato que se pretende almacenar en la memoria. El bus de control es algo bastante mas complejo, por lo que el andlisis de este bus que- dar4 diferido para capitulos posteriores. Por el momento, el bus de contro! puede consi- derarse como el elemento que permite Ia coordinacién del acceso a los buses de datos y de direcciones, y la orientacién de datos hacia componentes espectficos 1.5 Niveles de maquina Tal como sucede con cualquier sistema complejo, la computadora puede verse desde di- ferentes perspectivas, o niveles, que van desde el nivel superior correspondiente al usua- rio, hasta el nivel inferior, el de los transistores, Cada uno de estos distintos niveles repre- senta una abstraccién de la computadora, Probablemente, una de las razones del enorme capituto 1 + wrronuceris 7 Exito de la computadora digital es el alto grado de independencia o separaci6n existente entre los niveles de abstracci6n. Este planteo puede apreciarse facilmente: un usuario que necesita utilizar un programa procesador de texto requiere conocer muy poco o nada acerca de la programacién de la computadora que esté utilizando, En forma similar, un programador no necesita preocuparse por la estructura de los circuitos légicos que cons- tituyen la computadora. La separacién de estos niveles ha sido explotada en forma muy interesante en el desarrollo de computadoras compatibles “hacia arriba” 1.5.1 Compatibilidad “hacia arriba” La invenciGn del transistor trajo come consecuencia un ripido desarrollo de la electréni- cade computadoras, y juntamente con este desarrollo surgi6 el problema de la compati- bilidad. Los usuarios de computadoras pretendian hacer uso y aprovechar las ventajas de las méquinas mas modernas y mAs rpidas, pero cada modelo nuevo de computadora pre- sentaba una arquitectura diferente, por lo que los viejos programas no podian funcionar sobre los nuevos circuitos. El problema de la compatibilidad entre hardware y software se agudiz6 tanto que los usuarios muy a menudo dilataban la compra de m&quinas nue- vas debido al costo que significaba reescribir los programas que debfan funcionar sobre ‘estos equipos, Cuando el usuario por fin adquirfa una computadora nueva, esta podfa per- manecer instalada e indtilmente inactiva por meses, mientras se pracedfa a la reconver- sién de los conjuntos de datos y programas para adecuartos a los nuevos sistemas. En una apuesta exitosa que enfrent6 « 1a compatibilidad con el rendimiento, IBM fue pionera en el concepto de la “familia de méquinas”, aplicado en su serie 360, Las computa doras més poderosas de la misma familia podfan ejecutar los programas escritos para las méquinas menos potentes, sin modificaciones en dichos programas (compatibilidad “ha- cia arriba”). Este tipo de compatibilidad permitié que el usuario puediera avanzar hacia una maquina més rdpida y con mayores prestaciones sin tener que reescribir los progra- mas que funcionaban en las méquinas menos poderosas. 1.5.2 Los niveles La figura 1.4 muestra siete niveles dentro de la computadora, comenzando desde el nivel del usuario y descendiendo hasta el nivel de Jos transistores. A medida que se desciende desde el nivel superior, estos niveles se toman menos “abstracts” y comienza a apare- cer, cada vez miés, la estructura interna de la computadora, En los préximos puntos ana- lizaremos estos niveles. El nivel del usuario o del programa de aplicacion Este es el nivel de la computadora con el que nos encontramos mas familiarizados. En es- te nivel, el usuario interactia con la computadora por medio de la ejecucién de progra- ‘mas tales como procesadores de texto, planillas de céleulo o juegos. Aqui, el usuario ve 8 PRINCIPIOS DE AROUITECTURA DE GOMPUTADORAS ala computadora a través de los programas que en ella se ejecutan, y es poco o nada vi- sible la estructura intema correspondiente a su nivel inferior. [Nivel superior [Nivel del usuario: programas de aplicacisn Lenguajes de alto nivel Lenguaje absolutoiCédigo de maquina ‘Control microprogramado/eableado [Unidades funcionates (memoria, ALU. ee] Cireuitos légicos Nivel inferior Transistores y cables Figura 1.4 Niveles de maa en la jerarquia de un sistema, Et nivel del lenguaje de alto nivel ‘Cualquiera que haya programado una computadora en lenguajes de alto nivel, como C, Pascal, Fortran Java, ha interactuado con la computadora en este nivel. Aqui, el progra- mador solo ve el lenguaje y no ve ninguno de los detalles de los niveles inferiores de la maquina, En este nivel, el programador ve los tipos de datos y las instrucciones del len- guaje de alto nivel pero no necesita conocimiento alguno acerca de la forma en que Ia maquina configura realmente estos tipos de datos. Fs funcién del compilador el conver- tir los tipos de datos y las instrucciones desde el lenguaje de alto nivet hacia los circuitos de la computadora, Los programas escritos en lenguaje de alto nivel pueden ser recompi- lados para distintos tipos de maquina, las que (al menos es fo que se espera) funcionaran de la misma manera y entregarén los mismos resultados, independientemente de la m4- quina para la cual fueron compilados y en Ia cual se ejecutaron, Puede decirse que un pro- grama es compatible can distintos tipos de méquina si esté escrito en un lenguaje de alto nivel; esta clase de compatibilidad se conoce como compatibilidad de eédigo fuente. Ei nivel del ienguaje de maquina Tal como se ha mencionado previamente, el nivel de tos lenguajes de alto nivel tiene muy poco que ver con la maquina en Ia cual dicho lenguaje de alto nivel est siendo traducido. El compilador convierte el cédigo fuente en las verdaderas instrucciones de la méquina, a las que se suete denominar lenguaje de maquina o cédigo de maquina. Los lenguajes de alto nive! sirven al programador dado que le proveen un conjunto cierto de tipos de datos y capiTuLa 1 + wraopucciGn 9 construcciones de lenguaje, supuestamente bien pensado. Los lenguajes de maquina miran “hacia abajo” en la jerarquia, y asf alimentan las necesidades de los aspectos de bajo nivel del disefio de Ia méquina, Como resultado, los lenguajes de maquina deben tratar con cues- tiones circuitales tales como la estructura de los registros y la trasferencia de datos entre los registros. De hecho, muchas instrucciones pueden describirse en térmings de las trasferen- ccias efectuadas entre registros. El conjunto de instrucciones del lengvaje de maquina para tuna computadora dada suele denominarse juego de instrucciones de esa méquina, Por supuesto, el codigo real que utiliza Ia méquina no es més que un conjunto de ceros Y unos, a los que suele denominarse eédigo binario o lenguaje de méquina, Como puede imaginarse, la programacién en ceros y unos ¢s un proceso tedioso y factible de generar errores. Como consecuencia, uno de los primeros programas escritos para computadora fue el llamado assenrbler, que traduce esquemas nemotécnicos de un lenguaje comtin, tales co- mo MOVE Data, Acc, a sus comespondientes expresiones formadas por ceros y unos en el lenguaje de méquina, Este lenguaje, cuyas construcciones presentan una relacién uno a uno con el lenguaje de maquina, se conoce como lenguaje ensamblador (assembler). Como resultado de ta separacién de niveles, es posible tener mAquinas que difieren en la implementaci6n del nivel inferior pero que presentan el mismo conjunto de instrucciones 0 algtin subconjunto o superconjunto de un juego de instrucciones dado. Este planteo permitié que IBM disefiara una linea de productos como la serie IBM 360, que garantiza la compati- bilidad hacia arriba entre los eédigos de maquina. Un cédigo de méquina que funcione sobre una 360 Modelo 35 podrd funcionay, sin modificaciones, en una IBM Modelo $0, si el usua- rio requiriese actualizar su equipamiento hacia la méquina mas poderosa, Este tipo de com- patibilidad se conoce como “compatibilidad binaria”, dado que el cédigo binario funciona, sin modificaciones, en los distintos miembros de la favnitia, Esta particularidad fue, en gran parte, responsable del enorme éxito de Ia serie de computadoras [BM 360. Intel Corporation es otro ejemplo de compatibilidad binaria entre los integrantes de sus famitias. En este caso, los c6digos binarios escritos para el miembro inicial de una familia, ‘como et 8086, funcionarin intactas en todos los integrantes posteriores, como el 80186, el 80286, et 80386, e1 80486, y también en el mis modemo de ta familia, el procesador Pen- tium. Por supuesto, este enfoque no toma en cuenta ta existencia de otras computadoras que ofrecen a sus usuarios distintos juegos de instrucciones, lo que hace dificil el transporte del paquete de programas ya instalado en una familia de computadoras hacia otra. El nivel del control Las trasferencias entre registros -mencionadas en pérrafos anteriores~ se llevan a cabo desde la unidad de control, a través de sefiales de control que transficren la informacion entre un registro y otro, incluyendo, probabtemente, alguna Idgica circuital que pueda ‘realizar algun tipo de transformaci6n de la misma. La unidad de control interpreta las ins- trucciones de maquina una a una, lo que provoca la ocurrencia de las trasferencias entre registros 0 de alguna otra accién. 10_pruncipvos oF AROU:TECTURA DE COMPATADORAS La forma en que esto se lleva a cabo no debe ser motivo de preocupacién para el pro- gramador en lenguaje ensamblador. Los distintos integrantes de la familia de procesado- res Intel 80X86 presentan la misma conducta ante un programador en lenguaje ensam- blador, independientemente de cu‘il sea el procesador analizado. Esto se debe a que cada integrante que se incorpora a la familia se disefia para que sea capaz de ¢jecutar las ins- tnucciones originales de! 8086, adems de cualquier instrueci6n nueva que hubiese sido implementada para ese integrante de la familia en particular. Como se indica en la figura 1.4, hay diferentes formas de implementar la unidad de control. Probablemente, la forma més popular en ta actuatidad sea la de “cablear” la uni- dad de control, Esto significa que las sefiales de control que efectéan las transferencias entre registros estin generadas a partir de un bloque de componentes légicos digitales. Las unidades de control cableadas tienen como ventajas la velocidad y la cantidad de componentes, pero hasta no hace mucho eran extremadamente dificiles de diseftar y de modificar. (Estas técnicas se analizargn en detalle en el capitulo 6.) Una aproximacién algo més lenta pero més sencilla consiste en implementa las instruc- ciones como mieroprograma. Un microprograma es, en realidad, un pequefio programa es- crito en un lenguaje de nivel menor atin, e implementado en los circuitos de la maquina, cu- ya funcisn es la de interpretar las instrucciones del lenguaje de maquina. Fste microprograma suele conocerse como firmware debido aque incluye tanto hardware como software. El firm- ware se ejecuta a través de un microcontrolador, él cual ejecuta las microinstrucciones rea- les. (La técnica de microprogramacién también se explora en el capitulo 6.) El nivel de las unidades funcionales Las transferencias de registros y las demas operaciones implementadas por la unidad de control mueven informacién desde y hacia “unidades funcionales”, asf lamadas debido a que realizan cierta funcién importante para la operaci6n de ta computadora. Entre las unidades funcionales pueden incluirse los registros intemos de la CPU, la ALU y la me- moria principal de la computadora. Circuitos l6gicos, transistores y cables Los niveles mds bajos en los que puede observasse algiin resabio del funcionamiento de Jos niveles superiores de la computadora cortesponden a los niveles de los eircuitos l6gi- cos y de los transistores, Esto es asi dade que son los circuitos l6gicos los que se utilizan para construir las unidades funcionales, y porque son los transistores los que se usan para construir los circuitos légicos. Los cireuitos légicos implementan las operaciones légicas de mds bajo nivel, de las cuales depende el funcionamiento de la computadora. En el ulti- mo de los niveles, una computadora est formada por componentes eléctricos tales como transistores y cables, los que constituyen dichos circuitos I6gicos; pero, a este nivel, el fun- cionamiento de ia computadora se dispersa en términos de tensiones, corrientes, tiempos, de propagacién de las seftales, efectos cudnticos y otros temas de bajo nivel. tapiruio 1 + urrrooucetin 11 Interacciones entre niveles Las distinciones dentro de un nivel dado y entre niveles suelen confundirse en forma muy frecuente. Por ejemplo, una arquitectura nueva de computadora puede contener instrucciones de punto flotante en su implementacién més completa, pero en una imple- mentacién minima puede tener solo hardware suficiente como para ejecutar instruccio- nes con variables enteras. Las instrucciones de punto flotante se eapturan! antes de la ejecucién y se reemplazan por una secuencia de instrucciones de lenguaje de maquina que imitan o emulan esas instrucciones de punto flotante wtilizando las instrucciones de formato entero existentes. Este es et caso de aquellos microprocesadores que utilizan copracesadores de punto flotante opcionales. Los que no cuentan con el coprocesador de punto flotante emulan las instrucciones de punto flotante por medio de una serie de rutinas de punto flotante que se encuentran implementadas en el lenguaje de maquina del microprocesador y almacenadas en un circuito integrado de memoria ROM, que identifica a una memoria solo de lectura. Los puntos de vista de los lenguajes absoluto y de alto nivel son los mismos para ambas implementaciones, con excepcién de la velo- cidad de ejecucién. Es posible llevar esta emulacién al extremo de emular el juego completo de instruc- ciones de una computadora sobre otra computadora distinta. Los programas que cumnplen con esta funcién se conacen como emuladores y fueron utilizados por Apple Computer para mantener la compatibilidad del e6digo binario cuando Apple comenz6 a emplear los circuitos integrados PowerPC de Motorola en lugar de los circuitos integrados 68000, cu- yo juego de instrucciones es completamente distinto. El nivel de! lenguaje de alto nivel y los niveles del firmivare y de las unidades funcio- nales pueden estar tan entrelazados que resulte dificil identificar qué operacién se esté produciendo en qué nivel. El valor de la divisién de la arquitectura de computadoras en un conjunto de niveles jerécquicos no es tanto el de la clasificacién, que segtin acabamos de vera veces puede ser dificultosa, sino, simplemente, el de permitir ciertos enfoques en el andlisis a llevar a cabo en los capftulos que siguen. La perspectiva del programador. La arquitectura del juego de instrucciones Segiin se ha descrito en el andlisis de niveles previo, el programador que programa en len- ‘guaje de méquina tiene interés en el lenguaje y en las unidades funcionales de la maquina. Este conjunto de elementos, formado por el juego de instrucciones y las unidades funcio- nales, se conoce como arquitectura de programacién (ISA, instruction set architecture) de la computadora. 1.£l concepto se analiza en el capitulo 6. 12_PRINGIPIOS DE ARQUITECTURA DE COMPUTADORAS: {a perspectiva del arquitecto de computadoras El arquitecto de computadoras, por otra parte, observa al sistema desde todos sus niveles. El arquitecto que enfoca el diseito de una computadora estd sujeto invariablemente a requeri- mientos de rendimiento y restricciones de costos. El rendimiento puede estar especificado a partir de la velocidad de ejecucién de los programas, de fa capacidad de almacenamiento de la méquina o de una variedad de pardmetros diferentes. El costo puede estar planteado en términos monetarios, o de peso y tamaiio, o de consumo de potencia, El disefto propuesto por el arquitecto de computadoras debe intentar cumplir con las perspectivas especificadas parael rendimiento, pero sin salirse de los limites de costos establecidos, lo que normalmen- te lleva a soluciones de compromiso entre y a través de los niveles de la maquina, 1.6 Un sistema de computacidn tipico Las computadoras madernas han progresado desde los grandes monstruos de las décadas de 1950 y 1960 hasta llegar a las computadoras, mucho més pequeiias y més poderosas, que nos rodean en Ia actualidad, Aun con todos los grandes avances de la tecnologia de computadoras ocurridos en las ultimas décadas, las cinco unidades bésicas del modelo von Neumann siguen siendo visibles en las computadoras modemas. La figura 1.5 muestra la configuracién tipica de una computadora de escritorio, cuya unidad de entrada consiste en un teclado, a través del cual el usuario ingresa datos y co- mandos. Un monitor de video constituye la unidad de salida, en la que se presenta !a in- formacién en forma visual. La unidad de control y la ALU se agrupan dentro de un mi- croprocesador tinico que funciona como CPU del sistema. La unicad de memoria consta de un conjunto de circuitos individuales de memoria, asi como de unidades de disco ri- gido, de disquete y de CD-ROM. Una observaci6n del interior de la méquina permite ver que su corazén se encuentra contenido en una nica placa de circuit impreso, conocida cominmente como placa madre (motherboard), similar ala que se muestra en la figura 1.6. La placa madre con- tiene circuitos integrados, conectores para insertar placas de expansi6n, y cables que it terconectan los circuitos integrados y los conectores de expansi6n. En la figura se desta- can las secciones de entrada, salida, memoria, control y unidad aritmético-Iégica. (En capitulos posteriores se desarrollan los temas asociados.) 1.7 Organizacién de ta obra El funcionamiento interno de las computadoras se desarrolla en los capitulos siguientes. El capitulo 2 analiza la representacién de los datos, lo que provee el fundamento para to- dos los capitulos que siguen. El capitulo 3 analiza los métodos relacionados con 1a cavituto 1 + inTaopuccién 13 Unidad de disquete- Unidad de CD-ROM —— isco rigido. ‘Monitor de video Zécalos para conexidn de placas CPU (mictoprocesador debajo del disipador) Figura 1.5 + Un sistema de computacion de escritorio, implementacién del célculo aritmético. Los capitulos 4 y 5 analizan la arquitectura de programacién, lo que serviré como base para entender la interaccién entre tos compo- nentes de un sistema de computaci6n, El capitulo 6 vincula los contenidos anteriores pa- ra encarar el disefio y el anflisis de una unidad de control para la arquitectura del juego de instrucciones. in el capitulo 7 se cubre la organizacién de las unidades de memoria, asi como las técnicas de administracién de la memoria. En el capitulo 8, se tratan los te- ‘mas referidos a entrada, salida y comunicaciones. El capitulo 9 analiza aspectos avanza- dos de los sistemas de CPU tnica (que podrian tener més de wna unidad de procesamien- to). En el capftulo 10 se consideran aspectos referidos a sistemas de miiltiples CPU, tales como las llamadas arquitecturas paralelo y distribuida y las arquitecturas de redes, Por Liltimo, en los apéndices A y B se echa una mirada al disefio de circuitos tégicos digita- les, bloques fundamentales para los componentes basicos de la computadora. 14 _PRINCIPIDS DE ARQUITECTURA DE COMPUTABORAS one ne Be Figura 1.6 © Una placa made para procesador Pentium II. Fuente: TYAN Computer, http:/tyan.com.) 1.8 Estudio de un caso: zQué le ocurrié alas supercomputadoras? LiWorta de fos autores: El aporte que sigue proviene de la pagina lutp:/wwwperatogos com DeadSuper, creada por Kevin D. Kissell, kevink @acm.org, El sitio web creado por Kissell detaila docenas de proyectos de supercomputadoras que fueron quedando por el camino. (Véase la figura 1.7 2 para tener una visi6n histdrica de las primeras tecnologias de supercom- putadoras.) Una de las razones principales que han levado a las supercomputadoras a su ca- si extincién es el hecho de que las computadoras comunes de hoy en dia logran una parte sig- nificativa de la potencia de las supercomputadoras a un precio accesible para el individuo coméin, La relaci6n entre el precio de una computadora de escritorio y su rendimiento es muy favorable debido a los bajos costos logrados a través de las ventas en el mercado masivo. Da- do que las supercomputadoras no tienen acceso a ese mercado masivo, mantienen una rela- cin muy alta entre el precio y el rendimiento. El trabajo que sigue, escrito por Kissell y exteafdo de un anticulo publicado en Eleciri- cal Engineering Times, destaca las enormes inversiones que se realizan en el desarrollo de os microprocesadores de uso diario, lo que ayuda a mantener fa mencionada relacién fa- vorable entre precio y rendimiento en las computadoras de escritoria de bajo costo.) 2. Figura incluida por cortesta de la Universidad de Manchester. La historia de Manchaster Mark Ise cetalla en httpzevew.computers0.or9. Figura 1.7 ¢ La computadora Manchester University Mark | puesta en operaciOn el 21 de junio de 1948. (No debe confundirse con Harvard Mark 1, donada a la Universidad de Harvard por IBM, en agosto de 1944.) (Reproducido con autorizaciér del Departamento de Ciencias de la Computacion de la Universidad de Manchester) El final de una época dorada? Desde la construcci6n de las primeras computadoras programadas hasta mediados de la dé- cada de 1990, siempre hubo lugar en la industria de la computacién para cualquiera que ti viera alguna idea brillant, aun cuando fuese desafiante, acerca de c6mo desarroilar una maquina mas poderosa, La computacién se convirtié en estratégica durante In Segunda Guerra Mundial, y se mantuvo en tal situaciGn durante la época de ta Guerra Fria que s guié a aquella, La computacién de alto rendimiento es esencial para cualquier programa modemo de armamento nuclear, por lo que la carrera de la tecnologta de computadoras fue una consecuencia l6gica de la carrera armamentista. Si bien las computadoras poderosas son de mucho valor en una gran cantidad de sectores industriales, como las industrias del petréleo, quimica, médica, aerondutica, automotriz y de ingenieria civil, sera muy diftcil desmentir el papel de los gobiernos, y en particular el de tos laboratorios nacionales del go- biemo estadounidense, como catalizadores ¢ incubadores de las innovaciones en las tecno- logias de computadoras, La industria privada puede llegar a comprar mayor mimero de mé- quinas pero muy rara vez asumiré el riesgo de comprar una maquina cuyo mimero de serie sea de un solo digito. La desaparicién del comunismo soviético y el final de la Guerra Frfa provocaron, como consecuencia, un mundo en general més seguro y mis préspero, pero eliminaron la razén de ser de muchos mercaderes del rendimiento a cualquier precio, Junto con estos cambios geopoliticos aparecieron algunos hechos tecnolégicos y ‘econémicos que representaron problemas para los productores especializados en com- putadoras de alta tecnologia. La aparicién de los microprocesadores en lu década de 1970 planteé como punto principal la posibilidad de colocar una computadora de pro- grama almacenado en wn nico pedazo de silicio. Las presiones de la competencia, y el deseo de generar ventas mediamte la obsolescencia del producto del aio anterior, dieron comp resultado la duplicacién de la potencia de computucién de los microprocesadores cada 18 meses, segiin el enunciado de la conocida “ley de Moore”. En su camino, los di- 16 PawictPios DE AROUITECTURA DE COMPUTADORAS sefiadores de microprocesadores tomaron prestadas casi todas las argucias y téenicas uti- lizadas en el pasado por los disefiadores de supercomputadoras y mainframes: niveles jerdrquicos de almacenamiento, segmentaciones, unidades funcionales maltiples, mul- liprocesamiento, ejecucién desordenada, prediccién de saltos, procesamiento SIMD (Single Instruction, Multiple Dara), ejecuciGn especulativa. A mediados de los afios no- venta, las ideas de tos investigadores pasaban directamente de la etapa de simulaci6n a a implementacién de tos microprocesadores destinados a las computadoras de uso ma- ivo. No obstanie, debe notarse que la mayor parte de los avances logrados en el rendi- miento de los microprocesadores, en la década pasada, no llegé desde estas técnicas so- fisticadas de la arquitectura de computadoras, sino, simplemente, desde el aumento de las velocidades del reloj de los procesadores y de los crecimientos cuantitativos en los recursos de los procesadores derivados de los avances de la tecnologfa semiconductora, Alrededor de 1998, Ia CPU de la mejor computadora personal basada en Windows fun- cionaba ya a una frecuencia de reloj mayor que la de la supercomputadora mas impor- tante de la linea Cray Research en 1994. No puede sorprender entonces que las politicas de los laboratorios nacionales de los Estados Unidos se hayan desplazado desde la adquisicién de sistemas desarrollados des- de su base para tomar la forma de supercomputadoras hacia el despliegue de grandes en- sambles de sistemas producidos en masa y basados en microprocesadores, con el proyec- to ASCI como emblema de esta actividad. A la fecha de este trabajo, queda por ver si tales aglomeraciones resultarén ser lo suficientemente estables y apropiadas para el tra- bajo de produccién, pero los resultados preliminares han sido, al menos, satisfactorios. Los dias felices de las supercomputadoras basadas en tecnologias exdticas y en arquitec~ twras innovadoras bien pueden haber Hegado a su fin. Inyersién o muerte: La vida de Intel en la orilla? por Roy Wilson y Brian Fuller Santa Clara, California — Con alrededor de seiscientos millones de délares a ser utiliza- dos como inversién durante este afio, Intel Corp. se ha unido a las grandes ligas de las ‘empresas de capital empresario. Pero el nico imperativo que leva al gigunte de los mi- croprocesadores a invertir le da una influencia desproporcionada aun con respecto a esa enorme cifra, Para Intel, las inversiones de capital no son solo una fuente de ingresos; son una herramienta vital en la lucha por sobrevivi La supervivencia pareceria ser una preocupacién poco importante para la empresa de semiconductores més grande del mundo, Pero Intel, en un camino que le es totalmente propio, vive colgado en el equilibrio. Para cada nueva generaciGn de procesadores, Intel debe hacer enormes inversiones en el desarrollo de procesos, en edificios y en fabricas, una inversiGn demasiado gigante como para perderla. 3. Derechos reservados ©1998 CMP Media Inc. reproducido con autorizacion de Electronic Engineering Times. capiruio 1 + wrRoouccién_ 17 Gordon Moore, el emérito presidente de Intel, le pone la escala a la apuesta. “Una planta de investigacién y desarrollo cuesta hoy cuatrocientos millones solo en el edificio. Luego, hay que ponerle alrededor de mil millones de délares en equipamiento, Esto re- presenta una fébrica para un cuarto de micrén que puede Hlegar a producir alrededor de 5,000 obleas por semana, lo que se dice la planta utilizable mas pequefa. Para la prdxi- ‘ma generaciGn,” afirma Moore, “la inversién minima serd de dos mil millones, con entre tres y cuatro mil millones necesarios para cualquier tipo de volumen de producci6n. Nin- guna otra industria tiene una vida tan corta con inversiones tan enormes.” Gran parte de estas cifras sera gastada antes de que haya una necesidad concreta de los microprocesadores que la planta vaya a producir. En esencia, el total de los 4.000 mi- Hones por planta es una apuesta basada en la idea de que la industria absorberé un gran muimero de CPU a buen precio solo porque sean algo més ripidos que los elementos dis- ponibles actualmente. Si solo por una generacién dicha situaci6n no ocurriese (si alguien considerara, por ejemplo, que el Pentium IT es lo suficientemente rapido, gracias), los re- sultados serian impensables. “Mi pesadilla consiste en despertarme algin dia y no necesitar mayor poder de cém- puto,” dijo Moore. La arquitectura de tas computadoras trata aquellos aspectas de una computadora que son visi- btes para el pragramader, en tanto que ta organizacién de tas computaduras trata aqueltos as- pectos que se encuentran en un nivel més fisico y que no aparecen como visibles para el pra gramador. Histérlcamente, los pragramadores debian enfrentarse con cada aspecto de una Computadora: Babbage con elementos mecanicos y los programadores de ENIAC con cables y panetes de conexién, A medida que crece el nivel de sofisticacién de tas computatoras, el con- cepto de niveles de maquina aparece en forma més pronunciada, permitienda que las compu tadoras presenten conductas Internas y externas muy diferentes a la vez que se administra la complejidad en niveles estratiticados. El desarrollo individual mas significative que hace po- sible este planteo es ef cancepto de computadora de programa almacenado, que toma cuerpo enel modelo von teumann. Es el modeto von Neumann el que se ve en la mayor parte de las computadoras corrientes hoy en dia. Para lectura posterior La historia de la computacin esta llena de personalidades e hitos interesantes. Harlan Anderson ofrece un detalle corto y ameno de unos y de otros correspondientes al tltimo siglo. La obra de Charles Bashe y otros ofrece un resumen interesante acerca de las maquinas IBM. A. Bromley, ha- ce una crénica de las maquinas de Babbage. A. Ralston y E. Reilly aportan biogralias cortas de las 18_Pawcipios De ARQUITECTURA DE CoMPUTADORAS personalidades més célebres. B. Randell cubre la historia de tas computadoras digitales. Una histo- ria de la computacion, de lectura accesible, se encuentra en el sitio web hitp://vww.ifi.unizh.ch/se/ people/hoyle/Lecture/. Doron Swade, cubre una version legible del método de tas diferencias finitas tal como aparece en las maquinas de Babbage y en la versi6n de fa maquina diferencial analitica creada por et Museo de Ciencias de Londres. £! trabajo de A. Tanenbaum es uno de una cantidad de textos que popularize la nocion de niveles dentro de las maquinas. ‘Anderson, Harlan, “Dedication address for the Digital Computer Laboratory atthe University of Ilinois", 17 de abril de 1991, tal como se reproduce en: /EEE Circuits and Systems Society Newsletter, vol. 2, n®1, marzo de 1991, p.p. 3-6. Bashe, Charles J., Lyle R. Johnson, John H. Palmer y Emerson W. Pugh, i's Early Computers, The MIT Press, 1986, Bromiley, A. G., “The evolution of Babbage’s Calovlating Engines”, Annals of the History of Computing, vol. 9, 1987, p.p. 119-138. Randell, B., The Origins of Digital Computers, 3'ed., Springer-Verlag, 1982. Ralston, A. y €. 0. Reilly eds., Encyclopedia of Computer Science, 3'ed., van Nostrand Reinhold, 1998, Doron D. Swade, “Redeeming Charles Babbage’s Mechanical Computer”, en: Scientific American, vol. 268, n®2, febrero de 1993, p.p. 86-91. Tanenbaum, A., Structured Computer Organization, 4 ed., Prentice Hall, 1999. (Traduccién al espafio! disponible: Organizacién de computadoras, Prentice Hall, 2000.) Problemas 1.1 Laley de Moore, que se atribuye al creador de Intel, Gordon Moore, dice que la potencia de ‘computacién se duplica cada 18 meses por el mismo precio. Como observaci6n no relaciona- da surge que las instrucciones de punto flotante se ejecutan en forma circuital cien veces mas r4pido que cuando se las emula. Usando la ley de Moore como guia, gcuanta tiempo le llevard ala potencia de computacién crecer a punto tal que las instrucciones de punto flotante se emu- len tan rapido como sus anteriores contrapartidas en el hardware? Capitulo 2 Representacion de la informaci6n 2.1 Introduccion En los primeros dias de la computacién eran frecuentes los errores de concepto referidos a las computadoras. Uno de los mas habituales consistfa en creer que la computadora era énicamente una méquina sumadora gigante capaz de realizar operaciones aritméticas. Las computadoras tenfan capacidad para hacer mucho mds que eso, aun en aquellos primeros dias, Otro error de concepto, en contradiccién con el anterior, era el de pensar que 1acom- putadora podtia hacer “cualquier cosa”. Subemos ahora que bay ciertos problemas que re- sultan intratables, aun para la méquina més poderosa con arquitectura von Neumann. La percepcién correcta, por supuesto, esti en algtin lugar intermedio entre ambos. Hoy nos resultan familiares algunas operaciones que na son aritméticas, tales como la computacién grafica, el audio digital y aun el manejo del (ratén) mouse de la computado- ra, Independientemente del tipo de informacién que se esté manipulando, debe estar repre- sentada por patrones de unos y ceros. (También conocidos como cédigos “si-no”.) Este planteo lleva inmediatamente a la pregunta referida a como debe representarse 0 describir- se la informacién dentro de la maquina, o sea, cud dehe ser la representacién o codifica- cién de los datos. Las imégenes grificas, el audio digital o las pulsaciones sobre los boto- nes del mouse deben estar todos codificados de alguna manera sistemdtica y normalizada. Dado que es la més conocida, puede pensarse en ta representacién decimal de Ja in- formacién como a forma mas natural de dicha representacién. No obstante, el uso de e6- digos sf-no en la representacién de la informacién antecede en muchos afios a la compu- tadora, como es el caso de! e6digo Morse. Este capitulo introduce algunos de ios ejemplos de codificacién mas simples y més im- portantes: la codificacién de mimeros de punto fijo con y sin signo, la de los nmeros reales (Conocidos en la jerga de la computacién como mimeros de punto Notante), y la de los ca- racteres requeridos para la impresidn de texto. Se podri ver que en todos los casos existen diversas formas de codificar los distintos tipos de datos, algunas de ellas titiles en un con- texto dado, otras, nuis stiles en otro contexto. Asimismo, este capitulo presentard una prime- ra mirada sobre Ia aritmética de computadoras, con el objeto de entender algunos de los es- quemas de codificacién, si bien los detalles quedardn para ser tratados en el capitulo 3, ‘20_pRincrptos Of ARMUITECTURA DE COMPUTADORAS Un punto clave en ef desarrollo de un formato de representacién de informacién en una computadora es la determinacién del espacio de almacenamiento que se deberd de- dicar a cada tipo de dato. Por ejemplo, un disefiador de computadoras puede decidir re- presentar los niimeros enteros con 32 bits, e implementar una ALU que pueda realizar céilculo aritmético sobre esos conjuntos de 32 bits, y que devuelva resultados también en 32 bits. No obstante, algunos numeros pueden ser muy grandes como para ser represen- tados en 32 bits, y en otros casos, los operandos pueden representarse por 32 bits pero el resultado de una operacién ser mayor, lo que provocard una condicién de desborde*, condici6n cuyo significado se describe en el capitulo 3. Por consiguiente, se hace nece- satio tener en claro cudles son los limites a imponer sobre ta precisi6n y el rango de las ‘operaciones aritméticas derivados de la naturaleza finita de las representaciones ut das. Estas limitaciones se analizan en las secciones siguientes. 2.2 Nimeros de punto fijo En la representacién de mimeros de punto fijo™, todos los nsimeros a representar tienen exactamente la misma cantidad de digitos y la coma decimal esté siempre ubicada en el mismo lugar. Como ejemplos dentro del sistema decimal pueden plantearse los nimeros 0,23", “5,12” y “9,11”. En estos ejemplos, cada mimero tiene tres digitos y la coma de- cimal se ubica a continuacién del primero de ellos, Los ejemplos que poeden presentar- se en el sistema binario de numeracién (en el que cada digito solo puede adoptar los va- lores 0.0 1) son “11,10”, “01,10” y “00,11” en los que hay cuatro digitos y donde la coma “decimal” esté entre el segundo y el tercero de ellos. La diferencia principal entre la re- presentaci6n de ntimeros de punto fijo en el papel y la forma en que se almacenan dentro de la computadora es que, al representar mimeros en este formato, no se almacena coma decimal alguna, sino que, simplemente, se supone que ocupa un lugar determinado. Po- dria afirmarse que la coma decimal solo existe en fa mente del programador. El estudio de la representacién de ntimeros en el formato de punto fijo se inicia con el andlisis del rango y la precisiGn de esta representacién, utilizando para esto el sistema de numeracién decimal, Continda con una mirada a la naturateza de los sistemas de nume- raciGn, tales como el decimal y el binario, y a los métodos de conversién entre diferentes sistemas, Con estos fundamentos, se investigan distintas formas de representacién de mii- meros negativos expresados en formato de punto fijo, analizando, finalmente, algunas operaciones matemiticas simples que pueden realizarse con ellos. * N.de T: En muchos paises de habia hispana, suete utiizarse el término original ct idioma inglés (overttow) sin ‘raduccién alguna. “* de T: Se aceplard en este texto la nomenclatura habitual en la que se identifica como “punto” a la coma ecima), dbiendo queda clare que las mencione al punto Wo o tans se tefieren ala ubicacion de dicha ‘coma decimal GAPHTULO 2 + REPRESEWTACION DE LA WFORMAGION 21 2.2.1 Rango y precisién en ndmeros de punto fijo Una representacién de punto fijo puede caracterizarse por el range de los ntimeros que expresa (dado por la diferencia entre el niimero mayor y el menor) y por su precisién (1a distancia entre dos mimeros consecutivos en una serie numérica). Para el ejemplo plan- teado anteriormente, en el sistema de numeraci6n decimal, si se utilizan tres digitos con fa coma decimal entre el primero y el segundo, el rango de representacién varfa desde 0,00 hasta 9,99, incluyendo ios extremos, lo que se expresa como {0,00..9,99}. Lu preci- sin de la representacién es 0,01, y el error resultante puede considerarse como la mitad de la diferencia entre dos nimeros consecutivos, tales como 5,01 y 5,02, entre los que hay una diferencia de 0,01. El error, por ende, es 0,01/2 = 0,005. Esto significa que cual- quier nimero del rango 0,00 a 9,99 puede representarse en este formato con una aproxi- macién de hasta 0,005 de su valor real o preciso. Nétese de qué manera existe un compromiso entre rango y precisi cimal se coloca ala derecha del mimero, el rango pasa a ser (000..999} pero la precisin pasa a ser de 1,0. Si, en cambio, la coma decimal se coloca a la izquierda del numero re~ presentado, el rango pasa a ser [0,000..0,999} y Ia precisién pasa a valer 0,001. En cualquiera de tos casos, hay solo 10* “objetos” decimales diferemtes, cuyo rango va desde 000 2 999 o desde 0,000 hasta 0,999, en consecuencia, solo es posible repre- sentar 1000 elementos diferentes, independientemente de c6mo se administren rango y precisi6n. No hay raz6n alguna para que el rango empiece en 0, Un ndmero decimal de dos di- gitos puede tener rangos de [00.99] o de [-50..449}, o aun de [-99..0}. El apartado 2.2.6 analiza con mayor profndidad la representaci6n de los mimeros negatives. El rango y la precisién son conceptos importantes en Ia arquitectura de computadoras, debido a que ambos son elementos finitos en ta implementacién de la arquitectura, en tanto que son infinitos en ef mundo real, por le que el usuario debe tener en claro las li- mitaciones que surgen al tratar de representar informaciGn externa en el formato interno, .. Si fa coma de- 2.2.2 La ley asociativa del algebra no siempre funciona en la computadora Entre los primeros conceptos que se plantean en matemética, aparece la llamada propie- dad o ley asociativa: At(B+C)=(AFB)HC Como podré verse, la ley asociativa del dlgebra no funciona cuando se representan néme~ ros en el formato de punto fijo con represemtacién finita. Considérese una representacion de nimeros enteros en formato de punto fijo.con un solo digito decimal y la coma decimal ala derecha, con un rango de [-9..9]. En el caso en que A= 7, B=4 y C=-3, la sumade (22 _PRINGIPIOS DE ARQUITECTURA DE COMPUTADORAS. A+ (B+ O)=74+(4-3)=74 1 =8. Pero (A +B)+C=(744)-3= 11-3. El resultado intermedio, 11, jestd fuera del rango de la representacién considerada! Si bien el resulta- do final podria haber quedado dentro del rango de representacién del sistema de numera- cién, se ha producido un desborde en el resultado intermedia. Este ejemplo permite ver que, si algin resultado intermedio resulta incorrecto, el resultado final de la operacién completa también es incorrecto. Por consiguiente, surge como conclusién que la ley asociativa del dlgebra no se cumple cuando se representa la informact6n numérica en formato de punto fijo de longitud finita. Se trata de una consecuencia inevitable de esta forma de representacidn y no hay solucién prictica excepto la de detectar el desborde en el momento en el que ocurra, 0, habiendo de- tectado el desborde, repetir la operacién con una representacién que permita un rango ma- yor. (Esta dltima técnica se usa muy raramente, excepto en situaciones criticas.) 2.2.3 Sistemas de numera in posicionales Esta seccién analiza de la utilizacién de sistemas numéricos con bases arbitrarias, si bien el enfoque se concentra sobre {os sistemas mAs utilizados en las computadoras digitales, tales como el sistema binario (de base 2) y sus parientes cercanos, los sistemas octal (de base 8) y hexadecimal (de base 16). La base o rafz de un sistema de numeracién define el rango de valores posibles que pueden adoptar sus digitos. En el sistema de numeracién decimal (de base 10), los dife- rentes digitos de una cantidad numérica se representan por alguno de los 10 valores co- rrespondientes al 0, 1, 2, 3, 4, 5,6, 7, 8 y 9. ES sistema naturalmente utilizado para ta re- presentacién de niimeros en una computadora es el sistema binario, en el que se representa la informacién como un conjunto de ceros y unos. La expresi6n general que permite determinar el valor decimal de un niimero en un sis- tema de numeraci6n de base & y en formato de punto fijo es la siguiente: El valor del digito que ocupa la posicién / est representado por by. Existen en este caso 1 digitos a la izquierda de la coma fraccionai itos a su derecha, Esta forma de representaci6n de un niimero, en la que cada posicién tiene asignado un determinado va- Jor, se denomina sistema de numeracién posicional. Considérese la expresién (541,25), en la cual el subindice 10 representa la base en La que se expresa el nimero." En este caso, m= 2y k= 10: “ N. de T: €n ol casa de ndeneros axpresados en al sistema decimal, por convencién, suela oritrse el subind- ‘ce indicador de la base, sobreentendiéndose que todo nUmero asi expresado lo estd en dicho sistema decimal. CAPITULO 2 » REPRESENTACION DE LA mFORMACION 23 5x10 +4x 10'4 1x 10°42x 10" +5x 107 = = (500) + (40) + (1) +(2/10) + (5/100) = (541.25) Si en forma similar se considera el nimero binario (1010,01),, en el que a= 4, m=2y k= 2, se tiene Ux DPeOx Pet x 2 eOxMeOx 2s 1x2= = (8) + () + (2) + (0) + (0/2) + (1/4) = (10,25) Este dltimo procedimiento da una idea acerca de c6mo convertir un nimero expresado en un sistema de numeracién de base cualquiera al sistema de numeracién decimal, mediante Ja utilizacién de una representacién polinémica. Se trata de multiplicar cada digito por €l peso asignado a su posicién (potencias de dos en este ejemplo) y tuego sumar los va- lores para obtener el ntimero convertido. Si bien este método es vélido para conversiones de todo tipo de sistema, algunos sistemas plantean ciertas dificultades especiales, las que serdn desarrolladas en Ia prOxinya seoci6n. Nétese que en estos sistemas de numeraci6n posicionales se define el bit con el mayor pe- so asociado como bit mas significative (MSB, most significant bit), y el bit de menor peso como bit menos significative (LSB, least significant bit). Por conversién, el LSB es el bit a Ja derecha de la expresién numérica, en tanto que e} MSB es et bit a la izquierda de esta, 2.2.4 Conversién entre sistemas Ena seccién anterior se ha planteado un ejemplo de eémo puede convertirse un mimero expresado en el sistema de numeracién binario al sistema de numeracién decimal. La ‘conversi6n de un nimero en el sentido contrario puede ser un poco mas compleja. La for- ma més sencilla de convertir niimeros de punto fijo que contengan tanto parte entera co- ‘mo fraccionaria consiste en operar con cada una de sus partes por separado. Como ejem- plo, se planteard la conversién del nimero 23,375 al sistema binario. Se comienza por separar el mimero en sus pares entera y fraccionaria: 23,375 =23 + 0,375 Conversién de la parte entera de un niimero de punto fijo. Método de los restos Segtin Jo sugerido en la secci6n anterior, la forma polinémica general para la representa- cién de un niimero entero binario es: Bx D4 bx WA eB, x2 b,x 2” 24_pruncipios OE ARQUITECTURA DE COMPUTADORAS Si se divide al ntimero entero por dos, se obtendré: Bx Mab xIe +b, x2 con un resto de 8,, Como resultado de dividir por dos el niimero entero original se obtie~ ne el valor del primer coeficiente binario b,. Puede repetirse este proceso aplicdndolo al polinomio remanente para obtener el segundo coeficteme &,. Si se continGa aplicando el mismo procedimiento en forma iterativa, se obtendrdn todos los coeficientes b, Este pro- cedimiento forma la base del método de los restos para convertir nimeros enteros entre diferentes sistemas de numeracién. Entero Resto y a2 = 1 <— Bit menos significative x m= 0 1 <— Bit més significative QBhq = (OND, Figura 2.1 + Conversion de un nimero entero decimal al sistema de numeracién binario mediante el métogo de los restos. EI método de los restos se aplicar ahora para convertir el ntimero 23 al sistema de base 2. Como se ve en la figura 2.1, el entero se divide inicialmente por 2, lo que deja un res- tode 00 1. Eneste caso, 23/2 produce un cociente de 11 y un resto de 1. Este primer res- to es el digito (bit) menos significative del nimero convertido (el bit a la derecha del nd- mero). En el paso siguiente, se divide ahora el néimero 11 por 2, to que deja un cociemte de 5 y un resto de 1. Al dividir 5/2 se obtendré un cociente de 2 y un resto de 1. El proce- so continda hasta obtener 0 como cociente, Si se sigue dividiendo luego de obtener co- ciente nulo, solo se logrardn ceros como futuros cocientes y restos, 10 que no cambiaré el valor del niimero convertido. Los restos asi obtenidos se recogen en el orden indicado en 1a figura 2.1, para obtener la expresi6n binaria del numero convertido, lo que en este ca- so da por resultado 23 = (10111),. En general, todo numero expresado en el sistema de- cimal puede convertirse a cualquier otro sistema simplemente dividiendo el entero deci- mal reiteradamente por la base del sistema de numeraci6n al que se lo quiere converti El resultado puede verificarse mediante la conversi6n del mayor nimero binario asi obtenido al sistema decimal, mediante el método polinémico: CAPITULO 2 + REPRESEMTACION DE LA INFORMACION 25 OUD, = = 1x2 +Ox Pal x Pei x ei x= = 16404442415 = (23) Aesta altura, se ha procedido a la conversién de la parte entera del mimero 23,375 al sis- tema de numeracién binario. Conversi6n de la parte fraccionaria de un niimero de punto fijo. Método dé las multiplicaciones La conversién de la parte fraceionaria puede resolverse multiplicando sucesivamente la fraccién por dos, de acuerdo con lo que se describe a continuacién. Una fracci6n binaria se representa, en su forma general, segdn la expresién siguiente: byx2 4b xMHbgx Boa. Si se multiplica dicha expresién por 2, se obtiene: by +b, x2 +b x24... Se puede determinar asi el coeficiente b ,. Si se reitera el procedimiemto sobre la fraccién remanente, se obtendrén los sucesivos b,. Este proceso determina fa forma de convertir ni- ‘meros fraccionarios entre distintos sistemas de numeracién utilizando el método de las multiplicaciones. En el ejemplo aqui planteado (véase la figura 2.2), la fraccién inicial, 0,375, es menor que 1. Si se 1a multiptica por 2, el resultado obtenido ser menor que 2. El digito a Ta izquierda de 1a coma fraccionaria seré entonces 0 0 1. Este es el primer digito a Ja derecha de la coma fraccionaria en el niimero convertido a base 2, tal como se muestra en la figura, Se repite el proceso sobre la parte fraccionaria hasta que se obtenga una frac- ci6n nula, en cuyo caso las siguientes iteraciones solo darén por resultado ceros adiciona- Jes, 0 hasta que se haya alcanzado el limite de precision requerido por la representacién utilizada, Se recogen los digitos obteniéndose asf el resultado: 0,375 = (0,011, En este procedimiento, el multiplicador coincide con Ia base del sistema numérico de destino. En este caso, el multiplicador es 2, pero si se pretendiese realizar una conversiéa a otro sistema, como podria ser un sistema de base 3, se utilizaria 3 como multiplicador.t 1. Alernativamente, puede usarse el sistema de numeracién decimal y evitar la conversin mediante ia repre- ‘sentacion binaria de los diez dgitos decimales. Esta representacién se conoca como BCD (decimal codifica- ‘do en binario) y se la describird mas adelante, 26 _pemnciPiog Of ARQUITECTURA DE COMPUTADORAS ands significative 037s x 2 = Oi x 2 = ts as x 2 = 10 Bit menos significative (0.37549 = (0.01), Figura 2.2 « Conversién de una fraccién decimal al sistema binario por madio del método de las muikipicaciones. Puede verificarse el resultado de la conversiGn si se realiza la reconversi6n al sistema de- cimal del nimero binario ast obtenido, utilizando la representaci6n polinémica: (0,011), = Ox 244 1x27 41x 2750 40,25 + 0,125 = (0,375),9, ahora se combinan las partes entera y fraccionaria, se obtiene el resultado final: 23,375 = (10111,011), Fracciones no exactas Si bien el método de conversin funciona con todos los sistemas de numeracién, el proceso puede llegar a producir pérdidas de precisién. Por ejemplo, no todas las fracciones repre~ sentadas en el sistema de numeracién decimal pueden tener como equivalente un nimero ra- cional exacto en el sistema binario, Considérese como ejemplo Ia conversién de! niimero 0,2, al sistema binario de numeraciGn, siguiendo el procedimiento expresado, y de acuerdo con lo que se observa en la figura 2.3. En el cuarto paso de fa conversién reaparece la frac- cién 0,2, por lo que a partir de ese punto el proceso se repite en forma periédica. Para tratar de justificar la causa de esta situaci6n, considérese que cualquier fraccién exacta expresada en el sistema binario puede representarse como i/2* para ciertos valores de los enteros / y k. (Esta forma de representacién no es vélida para mimeros fracciona- rios periédicos.) En forma algebraica: 2 six SM(2* x SY) =i x SLO = j/10" En la que jes el entero ix 5*, La fracci6n no es periédica en el sistema decimal. Este con- cepto reafirma el hecho de que solo las fracciones no periédicas de un sistema de nume- racién de base b pueden presentarse como i/b* para algunos valores enteros de iy &. La condicién que debe cumplir una fraccién decimal exacta para que su equivalente binario también sea exacto es: 10 = ES* x 24) = j/2* ENTRCION OE LA UFORMACION 27 oa x 2 = 08 og x 2 = 16 Figura 2.3 © Un aémero traccionario pura en base 10 que no tiene su correspondiente forma en el sistema binario de numeracién. Donde j = i/5" y 5* debe ser factor de i, Para fracciones decimales de un sole digito, tnica- mente 0 y 0,5 dan como resultado binario una fraccién exacta (dando solo el 20% de las posibles fracciones decimates de un tinico digito); para fracciones de dos digitos, solo cumplen con la propiedad las fracciones 0,00, 0,25, 0,50 y 0,75, tas que corresponden al 4% de las posibles fracciones de dos digitos, etc. Existe una relacién entre los mimeros re- lativamente primos y las fracciones peridicas, que puede ser dil para entender cual es la raz6n por la que algunas fracciones decimales exactas no tienen una forma equivalente bi- aria que también seu exacta, D. E. Knuth, en The Art of Computer Programming, provee algunas profuadizaciones sobre el tema. Representaci6n binaria versus representaciOn decimal En tanto que 1a mayorfa de tas computadoras usan el sistema de numeracién binario pa- ra la representacién intema y el cdlcuto aritmético, algunas calculadoras y maquinas de oficina utilizan como representacién interna el sistema de numeracién decimal, con lo que no tienen los problemas de representacién mencionados. La causa principal de la uti- lizacién del sistema decimal de numeracién en las computadoras comerciales no es tan- to el problema de la precisiGn de Jos ntimeros fraccionarios sino el hecho de poder evitar los procesos de conversién decimal-binario en las unidades de entrada y salida, procesos que hist6ricamente requitieron una cantidad de tiempo importante, Representacién de numeros en los sistemas binario, octal y hexadecimal Sibien los nimeros binarios reflejan la realidad de la representacién interna de los néme- 19s tal como se utiliza en la inmensa mayoria de as computadoras, tienen como desven- taja el hecho de requerir mayor cantidad de digitos para representar un nimero dado que cualquier otro sistema de numeracién posicional. Asimismo, suele ser mas facil cometer 28_PRINGIPIOS DE AROUITECTURA DE COMPUTADORAS, errores cuando se escriben mimeros binarios debido a la gran cantidad de ceros y unos que hay que utilizar en la representaciGn. En apartados anteriores se ha mencionado a los sistemas de numeracién octal (sistema de base 8) y hexadecimal (de base 16), como sistemas vinculados al sistema de numeracién binario. Esta relacidn esta dada por el he- cho de ser estas bases potencias de dos, la menor de todas ellas. Se procederé a demos- rar que la conversiGn entre jos sistemas de numeracién binario, octal y hexadecimal es i |. ¥ que hay ventajas précticas significativas en el uso de estos sistemas para la re- presentacién de nimeros. Los niimeros binarios pueden ser considerablemente més grandes (en cantidad de di- gitos) que sus equivalentes decimales, Suele resultar practico como elemento de repre- sentacién el utilizar aquellos sistemas de numeracién cuyas bases son potencia de dos. La conversiGn entre los sistemas de numeracién de bases 2, 8 y 16 es mucho més sencilla que convertir hacia y desde el sistema decimal. Los valores utilizados para los digitos del sistema octal resultan familiares por cuanto son los primeros ocho digitos del sistema de- cimal. En cambio, para el sistema hexadecimal, se requieren seis digitos mas que los que se usan en el sistema decimal, La convenci6n habitual para la representacidn de los digi- tos adicionales (10, 11 ,12, 13, 14, 15} del sistema hexadecimal pasa por el uso de las seis primeras letras dei abecedario, sean maydsculas o mindsculas. La figura 2.4 representa los digitos utilizados coménmente en los sistemas de numeracién de bases 2, 8, 10 y 16. Al comparar la columna correspondiente al sistema binario con las columnas de los sis- temas octal y hexadecimal surge que se requicren tres bits para representar en binario ca- da uno de los digitos del sistema octal, y cuatro bits para representar en binario cada un de los 16 digitos del sistema hexadecimal, En general, se requieren k bits pura represen- tar en binario un digito del sistema de numeracién de base 2% siendo & un mimero ente- £0, por lo que el sistema de numeracién de base 8 = 2° requiere tees bits por digito, en tan- to que el sistema de numeracién de base 16 = 2* requiere cuatro bits por digito. Para conventir un nimero expresado en el sistema binario al sistema octal, se divide el mimero binario original en grupos de tres bits cada uno, empezando a partir de la coma de- cimal, completando el grupo més significative con ceros, en caso de ser necesario. Luego, cada trio de bits se convierte en forma individual al sistema octal. Para conversiones des- de el sistema binario al hexadecimal se utilizan grupos de cuatro bits. Si se pretende con- vertir cl ntimero (10110), al sistema de base 8, el procedimiento es el siguiente: (10110), = (010), (110), = (2)g (6)_ = (26), En ef caso de los dos bits de mayor peso, se agregé un cero a la izquierda para completar el trio correspondiente. Si ahora se considera la conversién det niimero binario (10110110), al sistema hexa- decimal, un procedimiento similar al anterior leva a: (10410110), = (1011), (0110), = (B),, (6g = (BO), apiruio 2 + nEPREsEwTacr6n GE LA WFORMACION 29 Binario Octal Decimal Hexadecimal (base2) (base 8) (base 10) {base 16) o ° 0 9 1 1 1 1 10 2 2 2 un 3 3 3 100 4 4 4 101 5 3 3 10 6 6 6 a i 7 7 1000 10 8 8 1001 "1 9 9 1010 2 10 A 1011 13 " B 1100 14 12 c 1108 15 3 D 1110 16 14 E a w 15 F Figura 2.4. Vslores de ls primeros 16 nimeros en los sistemas de aumeracién binavio, octal, decimal y hexadecimal, Néiese que B, en el sistema de numeracién hexadecimal, no es una variable, sino que es el digito de dicho sistema que representa al niimero once. Los métodos de conversi6n planteados pueden usarse para convertir un mimero desde cualquier sistema de numeracién a cualquier otro sistema, pero es probable que la forma de realizar una conversi6n, tal como la de convertir (513,03), a base 7, no resulte dema- siado evidente. Como ayuda en estos casos no habituales, se puede realizar la conversi6n pasando primero por el sistema de numeracién decimal, y completando luego Ia conver- sidn desde el sistema decimal a la base de destino. Como regla general, se utiliza el méto- do polinémico cuando se convierte un niimero al sistema de numeracién decimal, y se uti- lizan los métodos de multiplicacién (para nimeros fraccionarios) y de division y obtencién de restos cuando se convierte un nimero desde el sistema decimal. 2.2.5 Una primera mirada a la aritmética de las computadoras El andlisis detallado del célculo en computadoras se desarroHard en el capitulo 3. Por el momento se analizar4 emo se resuelve la suma binaria, dado que este conocimiento es necesario para la representacién de ntimeros binarios con signo. La suma binaria se rea- fiza en forma similur a la forma en que se realizan a mano las sumas en el sistema deci- mal, tal como se ilustra en la figura 2.5. Dos ntimeros binarios A y B se suman de dere- cha a izquierda, generando un bit de suma y uno de arrastre en cuda posicién binaria. Dado que los bits menos significativos de A y B pueden adoptar uno de dos valores, la su- ‘ma de la columna de las unidades permite plantear solo cuatro posibilidades: 0 +0, 0+ 1, | +0y 1+ 1, con un arrastre de 0, como se ve en la figura. El arrasire en la columna de Las uni- dades es siempre nulo, Para las columnas restantes, el arrastre que Iega desde la colum- ‘30__PRINCIPIOS DE AROUITECTURA GE COMPUTADORAS: na anterior puede ser cero 0 uno, por lo que cn cada columna pueden darse hasta ocho combinaciones de entrada, segtin lo muestra la misma figura 2.5. Amauedeenma 9 9 9 oO 1 1 1 4 ooo t 1 69 Oo 5 4 Operands [7 me ee eee ee tt Arrastee Suma Flemplas fil Arusedecmméa = 1 1 1 1 0000 Sumandod = OTL E1100 (24 Sunmdo# + 010411010 (90h Suma THOTOTIO Qe Figura 2.5 + Ejemplo de suma tinaria. Nétese que el mayor mimero que puede representarse con el formato de ocho bits de la figu- mi 2.Ses (1117 1111), = (255), ¥ que el menor ntimero a representar es (0000 0000), = (O),o- Los conjuntos de bits 1111 1111 y 0000 0000," asf como todos los patrones de bits interme- dios, representan a los ndmeros decimales correspondientes al intervalo cerrado que va desde 0 a 255, siendo todos ellos mimeros positivos. Hasta este momento se han consi- derado solo ntimeros sin signo, pero también se hace necesario admitir la representacién de ntimeros signados, para lo cual se asignaré aproximadamente la mitad de los elemen- tos antes mencionactos a la representaciGn de los némeros positivos y 1a otra mitad a los némeros negativos. La proxima seccién analiza cuatro convenciones de uso habitual en Ta representacién de mimeros binarios signados, 2.2.6 Niimeros signades en formato de punto fijo Hasta este momento solo se ha considerado la representacién de niimeros en formato de punto fijo sin signo. La situacién es bastante diferente cuando se pretende representar mi- meros signados. Existen cuatro convenciones distintas de uso habitual en la representa- ci6n de mimeros con signo: magnitud (valor absoluto) y signo, complemento a uno, com- plemento a dos y notacién excedida. Se analizarin todas ellas, de una en una, utilizando como ejemplo Ja representaci6n de mémeros enteros. Durante el andlisis, ¢l lector podré emplear como referencia la tabla 2.1, que muestra las cuatro representaciones para el ca- so de un miimero de tres bits. * NW. de T: Para mayor claridad, los nimeros binarios de més de cuatro bits se separan en grupos de a cualro (un cigito hexadecimal). Esta separacién no influye sobre el valor det nirnero; solo se utiliza para tecilitar la lectura, CAPITULO 2 + REPRESENTACION DE LA INFORMACION 31 Decimal Sinsigno Magnitud ysigao Complementoal Complementoa? Excesod 7 We - - 6 Ho - - = - 5 101 - - - - 4 100 - - - - 3 on on on ou ty 2 10 O10 010 010 m0 t 001 oO1 O01 oor 101 40 000 000 000 000 100 oO - 100 ut 000 100 tr - 101 10 U1 ou 2 - HO 101 10 O10 “3 - ML 100 101 00 4 - - - 100 000 ‘Tabla 2.1 * Repraseataciones de nimeros enteros de tres bits. Magnitud y signo La representaciGn en magnitud y signo (conocida también como de valor absolute y no) es la més habitual debido a su uso en el sistema de numeracién decimal. Un signo mas 0 un signo menos, colocado a Ia izquierda del nimero representado, indica si el né- mero en cuesti6n es positivo o negativo, tal como se acostumbra al escribir +12,,0-12,q En la representacion binaria de magnitud y signo se utiliza el bit ubicado més a la izquier- da (el de mayor valor absoluto) para representar el signo, asigndndosele valor 0 o | para representar, respectivamente, el + y el -. Los bits restantes conticnen el valor absoluto del numero. En esta convencién, las representaciones binarias de +12,, y 12, en formato de palabra de ocho bits, se traducen como: +(12),5 = (0000 1100), (12), = (1000 1100), El ndmero negative se obtiene simplemente al reemplazar, a partir de la representacién deb imero positivo, el cero del bit de signo por un uno, Nétese que en esta convencién exis- ten dos representaciones para el cero, una positiva y una negativa: 0000 0000 y 1000 0000. En el formato utilizado en el ejemplo se hace uso de ocho bits, siendo validas todas las combinaciones de esos ocho bits, por lo que existen 25 = 256 combinaciones diferen- tes, Sin emburgo, esta convencidn solo puede representar 2°— | = 255 combinaciones, da do que +0 y -0 representan el mismo niimero. ‘32_PRINGIPIOS DE ARQUITECTURA DE COMPUTADORAS En el desarrollo de! texto se hard uso de la representacidn en magnitud y signo duran- te el andlisis de las representaciones en punto flotante, en la seccién 2.3. Complemento a uno La operaci6n binaria de complemento a uno tiene una resolucién trivial; convertir en ceros todos los unos de un ntimero y convertir todos sus ceros en unos. Véase como referencia la cuarta columna de la tabla 2.1. De allf surge que en ta representucién de complemento a uno, el bit més significativo es 0 para los niimeros positives y 1 para Jos negativos, tal como ocurre en la representacién de magnitud y signo. El procedi- miento de invertir ceros por unos y unos por ceros se conoce como complementacién de la palabra, Si se vuelve a considerar la representacién de (+12),9 y (-12),,n forma- to de ocho bits, ahora usando esta convenciGn de complemento a uno, los resultados seran: (+12),9 = (0000 1100), (12), = (1111 0011), Nuevamente, debe notarse la doble representacién del cero, mediante 0000 0000 y 1111 1111, respectivamente, para +0 y -0. Como resultado, en esta convencidn también pueden repre- sentarse solo 2° — | = 255 valores numéricos a pesar de ofrecer 256 combinaciones. La representacién de complemento a uno no es de uso comtin, Esto se debe, al menos parcialmente, a la dificultad en ta realizacién de comparaciones derivada de la existencia de dos representaciones para el cero. Ofrece también una complejidad adicional en las operaciones aritméticas como la suma, lo que se analiza en el capitulo 3 Complemento a dos El complemento de un numero a dos se obtiene en forma similar a la del complemento a uno: tras invertir todos los bits de una palabra, se le suma uno al resultado obtenido, y si esa suma da por resultado un arrastre desde el bit mds significativo, el mismo se desear- ta. Si se analiza la quinta columna de la tabla 2.1, se puede observar que en la represen tacin de complemento a dos y signo, el bil més significative vuelve a ser cero para los niimeros positivos y uno para los negativos. No obstante, esta representacién no ofrece la caracteristica desafortunada vista en los dos modelos anteriores, dado que solo posee una Gnica representaci6n para el cero. Para ver que esta afirmacién es cierta, considérese la obtencién del valor negativo correspondiente al (0),,, cuyo formato es: (0), = (0000 0000), CAPITULO 2 + REPRESENTACION DE LA INFORMACION 33 El céleulo del complemento a uno de esta palabra lleva a obtener (ILI 1111}, ¥ siaes- te valor se Je suma 1, en formato de ocho bits se obtiene (0000 0000),. Asi, la represen- tacién del (-0),.= (0000 0000),. E] arrastre proveniente del bit ms significativo siempre se descarta en las operaciones de suma en complemento a dos, excepto cuando se detec- ta una situacién de desborde. Dado que hay una dnica representaci6n para el cero, y da- do que todas las combinaciones son vélidas, existen 2° = 256 ndmeros diferentes a ser re- presentados en esta convencién, Si se vuelve a considerar la representacién de los nimeros decimales +12 y -12, en formato de ocho bits, ahora con la representacién de complemento a dos y signo, el pro- cedimiento requerird comenzar con (+12),,= (0000 1100),. Si se invierte o niega el va- Jor, se obtendré (1111 0011), Si al resultado se le suma uno, se obtiene (1111 0100),, por Jo que (12), = (1111 0100), (+12), = (0000 1100), G12) 9 =U 10100), Si se considera que el cero es positivo, 1o que es razonable dado que su bit de signo es ce- 10, existen en la convencién igual cantidad de mimeros positivos y negativos. Los niimeros positivos arrancan desde cero, pero los negativos se inician en -1, por lo que el valor abso- uto del nimero mas negativo es mayor, en una Unidad, que el valor absoluto del nimero. ms positivo. EI mayor nmero positive que se puede expresar en esta convencidn es +127 y el menor mimero negativo (el neimero negativo de mayor valor absoluto) es -128, No existe, por consiguiente, ndmero positivo alguno a ser representado que pueda correspon- derse con el complemento de -128. En efecto, si se trata de obiener el complemento a dos de -128, se volverd a obtener un niimero negativo, segin puede observarse a continuacién: (-128),, = (1000 0900), OIL L111 + L = (1000 0000), La convencién de complemento a dos y signo es la representacién més utilizada en computadoras, y es la que se empleard a lo largo de este texto. Representacion excedida (desplazada) En la representacién con exceso 0 desptazamiento, los niimeros se tratan como si no tu- vieran signo, pero se los “desplaza” en su valor par medio de la resta de otro niimero co- nocido como exceso o desplazamiento. La idea es asignar el valor numérico més peque- fio, formado por todos ceros, al valor negativo del desplazamiento, y asignar los valores restantes en secuencia a medida que los patrones binartos aumentan en magnitud, Una for- 34 _Prwcipios OE ARQUITECTURA GE COMPUTADORAS ma conveniente de pensar en una representacin excedida es la de imaginar al nimero co- mo representado por Ia suma de su expresidn complemento a dos y otro niimero, al que se designa como “exceso” o “desplazamiento”. Nuevamente, puede emplearse como referen- cia la tabla 2.1, en este caso la columna de la derecha, para ejemplos de aplicacién. Si se vuelve a plantear el ejemplo de la representaci6n de (+12),9 ¥ (-12),9 en formato de ocho bits pero utilizando ahora una representaci6n en exceso 128, los dos ntimeros se obtendrin sumando 128 al némero original y determinando luego Ia versi6n binaria sin signo, Para (+12),9 se calculard (128 + 12 = 140), 10 que Hevard al patrén (1000 1100),, Para (-12),9, el cfllculo a realizar es (128 12 = 116),o, obtenigndose ahora la representa ci6n binaria (0111 0400), (412),9 = (1000 1100), 12), = (0111 0100), Nétese que no hay ningun significado numérico asociado con el valor del excesa; su efecto es simplemente el de desplazar la representacién de los némeros expresados en complemento a dos. Hay una sola representacién desplazada para el 0. dado que la representacién excedida constituye simplemente una versi6n desplazada de la representacién complemento a dos. En el caso anterior, el valor del exceso fue elegido para que tuviese el mismo formato que el ni mero negativo mas grande, lo que produce como efecto que los mimeros aparezcan ordena- dos numéticamente si se los mira en una representacién binaria no signada. Ast, el ndmero mids negative es (-128), = (0000 0000),, y el més positive es (+127)},g=(I111 LI), Esta representaciGn simplifica lus comparaciones entre ntimeros, dado que las representaciones binarias de los niimeros negativos tienen valores numéricamente menores que las represen- taciones de los ntimeros positivos, Esto se hace importante cuando se representan los expo- nentes de los niimeros en punto flotante. En este tipo de representacidn se requiere compa- rar dichos exponentes de dos cantidades para igualarlos, en caso de ser necesario, para sumar o restar. Las representaciones de punto flotante se analizardn en la seccién 2.3. 2.2.7 Decimal coditicado en binario ‘Un ndimero cualquiera puede representarse en su expresiGn de base 10 mediante codificacién binaria. Cada digito del sistema de numeracidn decimal se representa con cuatro bits, dando lugar a lo que se conoce como decimal codificado en binario (BCD, binary coded de mat. Cada digito BCD puede tomar uno de diez valores. Dado que para cada digito decimal hay 2* = 16 posibles combinaciones binarias, resulta que quedan seis combinaciones bina- rias de cuatro bits sin utilizar. En el ejemplo de la figura 2.6 se presenta un numero de cua- tro digitos decimales significativos, lo que implica la existencia de 10*= 10.000 combinacio- nes binarias validas, de las 2"° = 65.536 combinaciones que pueden formarse con 16 bits. CaPhrwuo 2 + REPRESEWTACION DE LA WFoRMAEION 35 Si bien algunas de las combinaciones binarias no se utilizan, el formato BCD se em- plea coninmente en calculadoras y en aplicaciones comerciales. Existen menos probl ‘mas cuando se representan fracciones decimales exactas en este formato, en contrapos ci6n con la representacién binaria, No hay necesidad de convertir la informacién que se ingresa en formato decimal (como en una calculadora) o de convertirlos desde un forma- to de representacién binaria a su correspondiente expresién decimal. La realizacién de operaciones aritméticas con ndmeros BCD signados puede no re- sultar obvia, Si bien el uso de representaciones de magnitud y signo es habitual en el sistema de numeracién decimal, la computadora utiliza un método diferente para la re- presentacién de niimeros decimales signados. En la representacién de complemento a nueve, los nimeros positivos se representan en la forma BCD habitual, pero el digi- to decimal mds significativo adopta un valor menor que 5 si el mimero es positive, y 5.0 mas si et niimero representado es negativo. El complemento a nueve se obtiene restando cada digito de 9, Por ejemplo, el niimecro decimal +301 se representa como 0301 (0, simplemente, como 301) tanto en las representaciones de complemento a nueve y a diez, segin se muestra en la figura 2.6a. El ndmero negativo, en com- plemento a nueve, es 9698 (figura 2.6b), y se obtiene restando de 9 cada uno de los digitos del 0301. El complemento a diez se obtiene sumando uno al complemento a nueve, por lo que la representacién de -301 en notacién de complemento a diez seré 9698 + I = 9699, tal como se ilustra en la figura 2.6c. En este modelo, los niimeros positives asumen un ran- g0 de 0 2.4999, en tanto que los niimeros negativos estén en el rango de 5000 a 9999. Se (a 2008 01k, 9000 9001, (20149 Gamrlementoa Oyo Bio Oho ig (e 1001 D110 1001 1000 e301). Complemeno as Orn “Go Ow Cho fe LOGE C110 1008 1001, 300% Complemento a 10 Dig Gy Oho Oo Figura 2.6 + Representacién BCD de los ndmeros 203 y -301 en (a) complementa a nueve, (6) complementa a 2.3 Formato de representacién en punto flotante La representacién de ntimeros en formato de punto fijo, que fuera analizada en la secci6n 2.2, ubica la coma decimal en una posici6n fija, y una cantidad fija y determinada de digitos tan- to ala inquierda como a la derecha de la coma decimal. Por consiguiente, este tipo de repre- sentacién puede requerir una gran cantidad de digitos para representar un rango de nimeros apropiado para determinada aplicacién. Por ejemplo, una computadora que deba representar 36_PRINCiPls DE ARQUITECTURA DE COMPUTADORAS niimeros de! orden del billén (millén de millones)? requerira, al menos, 40 bits a la izquier- da de la coma decimal, dado que 10'* es aproximadamente igual a 2". Si se debiera represen- tar ademas una fraccién equivalente al billonésimo, se requerirfan adicionalmente otros 40 bits a fa derecha de ta coma decimal, lo que darfa por resultado una palabra de 80 bits. En la préctica, suelen aparecer en los célculos nimeros que pueden ser mucho mayores 0 mucho menores que los mencionados, lo que requiere atin més espacio de almacenamiento en la computadora, Para manejar y almacenar ndmeros con 80 o mas bits de precisién se re- quiere una buena cantidad de hardware, y, por otra parte, las operaciones de célculo pueden Megar a resolverse més lentamente cuando se trabaja con cantidades mayores de bits. No abs- tante, también es cierto que en muchas ocasiones no se requiere una precisi6n muy fina cuan- do se trabaja con cantidades muy grandes y que, por el contrario, no se requieren nuimeros muy grandes cuando se trabaja con operandos pequefios. Como conclusién, la computadora ms eficiente puede imaginarse como aquello que soto tiene la precisién que se requicre. 2.3.1 Rango y precision en nimeros de punto flotante La representacidn de nimeros en formato de punto flotante permite representar un am- lio rango de nimeros con poca cantidad de digitos binarios; para esto, se separan los di- gitos utilizados para determinar la precisin de la representaciGn de aquellos necesarios ara representar el rango. El numero decimal de formato de punto flotante utilizado para expresar el niimero de Avogadro es +6,023 x 10% En esta representaci6n, el rango se expresa a través de una potencia de Ia base 10, 10% en este calso, y la precisién se expresa a través del mimero de punto fijo, 6,023 en este casi En la representacién de niimeros de formato de punto flotante, la parte que corresponde al valor en punto fijo se conoce habitualmente como mantisa del mimero. Asi, la repre- sentacién de punto flotante de una cantidad numérica queda determinada por un trio de elementos numéricos; el signo, el exponente y 1a mantis Ubicacién de a coma decimal > 2] BI] [5 lag 3 Signo Exponente ——-Mantisa Dos digitos Cuatro eigitos Figura 2.7 + Representaci6n de un nimero decimal en formato de punto fiatante, 2, Debe tenerse en cuenta queen la denominacion norteamericana de los nimeros, 10'2, aqui mancionado co- imo “bil6n”. se denomina “trillén”, Para los nortearnericanos, el “bitin” corrasponde a lo que en otras par- tes del mundo se conace como “mil millones” (10%) capiriuo 2 « REPAESENTACION OE LA WronMACiiN 37 El rango de fa representacién queda determinado basicamente por ta cantidad de digitos del exponente (en este ejemplo se utilizan dos digitos para la representaciGn del exponen- (c) y 1a base a la que ese exponente afecta (diez, en este caso). La precisién queda deter- minada por la cantidad de digitos de la mantisa (cuatro, en este ejemplo). Asi, el nimero completo puede representarse a través de su signo y 6 digitos, dos para el exponente y ‘cuatro para la mantisa. La figura 2.7 muestra un formato que podria utilizarse dentro de una computadora para la representacién del ntimero asi expresado, Nétese que, en este ejemplo, los digitos se empaquetan colocando primero el signo, Iuego el exponente y por ‘iltimo la mantisa. Este ordenamiento resulta préctico en las operaciones de comparacién de cantidades expresadas en et formato de punto flotante. El lector debe tener en cuenta que la coma decimal no debe almacenarse dado que ocupa siempre la misma posicién dentro de 1a mantisa, la que esté representada en formato de punto fijo. (Esta idea se ana- liza en la secci6n 2.3.2.) Si se requiere un rango mayor, y si a cambio se est dispuesto a sacrificar precisién, se pueden usar tres digitos para la parte fraccionaria y dejar entonces tres digitos dispo- nibles para el exponente, sin necesidad de aumentar la cantidad de digitos totales de la re- presentacién. Un método alternativo para aumentar el rango es el de aumentar la base del sistema de representacién, lo que incrementa la precisién de fos ntimeros mas chicos mientras disminuye la de los ntimeras més grandes. La posibilidad de plantear solucio- nes de compromiso entre rango y precisién es una de las ventajas principales de la repre- sentacin en formato de punto flotante, aun cuando reducir la precision puede provocar problemas que Ilevan al desastre, tal como se lo describe en un ejemplo planteado en la seccién 2.4, 2.3.2 La normalizacién y el esquema de bits implicitos La representaci6n de ndmeros en formato de punto flotante presenta como eventual pro- blema el hecho de que un mismo mimero puede representarse de distintas maneras, lo que complica las comparaciones y las operaciones aritméticas. Por caso, las siguientes formas numéricas son todas equivalentes: 3584.1 x 10° 3,5841 x 10? = 0,35841 x 10¢ Con el objeto de evitar el uso de representaciones multiples para el mismo numero, las representaciones de nimeros en formato de punto flotante tabajan de manera normali- zada, En este concepto, la coma decimal se desplaza a derecha 0 a izquierda y se ajusta el exponente en forma coherente con el desplazamiento de Ia coma decimal hasta ubi- carla a la izquierda del digito no nulo ms significativo, Por consiguiente, la expresién normalizada del nimero que aparece en el ejemplo anterior es la tercera, a la derecha de Jas tres. Como inconveniente, este esquema no permite representar el cero, por lo que su representaci6n debe hacerse a través de un procedimiento de excepcién. La excepcién ‘38_PRINGIPIOS DE ARQUITECTURA DE COMPUTADORAS planteada consiste en la representacién del cero a través de un mimero con mantisa to- talmente nula, Si la mantisa se representa como un niimero binario (esto es, en el sistema binario de numeracién), y si la condicién de normalizacién consiste en que la mantisa normalizada siempre comience con un I, no hay necesidad de almacenar ese 1, por lo que, efectiva- mente, la mayoria de los métodos de representaci6n de nimeros en formato de punto flo- tante proceden a no almacenar dicho bit inicial. En vez de almacenarlo, lo que se hace es “recortarlo” antes de empaquetar el ntimero para su almacenamiento, recuperéndolo at desempaquetar y Hevar e] numero a su representacién de mantisa y exponente. Como re- sultado de esta operaci6n se obtiene lugar para un bit adicional a la derecha de la manti- sa, lo que mejora la precision de la representaci6n. El bit asi eliminado se suele denomi- nar bit implicito. Por ejemplo, si en un formato determinado la mantisa luego de la normalizacién se representa como 0,11010, el pairén a ser almacenado es 1010 y el bit més significativo se trunca, se esconde, se sobreentiende. En el andlisis de la norma de representacién de punto flotante IEEE? 754 veremos que la misma representa nimeros utilizando un bit implicito. 2.3.3 Representacién de aiimeros de punto flatante dentro de la computadora. Introduccién Para ilustrar las caracteristicas importantes de la representaci6n de nimeros en formato de punto flotante se procederé a definir un formato simple de representacién. En principio, este formato puede parecer innecesariamente complicado. La mantisa se representard en formato de magnitud y signo, con un Gnico bit para representar el signo y tres digitos he- xadecimales (doce bits) como tamaiio de la representaci6n. El exponente serd un mimero de tres bits, expresado en exceso 4, con base 16. La forma normalizada de la cepresenta- ci6n tiene la coma fraccionaria ubicada a la izquierda de los tres digitos hexadecimales. Los bits que forman Ia palabra se empaquetardn de modo tal que el bit de signo que- de a la izquierda, seguido por el exponente de tres bits y, a continuacién, los tres digitos hexadecimales de la mantisa, El formato analizado no almacena ni la base del sistema de representacién ni ta coma fraccionaria. La razén fundamental para utilizar este formato aparentemente extrafio es la posibil dad que ofrece para comparar directamente dos nimeros por =, #, 2 y BM o Un némero grande ——» bY (1-5) 1-6 l- = ' Un intervalo pequefio— —b™ bs Un nimero pequeio —» BF (1-69) 1-6 \- =| ‘ ‘capfro 2 + REPRESENTACION OF LA INronMaciiN 45 Se utiliza en este caso la representacién de un mimero pequefio, en lugar de la represen- tacién correspondiente al ménimo nimero admisible, debido a que el intervalo, grande, entre cero y el primer némero representable. es un caso especial. Se propone considerar el problema de la conversién del nimero 9,375 x 10 aun forma- to de notacién cientifica utilizando el sistema binario de numeracién. Esto significa que el resultado deberia adoptar ta forma x,yy x 26. El proceso se inicia con la conversion de! valor decimal punto flotante a un formato de punto fijo. Con este objeto se desplaza la co- ‘ma decimal dos posiciones a la izquierda, lo que corresponde al exponente -2, El niime- 10 resultante es 0.09375. Mediante el método de las multiplicaciones se procede a con- vertir el mimero decimal asi obtenido at sistema binario, representandoto en punto fijo: 009375 x 2 = 0,1875 01875 x 2 0,375 0,375 x 2 0,75 0,75 x 2 1,5 05 x 2 = 10 Entonces, resulta que (0,09375),9 = (0,00011),. El dltimo paso consiste en la conversién del valor a la representaci6n normalizada de punto flotante, lo que Heva a que 0,00011 = 0,00011 x = IIx 240 2.3.5 La norma de representacién IEEE 754 Existen muchas maneras de representar néimeros en formato de punto flotante, algunas de las cuales ya han sido analizadas. Cada representaci6n tiene sus caracterfsticas propias en términos de rango, precisién y cantidad de elementos que pueden representarse. En unt esfuerzo por mejorar la portabilidad de los programas y asegurar la uniformidad en la exactitud de las operaciones en el formato de punto flotante, el [EEE desarroll6 su nor- ma IEEE 754 para la representacién de niimeros en el formato de punto flotante. Existen algunas lineas de productos anteriores a dicha norma que no la utilizan, como las compu- tadoras 1BM/370, las computadoras VAX (DEC, Digital Equipment Corporation) y la \i- nea Cray, pero précticamente todas las nuevas arquitecturas utilizan en alguna forma la estructura IEEE 754, La norma {EEE 754, tal como se la describe, debe estar asociada con un sistema de computacién, no siendo necesario que la rel En consecuencia, mientras la computadora siga respetando la norma, el soporte puede realizarse a través de una combinacién de hardware y software. 46 PRINCIPIOS GE ARQUITECTURA DE COMPUTANORAS 2.3.5.1 Formatos Hay dos formatos principates en Ia norma IEEE 754: el formato de simple precisin y el formato de doble precisién. La figura 2.10 resume ta distribuci6n de ambos forma- tos. E] formato de simple precisién requiere 32 bits, mientras que el de doble precision utiliza 64 bits. El formato de doble precisién es, simplemente, una versién mas amplia del formato de simple precisién. bie ———— Simple [Taam ae | pee” Exponenie Manisa Sign a A 6a bits, ei, Leal srs , Exponente Mantisa Figura 2.10 ¢ Formatos IEEE 754 para punto flotante simple precisidn y doble precisién. EI bit de signo se ubica en la posiciGn det bit més significativo, a la izquierda del nimero, € indica que el mimero a representar es positivo o negativo mediante un 0 o un 1, respectiva- mente. A continuacién se ubica el exponente, de ocho bits, en formato exceso 127 (no 128). Tal como se describe luego, las combinaciones 0000 0000 y III IIL se reservan para casos especiales. Pata el formato de doble precisi6n, se utiliza un exponente de 1t bits, ex- presado en exceso 1023, y se reservan las combinaciones 000-0000 0000 y 111 111 ILI. A continuaci6n, se representa la mantisa, en binario y formada por 23 bits. A la izquierda de la coma fractionaria existe un bit implicito, el que cuando se lo considera en conjun- to con la mantisa de simple precisién, constituye una palabra de 24 bits, de la forma 1 fffff...f. En este formato, el patrén filff.f representa los 23 bits de la mantisa que se almacenan. El formaio de doble precision también utiliza un bit implicito a la izquierda de la coma fraccionaria, lo que representa un valor significativo de 53 bits. En ambos formatos, el niimero se representa normalizade a menos que la estructura soporte nui- meros denormalizadas, segiin se describird mas adelante. Existen en la norma cinco tipos de nimeros que se representan. Los niimeros no nu- Jos adoptan los formatos descriptos anteriormente, La norma admite una llamada repre- sentacién “limpia” del cero, formada por la combinacién reservada 0000 0000 en el cam- po del exponente, y todos ceros en Ia mantisa, El bit de signo puede ser cero 0 uno, por To que hay dos representaciones para el cero. E1 infinito puede representarse mediante la combinacién reservada 1111 It] enelex- ponente, acompafiada por una mantisa de valor cero y el bit de signo en cero o uno. La re- presentacién del infinito se usa para manejar situaciones de desborde o para ofrecer una representaci6n valida para la divisién de un némero (distinto de cero) por cero. Si se plan- tea la cuestién de dividir cero por cero o la de dividir infinito por infinito, el resultado CAPHrULO 2 + REPRESENTACION DE LA INFORMACION 47 queda indeterminado. En este caso, la representacién NaN (not a number: no es numéri- co) presenta en el campo del exponente la combinacién reservada 1111 1111, en fa man- tisa un valor no nulo, y el bit de signo indistintamente en 0.0 1. Puede obtenerse también un NaN si se intenta calcular la rafz cuadrada de -1. ‘Tal como sucede en todas las representaciones normalizadas, existe un intervalo impor- tante entre cero y el primer nimero que puede representarse. La representacién de nime~ £08 incluidos en este intervalo se resuelve mediante la representaci6n del “cero sucio”, de- normallizado, En este caso, el bit de signo puede ser 00 1, ¢l campo del exponente contiene Ja combinaci6n reservada 0000 0000, que representa -126 en el caso de simple precisién y -1022 para doble precisién, en tanto que la mantisa contiene el valor real correspondiente a la magaitud del némero. Por lo tanto, no hay bit implicito en este formato. Nétese que la notaci6n denormulizada no es una represemaciGn no normalizada. La diferencia clave en- tre ambas palabras consiste en que para un nimero dado existe una sola representaci6n de- normalizada, en tanto que existen muchas representaciones no normalizadas. La figura 2.11 ilustra algunos ejemplos de nimeros expresados en formato de punto flotante segin Ia norma IEEE 754. Los ejemplos desde (a) hasta (h) se representan en for- mato de simple precisin y el ejemplo (i) se muestra en formato de doble precisién. El ejemplo (a) ilustra un namero cualquiera en formato de simple precisi6n. Debe notarse que la mantisaes 1,101, y que, sin embargo, solo se representa explicitamente Ia fraccién (101). El ejemplo (b) utiliza el minimo exponente en simple precisién (-126) y el ejem- plo (c) utiliza el exponente maximo en simple precisién (+127). Los ejemplos (4) y (e)ilustran las dos representaciones del cero. El ejemplo (f) repre- senta el formato del 40, Existe, asimismo, un formato alternativo para -c. El ejemplo (g) muestra un niéimero denormalizado, Nétese que si bien el nimero en si es 2, el exponen- te minimo representable sigue siendo -126. El exponente para niimeros denormalizados en simple precisi6n siempre es -126, representado por ka combinacién 0000 0000 y una man- tisa no nula. La mantisa representa directamente la magnitud del miimero. Asi se tiene que 42° = 40,01 x 2", representada por la combinacién indicada en la figura 2.11g. El ejemplo (hi) nuestra un NaN de simple precisién, Un NaN puede ser positivo 0 negati- vo. Finalmente, el ejemplo (j) replantea la representaci6n de 2", pero utilizando ahora el for- mato de doble precisiGn, La representacin corresponde a un néimero cualquicra de doble pre- cisi6n y, por ende, no hay consideraciones especiales para hacer en este caso. Notese que 2% tiene una mantisa de 1,0, por lo que la parte fraccionaria esté totalmente formada por ceros. Ademés de los formatos de simpte y doble precisi6n, existen dos formatos que se cono- cen como extendido simple y extendido doble. Los formatos extendidos no son visibles para el usuario, pero se usan con el objeto de mantener internamente una mayor precisin durante los edlculos para reducir los errores de redondeo. Estos formatos extendidos incre- ‘mentan el tamafio de los exponents y de las mantisas en una cantidad de bits que puede va- riar en funcién de la implementacién. Por ejemplo, el formato extendido simple agrega al menos tres bits al exponente y ocho a la mantisa, El formato extendido doble est4, en gene- ral, formado por 80 bits, con un exponente de 15 bits y 64 bits para la mai 48_PRINciPIas ne ARQUITECTURA DE COMPUTADDRAS Valor Patran binario Signo Exponente Manisa @ — +Llorx2s 010000100 1101 0000 0000 0000 0000 0000 () 01011276 10000 0001 ‘010 1 100 0000 0000 0000 0000 © Hox 6 LAO ‘000 0000 0000 0000 0600 0000 @ +0 0 00000000 900.0060 0000 6000 0000 0040 © 0 1 0060 0000 ‘200.0000 0000 6000 0000-0000, wo 4 0 i (900.0000 e000 4000 8000 0000 @ 42% 0 0000 0000 (010.000.0000 0000 0000 0000 a 4NN 0) TUT (011 0111 6000 0000 0060 G000 @ 4208 0 o1LoWENIN ‘0900 0000 0000 0000 0000 0000 ‘9000 000 0000 0000 000 000-0000 Figura 2.11 » Ejemplas de niimeros en formato de punto flotante, representados segin la norma IEEE 754, en formatos de simple precisién (a-h) y de doble precisidn (i). Los espacios se usan para faciltar la visuatizacién. No son parte de la representaci¢a, 2.3.5.2 Redondeo Una implementaci6n de la norma IEEE 754 debe proveer al menos un formato de simple endo los restantes formatos opcionales, Mas aiin, el resultado de cualquier operacién que se realice con niimeros expresactos en formato de punto flotante debe ser precisa en el orden de la mitad del bit menos significativo de la mantisa. Esto significa que durante el calculo pueden ser necesarios alpunos bits adicionales de precisién (bits de guarda), y que debe haber un método apropiado para redondear el resultado interme- dio al némero de bits que constituyen la mantisa, Existen cuatro formas de redondear mimeros en la norma IEEE 754, Uno de los mé- todos redondea a cero, el otro redondea a tee y el otro, hacia -c°. Por defecto, el redondeo se realiza hacia el ntimero representable mas cercano. Los casos intermedios redondean hacia el nimero cuyo digito menos significative es par. Por ejemplo, 1,01101 redondea hacia 1,0110, en tanto que 1.01111 redondea hacia 1,1000. 2.4 Estudio de un caso: una falla en un misil defensivo Patriot causada por una pérdida de precision Durante el conflicto bélico ocurrido en Ios afios 1991-1992 entre las fuerzas aliadas y el ejército iraqui, conocida como “Operacién tormenta del desierto”, tas fuerzas aliadas uti- lizaron una buse militar ubicada en Dhahran, Arabia Saudita, In que se hallaba protegida por seis barreras basadas en misiles Patriot de origen estadounidense. El sistema Patriot habia sido desarrollado originalmente para ser mévil y para funcionar solo por algunas horas, con el objeto de evitar su deteccién. El sistema Patriot rastrea ¢ intercepta ciertos tipos de objetos, como los misiles bal ticos Scud, uno de los cuales acert6 en una barraca de la marina norteamericana en Dhah- ran el 5 de febrero de 1991, como consecuencia de lo cual fallecieron 28 norteamerica- nos. El sistema Patriot fallé en el rastreo ¢ imercepcién del misil Scud que llegaba, debido a una pérdida de precisidn en la conversi6n de niimeros enteros a formato de pun- to flotante. Los sistemas de radar operan a través del envio de un tren de pulsos electromagnéti- cos y de la posterior escucha de las seftales de retorno que pudieran haber sido reflejadas por objetos ul 10 det haz enviado. Si el sistema de radar del Patriot de- tecta un objeto aéreo de su interés, por ejemplo un Scud, procede a determinar la posicién de un detector de rango (véase la figura 2.12), el que procede a estimar la posicién que ‘ocupard el objeto rastreado en el momento del préximo barrido. Este detector también permite filtrar la informacién proveniente de las afueras de los Ifmites establecidos, lo que simplifica el rastreo. La posici6n del objeto (en este caso un Scud) se valida si se lo encuentra dentro del rango establecido. La determinacién del lugar en que se produciré la préxima aparicién del misil depen- de de la velocidad del mismo, La velocidad del Scud se determina por su cambio de po- j6n con relacién al tiempo transcurrido, y el tiempo se actualiza desde el reloj interno del Patriot en intervalos de 100 ms. La velocidad se representa con un mimero de 24 bits en formato de punto Mlotante, en tanto que el tiempo se representa como un niimero ente~ ro de 24 bits. Con el objeto de predecir la siguiente aparici6n del Scud, ambos valores de- ben representarse como mimeros de 24 bits en formato de punto flotante. rados en el cat Misil era dol aleance Volidacién Area de alcance Laaccién de bisqueda vbica al misil on algin lugar dentro el haz, Sistema Misi Pateiot de radar Figura 2.12. Efecto de los errores de conversién en e: cAloulo del rango de posicién, ‘50 _eRunereios DE ARQUITECTURA DE COMPUTADORAS La conversin del tiempo desde su formato de punto fijo al formato de punto flotanie da por resuliado una pérdida de precisién que aumenta en la medida en que aumenta eb tiempo medido por el reloj interno. El error introducido por la conversién trae como re- sultado un error en el cflculo del rango de posicién, proporcional ala velocidad del ob- jetivo y del tiempo transcurrido desde el comienzo del funcionamiento del sistema. La causa del ineidente de Dhahran, luego de un funcionamiento ininterrumpido del Patriot de més de 100 horas, fue un error de desplazamiento, en el rango calculado, de 687 m, lo que a su vez provocs la fallida intercepcién del Scud. EI problema de conversién se conocfa desde al menos dos semanas antes del inci- dente mencionado, por medio de informacién entregada por Israel; pero la llegada de} nuevo software con lus correcciones no se produjo sino hasta el dia anterior al ataque, debido a la dificultad que implicaba el realizar correcciones del sistema en un ambien- te de guerra. Se podria haber adoptado como solucién transitoria al problema, hasta tanto se tuviese disponible In modificacién requerida de software, la de reiniciar fre- cuentemente el sistema y, por ende, el reloj. Dado que el personal de campo no tenia in- formacién de cudnto tiempo era mucho tiempo en el funcionamiento continuo del siste- ma, -lo que ya se sabia a partir de ta informacién entregada por Israet-, esta simple solucién no se implementé nunca. La leccién que deja este caso es que hay que estar muy atento a las limitaciones que implica confiar en operaciones con formatos de pre- cisién finita, 2.5 Cédigos alfanuméricos A diferencia de los mimeros reales, que tienen un rango infinito, existe solo una cantidad finita de caracteres representables, Por consiguiente, para representar un conjunto com- pleto de caracteres hacen falta unos pocos bits por carfcter. Se describen aqui tres repre- sentaciones habituales en la codificacién de caracteres, los cédigos alfanuméricos ASCII, EBCDIC y Unicode. 2.5.1 El conjunto de caracteres ASCII La figura 2.13 representa el conjunto de caracteres que forman el cédigo ASCIE (American Standard Code for Information Interchange), simbolizados en notacién he- xadecimal. La representacién de cada cardcter requiere 7 bits, y las 128 combinacio- nes resultantes son caracteres vilidos. Los caracteres representados por los valores he- xadecimales 00-1F y el valor 7F corresponden a caracteres especiales de control usados para la transmisién de datos, el control de impresién y otros propésitos no im- primibles. Los caracteres restantes son todos imprimibles, ¢ incluyen la representa- cidn de letras, niimeros, simbolos y el simbolo espaciador. Los digitos 0-9 aparecen en secuencia, tal como lo hacen los dos alfabetos correspondientes a las letras maytis- Ccaptruto 2 » REPRESENTACION DE LA WFoRMACHiN 51 culas y mindsculas.5 Esta organizacién simplifica el manejo de los caracteres. Para obtener el valor de un digito a partir de su representacién ASCII, se debe restar (30), de dicha representacién. Para convertir el cardcter ASCII “5°, que se encuentra en la posici6n (35),,. al mémero 5, se caleularé (35 — 30 = 5),,. Para convertir una letra ma- yuscula en su correspondiente mindscula, se le suma (20), al valor correspondiente a la mayiiscula. Por ejemplo, para convertir la letra “H”, cuya posici6n es (48), en la representacién ASCII, en la letra “h”, ubicada en la posicién (68),,, se debe calcular (48 + 20=68),,. OO NUL]10 DLE]20 SP ]30 0 [4% @ [50 P [60 ~ |7 p or son} ir per}21 1 131 1 far A [51 Q jor a [at gq 02 STX |12 DC2Z}22 * /32 2 |42 B [52 R Jez b |72 © o3 etx} 13 Dc3|23 # 133 3 |as c [53 s [6 ¢ [73 s os BOT| 14 pCa }24 § [34 4 [ad D [54 T [64 d |7a t 05 ENQ}IS NAK}25 % [35 5 [45 E [55 U [65 © |75 06 ACK} 16 SYN|26 & |36 6 [46 F [56 V [66 1/76 v 07 BEL | 17 ETB/ 27 * [37 7 [47 G 157 W lo? g 77 w 08 BS 18 CAN)28 (¢ [38 8 [48 H [58 x [6s h [78 x oo HT |19 EM |29 ) [39 9 [49 1 |s9 ¥ [69 i [7 y OALF |1ASUB/2A * [3A 4A 4 [5A Z |6A j [7A 7% oB VT |iB Esc }28 + [3B : [4B K |5B [ joR k [7B ocrr jicrs |2c * \3c < Jac L jsc \ loc 1 |7c } opcr }ipGs /20 - [3D = [4D M /SD | |6D m | 7D } OE SO }iE RS |2e . [3 > [4E N [SE * joE n [7E ~ or st jipus jor / |3F 7 Jaf o |5F _ [6F o | 7F DEL NUL Nulo FF Cambio de pagina CAN. Cancelacién SOH Comienzo de encaberla CR Retommoacomienzo de linea EM Final de medio fisico STX Comienzo de texto SO Shift out SUB Sustitucidn ETX Finde texto St Shiftin ESC Salida EOT Finde wansmision DLE Salidadel vincalo de datos FS Separaddor de archivos ENQ Consulta DCI Control de dispositive GS Separaor de grupos ACK Acuse de recibo C2 Contr de dispositive 2 RS Separador de registros BEL Campanilla DC3_ Control de dispositivo 3. US Separador de unidudes BS Retroceso C4 Control de dispositivod —- SP_—_Espacio HT Tabulaci6o horizontal ©=—--NAK Acuse negativode ecibo DEL Borrar LE Cambio de tinea SYN. Sincronismo (nactive} VI Tabulacién vertical ETB Fin de blogue de transmisién Figura 2.13 » El digo de caracteres ASCII, representado en valores hexadecimales. 5, Conta comentario, los carectores “a” y “A” son diferentas y tienen cbdigns diferentes en ta representacién ASCII Las letras mintsculas se congcen como de tipo inferior (lower case), y fas mayisculas como de tipa ‘superior (upper case). La denominacién proviene de la posiciénrelativa de fos caracteres en los sistemas dé tipogratia, Las letras mayisculas aparecen encima de las mindsculas, lo que da origen a la nomenclature de tipo superior-iferio.ér la actualidad, si bien ta tipogralfa se realiza casi siempre en forma electronica, se si {Que manteniendo la nomenclatura tradicional. 52_PRINGIPIOS GE ARQUITECTURA DE COMPUTADORAS 2.5.2 El conjunto de caracteres EBCDIC Un problema que surge en la utilizaci6n del cédigo ASCIL es su capacidad para represen- tar solo 128 caracteres, lo que plantea una limitacién en muchos teclados que ademds de fas letras mayisculas y mindsculas incluyen una buena cantidad de caracteres especi: les.* El e6digo EBCDIC (Extended Binary Coded Decimal interchange Code) ¢s un 06- digo de ocho bits utilizado ampliamente por las computadoras IBM. Dado que los carac~ teres ASCII suelen representarse en un formato de ocho bits (un cardcter por byte), agregandose a los siete bits ASCII un cero 0 un uno, el uso de EBCDIC no plantea ma- yores necesidades de espacio para el almacenamiento de caracteres en una computadora. No obstante, para la transmisién de datos en serie (véase el capitulo 8), el uso de un cO- digo de ocho bits requiere tiempos mayores que la transmisién de un c6digo de siete bits, y en este caso, el cédigo de mayor tamaiio sf establece una diferencia. El cédigo EBCDIC se representa en la figura 2.14. Se puede observar la existencia de combinaciones no utilizadas, las que pueden usarse, Ilegado el caso, para caracteres es- pecificos de alguna aplicacién. El hecho de que haya huecos en las secuencias de las le- tras maydsculas y mimisculas no genera mayores inconvenientes, dado que el manejo de los caracteres puede seguir haciéndose como en el cédigo ASCII, solo que con diferentes desplazamientos. 2.5.3 El cédigo UNICODE Los c6digos ASCII y EBCDIC sirven para soportar los conjuntos de caracteres (latinos) Sricamente dominantes en las representaciones de la computacién, Existen muchos otros conjuntos de caracteres en uso en el mundo, y no siempre es posible la conversi6n de cédigo ASCII al cédigo correspondiente al idioma X. Por consiguiente, se hizo nece- sario el surgimiento de un nuevo conjunto de caracteres, universal y normalizado, al que se conoce como Unicode, y que sirve para soportar una buena cantidad de los alfabetos que se usan en el mundo. Unicode es una norma en desarrollo, que se modifica a medida que se le incorporan los simbolos correspondientes 2 alfabetos nuevos, y a medida que los conjuntes de caracteres incorporados se van modificando y se refinan las correspondientes representaciones. En la versiGn 2.0 de Unicode se incluyen 38.885 caracteres diferentes, los que cubren los princi- pales lenguajes escritos de uso en América, Europa, Medio Oriente, Asia, India y las islas del Pacifico. * NW. de T: Los autores se refieren al c6digo ASCII de 7 bits, 0 estindar, utiizado en el idioma inglés. La limi- 1aci6n que plantean se elimina en el c6digo conocido como ASCII extendido, que con 8 bits admite represen- ‘ar 256 caracteres. De hacho, la traducci6n de esta texto no podria haberse levaca a cabo sin la uliizacién 4e los caracteres dal lenguaje espafiolincluidos dentro de los 128 caracteres adicionales aportados por el édigo extendido. STX DLE BS ACK SOH ENQ ESC BYP CAN RES SI 80 DEL SUB NL CAPITULO 2. REPRESENTACION DE LA iNFoRMACIEN $3 00 NUL ol SOH 02 STX 03 ETX 04 PF os HT 06 LC 07 DEL 08 09 04 SM 0B VT 0c FF 0D CR OE So OF ST $0 DLE ai DCL 12 pcz 13 TM 14 RES 15 NL 16 BS IL 18 CAN 19 EM 1A CC 1B CUl IC IFS 1D IGS 1B IRS IF (US 20 DS 21 SOS 22 FS 2 24 BYP 25 LE 26 ETB 27 ESC 28 29 2A SM 2B CU2 2 2D ENQ 2E ACK 2F BEL 32 SYN 37 BOT 38 39 3A 3B CU3 3c Dea 3D NAK 3E 3F SUB 40 SP 4 42 43 44 45 46 a7 a8 49 4A @ 4B 4c 4D 4E aE 30 51 32 53 34 55 56 37 58 59 SA 5B sc sD 5E oF. Ronan ee daw 60 61 2 63 64 65 66 oT 68 oo 6A 6B 6c 6D 6B oF 0 n 2 B a” 5 76 7 B D TA 78 1 2D TB TF, > 2 # @ 30 Ad cof [EO \ gia jar - fcr a [EL g2 b [az s [c2 B [F2 S g3oc last [cs c [Bs T gad jaa u [cs D [Es U ase [as v [cs & [ES Vv a of [as w [co F [ES Ww ag [a7 x |c7 G IE? x ge oh |As y [cs H [EB Y¥ go i fag z joo 4 feo z BA AA CA EA 8B AB cB EB 8c AC cc EC aD AD cD ED 8E AE cE EE 8F AF oF EF 90 BO Do y [FO 0 gi j [Bt pi {riot 92k | B2 D2 K |[F2 2 935 | BS bs L [FB 3 94 om | Ba ba M [FS 4 95 on | BS ps N [FS 5 96 0 | BG D6 0 |F6 6 97 p |B7 br p |e 7 98 oq | Bs Ds Q [FR 8 oo or [Bo po R [Po 9 9A BA DA FA | 9B BB DB FB 9c BC De FC 9D BD DD FD 98 BE DE FE oF BF, DF FF Comienzo de texio Salida del vinculo de datos PF Retroceso DS_ Seleccionar di ‘Acuse de recibo PN Actuat perforado ‘Comienzo de encabezado SM Fijar modo Consulta LC Lower Case Escape CC Cursor Control ‘Saltenr ER Acerca de cima Cancelaciéa EM End of Medium Reponer Shift In TM Tape Mark Shift Out UC Maydsculas Borrar Reemplazar Linea menor ‘VT. Tabulaciéa verical IRS Cambio de Tinea RS. Sepurador de registrosDC1_ Conuol de dispostivol BEL Campanitla Detener perforadar DC2 Console dispostive 2 SP Espacio DCA Convol de dispostivod TL Inactive CUI Usodeletiene 1 NUL Nulo GU2 Uso del cliente 2 CU3. Uso delelieme 3 SYN Synctranous tle TFS. Separador de archivos de imtercambio EOP Finde canstision FF Cambio de pigina ETB Fin del bloque de transmisién NAK Acuse negaivo de resist SMM Comienzo de mensaje normal FS. Separador de archivos SOS Co mienzode significado HT Tahulacién horizontal IGS Separador de grupo de intercambio UC Mayisculas de registro de intercambio HWS. ‘Separador de unidad de imercambio Figura 2.14 El cédigo alfanumérico EBCDIC, representado con valores hexadecimates. (54 _ PRINCIPIOS DE AROUITECTURA DE COMPUTADORAS ‘0000 NUL [0020 SP [0040 @ [0060 ~ [O80 Crt [OOAO NBS[O0cO X O0RO a 001 oH] 0021 1 | oat A }o0sL a fons) Ci food) ; | O0CI A JOORI 4 0002 STX |0022 "| 942 B | 0062 b | 0082 Cul | OGAZ ¢ |90CZ2 A |QOE2 & 0003 ETx|0023 # [0013 C |o062 ¢ | 0083 Giri /00a3 £ ]00C3 A |OOES & 004 EOT]002s s [oo D Joos: a joss Cui ooas a }oocs A fooBt 6 Dons ENG] 002s % /O04 E [0065 ¢ /otes cin] ooas y foocs A fooas a 0006 ACk|0026 & |0046 F |0066 ¥ | 0086 Cri ]ooas | }oocs & |O0ES = Goor Bet. Jaonr {0:7 G [0057 g [a7 cui Joon? § fooc7 g /ane7 ¢ og Bs |oo2s ¢ {oo H Joos: fh | 008s Cri ooas ~ loocs £ |oves @ 009 7 }6029-) /0049 1 [0069 i | 0089 Cin fooAS © | ooce & | 00H « OOOALF [002A * /OO4A J | O06A j | 008A Cis] | OGAA + | OOCA B | QOEA & coos vt |oo2B + |ooae K |O06B k | 0088 Cul }O0AB « |00CB E | OOEB & goo FE joc * Joo & fonsc 1 Joosc Get fooac + /oxce 1 | onEc coop cr 0020 - ood x foosd m foosD Cui |ooAD = | oocD { | o0eD i OVE SO [O02 . [OOK N /O06E n OO8E Cul [OQAE @ | ONCE i | OORE i OOF Si foo2F —¢ onde © [oo6F o | 00RF Cut |ocAF ~ | oOCF 7 |ooEF i a1 DLE}0030 o | 0050 P |o070 p | 0090 Cui |ooBO * | ooD0 D | OOFD ¢ art DCi }o031 a }o0s1 Q jor! q | 009 Cut }coph + |oop) NX | oF & oo12 DCz} 0032 2 |o0s2 RK [0072 +r | 0092 Cri ]ooB2 » |o0D2 d | 0oR o 0013 DC3 [0033 3 |0053 S [0073 s | 0093 Cui ]o0B3 > |00D3 O | 00F] 6 oo14 DC4 [0034 4 | 0054 T | 0074 ¢ | 0094 Cul ]ouBa * |ooDs 6 | GOFe & OOIS NAK}0035 5 0055 U {0075 u | 0095 Cit ]0oBS w |o0DS 6 | 00Rs o 0016 SYN |0036 6 | 0056 Vv |0076 v | 0096 Cui |o0ns 9 |ooDe 6 |OOFS 6 oor7 Ere }0037 7 |o0s7 w }oo77 w [0097 Cut }oo7 ° |oop7 x | oor? + Goi CAN}0038 8 |0058 X 0078 x | G09 Cri jOORR , | O0D8 @ | OOF8 o 0019 EM [0039 9 | 0059 Y |0079 y | 0092 Cui |o0B2 * ooD9 U | OOFe a OO1A SUB]003A : | 005A Z [007A z | 009A Cit |OORA 2 [OODA U | OOFA 6 OLB ESC [0038 }O0sB | |OO7B { | 0098 Ci /OOBB » /ooDB C | OOFR o OIC FS J003C < Jousc \ Joa7c | | o09C Cul | OBC 14 |oODE C | WFC & 001DGS }003D = |00sD | 007 } | GoD Cui | o9BD 172 joopD ¥ | OORD b corr RS /9035 > }onse * Joo7e ~ | O09E Cui |ooBE 34 |onDE ¥ |OOFE p corr us _|003F_? | 00sF__ | 007F DEL | O09F Cul | OOBF_, [OODF_g | Gorey NUL Nu ‘SOH Comtienzo de eneahezado Cancelacién ‘SP Espacio STK Sttof text EOT Finde taosmisin Finale medio ico DEL Borar ETX Endofien DCI Com de dispositive L Swsiucién tl Control ENQ Enquiy C2 Contol de dispositive 2 Escape FF Combio de nigina ACK Acwederenbo DCI. Control de dispositive 3 Separator de eampes CR Retarw a comienze de nea BEL Compania DC# Com! de dispositive 4 Sepereder de grupos SO Shiftout BS Rewoceso INAK Acusexegativo de recibo Scparmor de regicies St Shiftin HT Tabulacién harzonts NBS. Espacio sie inzerupeién LF Cambiodelinea ETB. Fin det bloque de wansmis Sepicador de unidades DLIE Said dl vineul de datos Sinercnismo (inactive) VT Tabulacién venical Figura 2.15 * Los primeros 256 cédigos de Unicode, con sus representaciones hexadecimates. La norma Unicode utiliza un conjunto de caracteres de 16 bits, en el que hay correspon- dencia biunivoca entre tos caracteres representados y las palabras de 16 bits. Si bien Us code soporta muchos mas caracteres que ASCII o EBCDIC, no es 1a norma de mayor im- portancia, En efecto, Ia norma Unicode de 16 bits es un subconjunto del Conjunto Universal de Caracteres ISO 10646, de 32 bits de palabra (UCS-4), Los cédigos correspondientes a los 256 primeros caracteres Unicode se muestran en Ia figura 2.15, de acuerdo con la versi6n Unicode 2.1, Nétese que los primeros 128 carac- teres coinciden con los del ASCII. CAPITULO 2 » REPRESENTACION DE LA INFORMACKN 5S Toda la informacién que se maneja dentro de una computadora se representa en términos de 18 que pueden organizarse e interpretarse como enteros, nimeros de punto fijo, niimeros de punto flotante o caracteres. Los cédigos altanuméricos, tales como ASCII, EBCDIC y Unico- de, tienen dimensiones finitas y, por ende, pueden ser representados integramente con un ni- mero finito de bits. El nimero de bits que se utiliza para la representacién de cantidades tam- es finito, y como resultado de esta limitacién solo puede representarse un subconjunto de la totalidad de los nimeros reales. Esto conduce a las naciones de rango, precisiGn y error. El rango de una representacién numérica define los valores maximo y minimo que pueden repre- senlarse, y queda casi enteramente determinado por ta base y fa cantidad de bits que se utili zan en él exponente de una representacién de punto flotante. La precisién queda determinada por la cantidad de bits usados en la representacidn de la magnilud, excluyendo los bits corres- Rondientes al exponents en las representaciones de punto flotante. Las representaciones en for- mato de punto flotante generan errores derivados de la existencia de nimeros que caen dentro ite Ios intervalos existentes entre nimeros consecutivos que pueden ser representados. Para lectura posterior D.E. Knuth ofrece un tratamiento completo de los temas de algoritmas y célculo en computadoras, V.0, Hamacher y otros provee una buena explicacién acerca del tema de los errores en las represen- taciones de punto flotante. La norma de representacién de punto flotante IEEE 754 se describe en IEEE Computer. Los andlisis acerca de rangos, errores y precisin, presentados en la seccién 2.3, tuvieron la influencia de G. E. Forsythe. El informe GAO contiene un resumen muy legible del proble- mma de software que provoct la falla del Patriot en Dhahran. Véase http-/www.unicode.org para ob- tener informacién sobre la norma Unicode. Forsythe, G. €, “Pitfalls in Computation, or Why a Math Book Isn't Enough”, en: The American Mathematical Monthly, vol. 77, n® 9, noviembre de +970, p.p. 931-955. Hamacher, V. C., Z. 6. Vranesic y §. G. Zaky, Computer Organization, 3° ed., McGraw Hill, 1990. JEEE, “IEEE Standard for Binary Floating Point Arithmetic”, ANSI/EEE Standard 754-1985, en: /EEE Computer, vol. 14, marzo de 1981, p.p. 51-62, aparece una edici6n preliminar. Knuth, D. E., The Art of Computer Programming, vol. 2, Semi-numerical algorithms, 2 ed, Addison- ‘Wesley-Longman, 1981. Informe de la U.S. General Accounting Office GAOJIMTEC-92-26, “Patriot Missile Defense: Softwa- re Problem Led to System Fallure in Dhahran, Saudi Arabia”, U. S. General Accounting Otfice, P.O. Box 6015, Gaithersburg, Maryland, 20877, febrero de 1982. ‘56_PRINCIPIOS OF AROWITECTURA OE GOMPUTADORAS Problemas 2.4 Dada una representaciOn de punto fio, signada, en el sistema decimal, con tres digitos ata de- Techa y tres digitos a la izquierda de fa coma decimal, se pregunta: a. eGual es el rango? (Deberdn calcularse el maximo nimero positivo y el minima ndmero ne- gativo.) b. {Cual 8s la precisién? (Calcuilese la diferencia entre dos nimeros consecutivos sobre la rec- ‘ta numérica. Recuérdese que el error as la mitad de la precision.) 2.2 Convertir los ntimeros expresados a los sistemas de aumeracién indicados, utlizando en tos resultados la menor cantidad de digitos. a. (47),q a binario sin signo. b. (-27),9 binario, magnitud y signo, ©. (213), a decimal. 4. (10110,101), a decimal. ©. (34,625),,a base 4. 2.3 Convertir los nlimeros expresados, alos sistemas de numeracién indicados, utilzando en los resultados la menor cantidad de digitas. a. (011011), 4 decimal. b. (-27),9 a binario exceso 32 ¢. (011011), a hexadecimal. 4. (55,875) a binario sin signo. 8. (132,2), a hexadecimal 2.4 Convertir al sistema decimal el nimero (0,201),. 2.5 Convertir (43,3}, al sistema octal, usando no més de un digito octal a ta derecha de la coma ‘traccionaria. Expresar el resultado en una representation octal no signada y truncar los restos por medio de la eliminacién de los digitos sobrantes, 2.6 Representar (17,5),, en el sistema de base 3; convertir el resultada obtenido nuevamente al sistema decimal. En la expresi6n del sistema de base 3 daberan usarse dos digitos a la dere- cha de la coma fraccionaria. 2.7 Expresar el equivalente decimal del nimero binario 1000, considerando que esta representa do en formato de complemento a dos. 2.8 Expresar el equivalente decimal del niimero binario 1111, considerando que esta representa- do en formato de complemento a uno. 2.9 Utillzando tres digitos BCD, representar et nimero (305),9, 2.10 Utilizando tres digitos BCD, representar el numero (-305),, expresado en notacién de comple- mento a 10. 2.11 Para un némero dado de bits, indicar si ta cantidad de enteros representables en las codifica- ciones de complemento a uno y complemento a dos son iguales 0 no. 2.12 Completar la tabla siguiente para las representaciones indicadas, en formato de cinco bits {in- cluyendo signo). Expresar las respuestas como niimeros enteros decimates signados. Magnitudy signo, 5 bils | Fxceso 16, cinco bits Valor maximo Valor rinimo (menos negativo Cantidad de representaciones 2.13 Comptetar la tabla siguiente utiizando notacién cientifica en el sistema binario y una represen- tacién de punto flotante de ocho bits, en la que se incluyen un exponente de tres bits expresa- do en exceso 3 (no exces 4) y una mantisa normalizada de cuatro bits con un bit implicito. En esta reprasentaci6n, el bit implicito esta ubicado a la izquierda de la coma fraccionaria. Esto significa que el niimero 1,0101 estd normalizado, en tanto que 0,101 no lo esta. Notaci6n cientifica, sistema binario Representacin punto flotante Signo Exponente Mantisa -1,0101 x2? #11 x22 0 oo 0000 1 110 it 2.14 La norma de representacién de punto flotante IBM utiliza base 16, un bit de signo, un exponen- te de siete bits expresado en exceso 64 y una mantisa normalizada de 24 bits. a. 4Oué niimero representa la siguiente combinacién binaria? 10111111 01410000 00000000 00000000 Expresar la respuesta en el sistema de numeraci6n decimal. . Representar en la norma mencionada el nimero (14,3). 2.45 Para una representacién de punto flotante normatizada, si se mantienen todos fos elementos sin moditicar, excepto por: a. La disminucion de la base, se produciré aumento/disminuciér/ningdn cambio en la canti- dad de ndmeros que pudieran representarse, ‘58_PRINCIPIOS DE ARQUITECTURA DE CoPUTADORAS b. EF incremento de la cantidad de digitas significativos, se producird aumento/disminucién/ aingin cambio en el numero positivo mAs chico que pudiese representarse. ¢. El incremento de la cantidad de bits en el exponente, se producira aumento/disminucion/ hingdn cambio en el rango de representacién. 4. El cambio de la representaci6n del exponente a complemento a dos (en vez de exceso 64), ‘se producird aumento/disminucién/ningiin cambio en el rango. 2.16 Utilizando una representacién de punto flotante con un bit de signo en la posicién izquierda del niimero, seguido por un exponente de dos bits en convencién de complemento a dos, y segui- do a su vez por una mantisa normalizada expresada en binario, considerando que no hay bit impicito y que ef cero se representa como 000000: a, 2Cudl es el numero decimal representado por la expresién 100100? b, Si se modifica la base a 4 mientras se mantienen todos los demés elementos constantes, qué ocurre con et minima valor que puede representarse? . ¢Cudl es el intervalo minimo entre numeros consecutivos? 4. 2Cual es el intervalo maximo entre ndmeros consecutivos? . Habiendo un total de seis bits en esta representacién, hay un total de 64 combinaclones bi- narias diferentes. ¢Cudntas de ellas son vélidas? 2.17 Representar el niimero (107,15), en un formato de punto flotante que ofrazca un bit de signo, un exponente de siete bits en exceso 64 y una mantisa normalizada binaria de 24 bits, sin bit implicito. Truncar ta fraccion eliminando los bits que fuesen innecesarios. 2.18 Para los valores siguientes, expresados en la norma de punto flotante IFEE 754 de simple preci- Sin, expresar los valores numéricos en la forma de mantisa binaria y exponente (aj: 1,11 x 25). a. 0 10000011 0110000 co000000 0000000 . 1 10000009 000000 aooco000 aovo0000 c. 1 00000000 0000000 00000000 aov00000 4. 111111111 0900000 00000000 ovo00000 e,011111111 1101000 00000000 oo0c000 #. 9.00000001 1001000 00000000 00000000 9.0.00000011 0110100 coon0000 covod000 2.19 Indicar los formatos binarias correspondientes a la norma de punto flotante IEEE 754 para los numeros siguientes. a, 41,1014 x 25 (simple precision}. b. 40 (simpte precisién). ¢. -4,00111 x 2° (doble precision). 4.- NaN {simple precision). CAPITULO 2 + AEPRESENTACION DE LA WwFoRMACION 59 2.20 Uilizando el formato de punto flotante IEEE 754 de simple precisiGn, indicar el valor (no el pa~ trGn binario) correspondiente a: a. EI maximo niimero positivo representable (infnito no es un numero). b, EI minimo nimero positiva no nulo normalizado. ¢, EI minimo nimero positive denormalizado. 4, El minimo intervalo normalizado, . El maxima intervalo normalizado. +. La cantidad de nimeras normalizads representables (incluyendo el cero: ni el infinito ni el NaN son niimeros). 2.2 Dos programadores escriben generadores de niimeros al azar para ntimeros normalizados de punto flatante, usando el mismo método. El programador A utiliza un generador que crea nit- meros aleatorios en el intervalo cerrado 0..0,6, y el programador B utiliza uno que crea dichos uimeros en el intervato cerrado 0,5..1. El generador del programador B funciona correctamen- te, en tanto que el generador del programador A produce una distribucién de numeros irregu- lar. 2Cudl puede ser el problema en el planteo del programador A? 2.22 La representacién con un bit 1 implicito na funciona en el sistema hexadecimal. gPor qué? 2.23 Con una representaci6n que utiliza un bit implicito, puede representarse el valor O si todas las combinaciones de bits tanto en el campo de a mantisa como en el del exponente se usan pa- ra niimeros no nulos? 2.24 Dado un niimero en representacién de punto totante expresado en el sistema decimal (por ¢).: 0,583 x 10°), ase puede convertir el numero a una forma equivalente en el sistema binarlo uti- lizando como método la conversion de la mantisa y del exponente a binario en forma separada? Capitulo 3 Aritmética 3.1 Introduccion El desarrollo del capitulo anterior permitié explorar algunas de las formas en que puede realizarse la representaci6n de nimeros dentro de una computadora digital, aun cuando el tema de las operaciones aritméticas que pueden ejecutarse sobre dichos nimeros ape- nas fue tratado, Este capitulo analiza las cuatro operaciones bisicas: suma, resta, produc- toy cociente, Comienza describiendo las formas de operacién sobre ntimeros de forma- to de punto fijo y continiia con la descripcién de los métodos que permiten la realizacién de operaciones con mimeros representados en formato de punto flotante. Algunos de los problemas mas importantes, como los célculos climéticos o | laciones de mecdnica cudintica, entre otros, ponen a prueba la capacidad de las computa- doras existentes hoy en dia, aun cuando se trate de las mas grandes y poderosas. Por tal raz6n resulta tan importante el tema del calculo aritmético de alto rendimiento. El capi- tulo se completa con Ia introduccién de algunos de los algoritmos y técnicas utilizados para acelerar el proceso de eflculo aritmético, imu- 3.2 Suma y resta en punto fijo La suma de nimeros binarios y el concepto de desborde (overflow) fueron tratados bre~ vemente en el capitulo 2, En este capitulo se tratan en detalle 1a suma y la resta de mime- 10s de punto fijo, tanto signados como sin signo. Dado que la representaciGn de enteros en complemento a dos es practicamente universal en las actuales computadoras, e! enfo- que se orientar4 principalmente a Jas operaciones en complemento a dos. Se analizarén brevemente las operaciones con niimeros representados en complemento a uno y en BCD, que tienen gran significado en otras éreas de la computacién tales como ta opera- cién en redes (en el caso de sumas en complemento a uno) y en calculadoras portitiles (en et caso de las operaciones en BCD). (B2_pruncipigs OF ARKUITECTURA GE COMPUTAIORAS 3.2.1 Suma y resta en la representacién de complemento a dos En esta seccién se analizard la operacién de suma de ntimeros signados representados en complemento a dos. Durante el andlisis de la operacién de suma de nimeros signados, la Festa de estos quedard implicitamente incluida, como resultado del principio aritmético segtin e] cual: a-b=at(-b) Et correspondiente negativo de un némero se puede obtener por medio de su complemen- to; por consiguiente, se puede realizar una resta por medio de la suma del niimero com- plementado. Como consecuencia, se logra un ahorro en Ia estructura circuital de la uni- dad de céleulo, dado que se evita la necesidad de un elemento restador por hardware. Este punto se desarroltard en detalle en secciones posteriores. 0 Resta 0 1 de nimends um ‘oon 010 2 on 3 3 Soma 100 1 de némeros Figura 3.1 * Representaci6n circular de los nimeros de tres bits en representacion. ‘dg complemento a dos. Lo que si habra que hacer cuando se sumen nimeros en represemtacién de complemento a dos es modificar la interpretacién de los resultados de la suma. Para entender la raz6n de esta afirmacién, puede considerarse la figura 3.1. Cuando se realizan sumas sobre Ia recta numérica, los nimeros a sumar pueden ser tan grandes 0 tan pequefios como se de- see; la recta numérica Hega hasta 40, por lo que la recta numérica real puede acomodar niimeros de cualquier tamafio. Por otra parte, tal como fuera anatizado en el capitulo 2, las computadoras representan la informacién utilizando un nidmero finito de bits, por lo que solo pueden almacenar valores numéricos dentro de un rango determinado. Por ejem- plo, si se analiza la tabla 2.1 se observa que si se restringe el tamafio de un nimero a, por ejemplo, tres bits, habrd solo ocho posibles combinaciones binarias para representarlo. En la figura 3.1 estos valores se ubican sobre una circunferencia, empezando desde el 000 y avanzando, a Io largo de la misma, hasta llegar a 111 y retornar a 000. La figura muestra también los valores decimates de los mismos niimeros. Al experimentar con Ia circunferencia se observa que los niimeros pueden sumarse 0 restarse recotriendo la circunferencia en el sentido horario para sumar y en el sentido an- capituo 3+ anmuénca 63 tihorario para restar. También puede restarse por medio de ta complementacién del sus- traendo y posterior suma. Nétese que la situaci6n de desborde solo puede producirse en ‘una suma en la que ambos operandos tienen el mismo signo. Més atin, el desborde se pro~ duce cuando ocurre una transicién desde +3 a -4 mientras se recorre la circunferencia du- rante una suma, o desde -4 a +3 durante una resta. (El concepto de desborde en las ope~ raciones de complemento a dos se analiza detalladamente en secciones posteriores del presente capitulo.) A continuaciéa se plantean dos ejemplos de suma de dos niimeros de ocho bits repre+ sentados en notacién de complemento a dos. En el primero de los dos se plantea la suma de dos niimeros positivos: 00001010 (419) + OOOTOIII (423),0, 00100001 (339 Dos ntimeros de signos opuestos se pueden sumar en forma simitar: 00000101 5g + 11E11110 Cp Arrastre a descartar a) 00000011 Do En las operaciones de suma de niimeros representados en complemento a dos se debe descartar e] arrastre producido por la suma en la posicién més significativa (el bit a la iz- quierda). Ocurre una situacién similar cuando se genera un arrastre a partir de la suma de. dos némeros negatives: Wanita Dy + 11111100 (jo Arrastre a descartar CD TI11OTI — C3)q El bit de arrastre que se produce a la izquierda de Ia posicién més significativa debe des- cartarse debido a que el sistema numérico es modular, es decir, se cierra desde el maxi- mo mimero positive sobre el menor niimero negativo, tal como to muestra la figura 3.1,* Si bien la operacién de suma puede generar un bit de arrastre desde el bit mas signi cativo del resultado, el descarte del mismo no significa que el resultado sea erréneo. La * de T: Una ustiticacién mas rigurosa de! motivo por el cual se descarta el bit de arrastre puede encontrar se en a definicién del complemento y su apicaciéa aa resta de nimeros enleras. (64. PRINCIPIOS NE ARQUITECTURA DE COMPUTADORAS. secci6n siguiente analiza en mayor detalle ef problema del desborde en la suma de nime- ros representados en notacién de complemento a dos. Desborde Cuando se suman dos nuimeros de igual signo, se producira deshorde si el resultado es demasiado grande como para poder ser representado con la cantidad de bits utilizadas pa- a representar los operandos. Considérese como ejemplo la suma de los ntimeros (+80), ¥ (+50),o, expresados ambos en ocho bits. El resultado deberfa ser (+130),o, aunque de la operacién representada a continuacién se observa que el resultado obtenido es (-126),,! 01010000 (+80), + DOT10010 — (450), 10000010 126),y Este resultado no deberia sorprender, dado que se sabe que el miximo nimero positivo que puede representarse en la notacién de complemento a dos es (+127),5 ¥ que, por lo tanto, es imposible representar (+130),., Si bien el resultado 1000 0010 “se parece” a (130),9 si se lo analiza como un nimero sin signo, al trabajar en forma signada el primer bit, de signo, indica un nimero negativo, lo que resulta claramente erréneo. Cuando se suman dos nuimeros de signo opuesto no puede ocurrir desborde. Esto se deduce intuitivamente debido a que en una resta la magnitud del resultado no puede su- perar la magnitud del operando més grande, Esto conduce a la definicién de desborde en Ja representacién de ntimeros mediante et comptemento a dos: Si tos mimeros que se suman tienen el mismo signo y el resultado tiene el signo opuesto, se hat producido desborde, por 1o que el resultado es incorrecto. Si los ndmeros que se suman son de signos opuestos. no existe la posibilidad de desborde. Como método alternative para detectar un desborde en la suma, hay que saber que se produce si y solo si el arrastre que se ingresa ha- cia el bit de signo difiere del bit de arrastre que sale desde dicho bit. Si se resta un mimero positivo de un nimero negative y el resultado es positivo, o se resta un iimero negativo de un mimero positive y el resultado es negativo, se produjo desborde. Si tos intimeros que se restan son del mismo signo, no se puede producir desborde. 3.2.2 Implementacion circuital de sumadores y restadores. Hasta ahora et foco de atencién estuvo puesto sobre los algoritmos para la suma y la testa. A continuacién se analizan las implementaciones de sumadores y restadores simples. capiTuLo 3° ARITMENICA 65 Sumadores y restadores en serie El disefio de un sumador serie (ripple carry adder) para dos muimeros de cuatro bits se analiza en el apéndice A. El circuito sumador sigue el modelo utilizado normalmente pa- ra la suma decimal, en el que se suman los digitos de cada columna, en forma consecuti- va una tras otra, de derecha a izquierda. En esta secci6n se pretende revisar e! sumador serie y luego analizar un restador serie (ripple borrow subtractor), combinando final- mente ambos circuitos para obtener una Gnica unidad de summa y resta. yay ats byt tty Le) Wey Lhe Lee |Sumador} | |Sumador| | |Sumador] | |Sumador| lcomptetol | [completo] } comptetol | compl AP SPST 8 3 st 50 Figura 3.2 » Sumador serie para dos nimeros de cuatro bi La figura 3.2 muestra el circuito del sumador serie de cuatro bits desarrollado en el apén- © A. Los dos niimeros binarios A y B se suman de derecha a izquierda, generando un bit de suma y uno de arrastre en cada columna binaria. En la figura 3.3 se han conectado en cascada cuatro sumadores binaios serie para permi« tirla suma de dos némeros de 16 bits. El sumador completo de la derecha tiene su entrada de arrastre en 0. Si bien este andlisis podria haber simplificado el circuito de tal sumador, se pre- fiere usar Ia forma més general y forzar ¢, a 0 para simplificar el posterior proceso de resta. a5 Me a3 2 Wy ay ay a bas| i i i reeeleh Wh cig] Suma debits le el Samad is le» Wil Figura 2.3 © Un sumador de 16 bits obtenido a partir de cuatro sumadores serie de cuatro bits cada uno. La resta de nimeros binarios se resvelve en una forma similar la de la suma, La resta en- tre dos ntimeros puede realizarse trabajando de a una columna por vez, restando de dere- cha a izquierda los digitos del sustraendo b, de los respectivos digitos del minuendo ai. G66 _pamvcipias DE ARQUITECTURA DE COMPUTADORAS Tal como en la resta decimal, si el susteaendo es mayor que el minuendo o hay un arras- we (borrow) desde un digito previo, se deberd propagar dicho arrastre hacia el bit més significativo siguiente. La figura 3.4 ilustra la tabla de verdad y un diagrama en bloque del circuito restador, p, ana Resa, Arms a (een ba ooo fo o ama oo ifr 4 or ofr 4 estan ori. oO 1 jeomplet 1a o]f1 6 1oO oT oO oO Arasite; ¢ p ‘a 110 fo oo Reve, ee ee (a~b) Figura 3.4 Tabta de verdad y simbolo esquemético para un restador serie de un bit. Los circuitos restadores de dos niimeros de un bit pueden conectarse en cascada para crear un circuito restador serie, de la misma manera en que se conectan en serie los su- madores completos de aumeros de un bit para formar un sumador serie. La figura 3.5 ilustra un circuito restador serie de cuatro bits formada por cuatro restadores completos. de un bit. by as byay bay yay Arrastreg Wey Wen VW ° Restador| | |Restwaior] | jresaor] | | Restador Jcompteio] | Jeompteo} | foompleia) | |eompteso sa JU] Uy Resta Resiay Resta, Restag Figura 3.5 « Restador serie Tal como se analizara previamente, un método alternativo para la implementacién de la resta consiste en determinar el complemento a dos del sustraendo y sumarlo al valor del minuendo. El circuito de la figura 3.6 resuelve tanto la operacién de suma como la de res- ta sobre dos niimeros de cuatro bits, para to cual requiere que las entradas ®, puedan com- plementarse cuando se desea realizar una resta. Una linea de control SUMAR/RESTAR determina cul es la operacién a realizar. La barra por encima del simbolo SUMAR indi- ‘ca que Ia operacién de suma se activa cuando la sefal estd en su nivel bajo. Esto es, si la Minea de control esté en su estado 0, las entradas a, y b se transfieren al sumador, el que genera la suma s;en sus salidas. Si la linea de control esté en 1, las entradas ay se transfie~ caphruio 3 + anmuénea 67 ren al sumador, pero las entradas b, se complementan a uno en las compuertas XOR an- tes de su ingreso al sumador. Para formar el complemento a dos, se debe sumar ! al com- plemento a 1, 1o que se logra colocando la linea de arvastze de entrada ¢, en 1 por medio de la entrada de control. De esta manera, 1a electronica del sumador se comparte entre el sumador y el restador. by b a by SUMAR Lo LD] estar Isumador} | |Sumator] | Sumador| | |Sumador jeomplero] | Jeompletof | completo] | Jcompleto] 4 | | | | 5 3 aa Ey Figura 3.6 « Circuito sumador-restador. 3.2.3 Suma y resta en representacién de complemento a uno Si bien la representacién de complemento a uno actualmente no se utiliza demasiado en los sistemas de cmputo, fue muy usada en las primeras computadoras. La suma en com- plemento a uno se maneja en forma un poco diferente a ta suma en Ia representacién de complemento a dos: el bit de arrastre que se genera a partir de la posicién més significa- tiva no se descarta sino que se vuelve a sumar con la posicién menos significativa del re- sultado obtenido, tal como lo mucstra la figura 3.7. Esta operaciGn suele conocerse como arrastre circular final. Para entender mejor la causa por fa cual se necesita reutilizar ef arrastre, puede exa- minarse la circunferencia mediante la que se representan los ndimeros de complemento a uno, [a que se muestra en la figura 3.8, Nétese que la cireunferencia ofrece dos represen- taciones para el 0, Cuando se suman dos rtimeros, al atravesar tanto una como otra repre- sentacién del cero, debe compensarse el hecho de que el 0 se recorre dos veces. El agre- gado del bit de arrastre a la columna de las unidades desplaza en uno el resultado final para salvar esta situacién. Debe notarse aqui que la distancia entre 0 y-0 es la distancia entre dos enteros y no la distancia entre dos néimeros representables consecutivos. Como aclaracién de este punto, considérese la suma de (+5,5),9 Con (-1,0),9, representados ambos en la notacién de com- plemento a uno, segin la figura 3.9. (Cabe aclarar que este problema podria tratarse tam- 10011 C12, HO1101 (130 100000 + Correcciéa del resultado + t 00001 Go Figura 3.7 * Ejemplo de la suma en complemento a uno con reutilizacién del arrastre genesado, 2 kaa 4 oo 1 a or 10 010 2 01 on 2 100 3 sumade 5 rximeres Figa * Circunferencia representativa de los nmecos en notacién de complemento a uno. bién como una resta, en la cual se complementa el sustraendo, por inversién de todos sus bits, antes de sumarlo al minuendo). Para poder sumar (+5,5),9 y (-1,0)j, ¥ obtener el resul- tado correcto en la representacin de complemento a uno, se suma a la posicién de las uni- dades el arrastre generado por la suma realizada, segin se muestra. Esto complica la repre- sentaci6n circular de los nimeros, dado que en el intervalo entre +0 y -O existen nimeros vélidos que representan fracciones negativas, pero que aparecen en la circunferencia antes de que aparezca la representacién del nimero -0, Si se reordena la circunferencia de modo de salvar esta anomalta, habré que tratar la suma en una forma mas complicada, La aparici6n de dos representaciones diferentes para el cero y la necesidad potencial de realizar otra suma para agregar el bit de arrastre son dos razones importantes para que los di- sefiadores prefieran la aritmética de complemento a dos antes que la de complement a uno. 0101.1 G55ho + 1110,0 (L049 10011, +Leiio 0100,1 4540 Figura 3.9 ¢ La suma del bit de arrastre carnplica la operaci6n de suma para nUmeros no enteros. 3.3 Producto y cociente en punto fijo La multiplicaci6n y la division de nimeros representados en punto fijo pueden resolver- se mediante operaciones mas sencillas de suma, resta y desplazamiento. Las secciones que siguen describen métodos para realizar las operaciones de producto y cociente de ni- meros en representacién de punto fijo, tanto signados como no signados, utilizando las operaciones basicas mencionadas. Se analizardn primeramente las operaciones para ni- meros no signados y, luego, las operaciones para ndimeros signados. 3.3.1 Multiplicacion de nimeros sin signa La multiplicacién de nimeros binarios enteros sin signo se realiza en la misma forma en que se la realiza manualmente para los niimeros decimales. La figura 3.10 ilustra el pro- cedimiento para multiplicar dos enteros binarios sin signo. Cada bit del multiplicador de- termina si el multiplicando, desplazado a Ia izquierda de acuerdo con ta posicién del bit del muttiplicador, se suma o no ai producto, Cuando se multiplican dos nimeros sin sig- no de 7 bits, e] resultado puede estar formado por hasta 2n bits. Para el ejemplo de la fi- gura 3.10, el producto de dos operandos de cuatro bits cada uno da por resultado un va- Jor de ocho bits. Cuando se multiplican dos némeros signados de 7 bits, el resultado solo puede estar formado por 2(n— 1) + 1 = (2n~ 1) bits, siendo este valor el equivalente a realizar el producto de dos niimeros sin signo de (n — 1) bits cada uno y agregar luego el bit de signo. 1.101 (13)— Multiplicando M X1LOL1 (the Multiplicador Q rol oui! Productos pales tio 10001111 (143)9 Producto P Figura 3.10 © Mutipicacién de dos nimeras enteres binarios sin sign, La implementacién circuital del producto de enteros puede adoptar una forma similar a la que se utiliza en el método manual. Lu figura 3.11 ilustra el circuito de una unidad multiplicadora para nimeros de cuatro bits, la que contiene un sumador de cuatro bits, una unidad de control, tres registros de cuatro bits y un registro de un bit para el arras- ire, Para realizar el producto de dos niimeros, €! multiplicando se coloca en el registro M, el multiplicador en el registro Q, en tanto que los registros A y C se colocan en cero. Durante Ia operacién, el bit de la derecha del multiplicador determina, en cada paso, si el multiplicando debe sumarse o no al producto parcial. Luego de sumar el multiplican- doal producto, el multiplicador y el registro A se desplazan simulténeamente a derecha. Esto produce el efecto de desplazar €] multiplicando a la izquierda (tal como se realiza 70 _PAINCIPIOS DE AROUITECTURA OE COMPUTADORAS: en el procedimiento manual) y, a la vez, de colocar el siguiente bit del multiplicador en ‘Muttipticando (M) Tégica de contrel para sume y Multiplicador (Q) Regisiro A Figura 3.11 » £1 multiplicador serie La figura 3.12 muestra el proceso de multiplicacién. Al comenzar, C y A se limpian, en tanto que M y Q contienen, respectivamente, al multiplicando y al multiplicador. El bit menos significative de Q es 1, y, por consiguiente, el multiplicador M se suma con el pro- ducto contenido en el registro A, La palabra formada por los contenidos de los registros Ay Qtomados como un conjunto constituye el producto de ocho bits, siendo el registro Acel que recibe la suma de! multiplicando. Luego de sumar M con A, los registros A y Q se desplazan a derecha. Dado que los registros A y Q se vinculan como un par para con- tener el producto de ocho bits, el bit menos significativo de A se desplaza hacia la posi- ciGn més significativa de Q. El bit menos significativo de Q se descarta, C se desplaza ha- cia la posici6n mis significativa de A y se ingresa un 0 en C. El proceso contintia durante tantos pasos como bits tenga et multiplicader. En la segunda iteracién, el bit menos significativo de Q vuelve a ser 1, por lo que el multi- plicando se suma con A, desplazdndose la combinacién de los registros C, A y Q ha- cia la derecha. En Ia tercera iteraci6n, el bit menos significativo de Q es 0, por lo que M no se suma con A, pero si se produce el desplazamiento a derecha de los tres regi: tos. Finalmente, en la cuarta iteracién, el bit menos significative de Q vuelve a ser 1, por lo que nuevamente M se suma con A y se desplaza a derecha la combinacién de los tres registros C. A y Q. El producto queda contenido en los registros A y Q, donde el registro A contiene los bits mas significativos, en tanto que Q contiene los bits de menor peso. * N. de T: duntamente con el desplazamiento de los dos registros mencionados, se procede a la carga del bit de arrastre en el registro C. capiroio 3 + anrrsérica 71 ‘Multiplicando (M1): Tx -voeiiistes c Q Q o900 1011 0 1101 1081 — SumarMcona 0 O116 1101 _ Desplazamiento 2 0011 1401 — SumarM con 0 £00) 1110 Dexpluzamiento 0 0100 LLL IT — Desplazamiento sin suma 1 9 Sumar M con A. 00 Dapiamene Resultado (producto) Figura 3.42 * Un ejemplo de producto utiizando el mutiplicador serie. 3.3.2 Division sin signo En la divisién binaria, se debe intentar reiteradamente la resta del dividendo menos el di- visor, usando la menor cantidad de bits posibles en el dividendo. La figura 3.13 ilustra es- te punto mostrando que (11), no cabe en 0 0 en OI, pero sf cabe en 011, como se puede ver desde el patrén binario 001 que inicia el cociente. ont LL 11 0010) 01+ Resto. Figura 3.13 « Ejemplo de dvisi6n binaria. La divisi6n de mimeros enteros binarios en una computadora se puede mangjar en forma similar a la que se utiliza para el producto de enteros binarios, pero con la dificultad de tener que determinar si el dividendo cabe © no en el divisor, cuya tinica solucién es efec- tuar la resta y verificar si el resto es negativo. Si eso ocurre, se debe dar marcha atrs con Ja resta, para lo cual se vuelve a sumar el divisor, como se describe mds adelante, En el algoritmo de divisién, en lugar de desplazar el producto a la derecha tal como se realizara en el caso del producto, se desplaza el cociente a la derecha y se resta en vex. de sumar, Cuando se dividen dos nimeros sin signo formados por 2 bits, el resultado no pue- de tener més que n bits. La figura 3.14 ilustra el circuito de una unidad divisora para mimeros de cuatro bits, la que contiene un sumador de cinco bits, una unidad de control, un registro de cuatro bits para el dividendo Q, y dos registros de cinco bits para el divisor M y para el resto A. Se zan registros de cinco bits para A y M, en lugar de usar registros de 4 bits como po- ‘72_PRINcrPlos DE ARQUITECTURA DE COMPUTANDRAS drfa suponerse, dado que se requiere un bit adicional para indicar el signo de los resulta- dos intermedios. Si bien este método de divisién se usa para nimeros sin signo, se utili- zan restas a Io largo del proceso, por lo que pueden obtenerse resultados negativos. Esto extiende el rango de -16 a +15, to cual, a su vez, plantea la necesidad de 5 bits para el al- Mmacenamiento de los resultados intermedios. Divisor (M) Logica de control urna! | para suma, resta, ‘desplazamieato Desplazamea 5 gaauierce Dividendo (Q) a4] Registro A Figura 3.14 @ Circuito divisor se Para dividir dos ndmeros de cuatro bits, se almacena e! dividendo en el registro Q y el divisor en el registro M, en tanto que el registro A y el bit més significativo de M se car- gan con 0. El bit mas significativo del registro A determina en cada paso si el divisor de- be volver a sumarse al dividendo, Esto se hace necesario para reponer el dividendo cuando, como se ha descripto anteriormente, el resultado de restar el divisor resulta ne- gativo. Se suele hablar de una divisién con reposicién porque, en los casos en que el Testo es negativo, se debe restaurar el dividendo a su valor anterior. Cuando el resultado no es negativo, el bit menos significativo de Q se lleva a | para indicar que el divisor ca- be en el dividendo. En la figura 3.15 se ilustra el proceso de divisi6n. Et registro A y el bit més significa livo de M se llevan a cero, en tanto que Q y los bits menos significativos de M se cargan con el dividendo y con el divisor, respectivamente. Los registros A y Q se desplazan en conjunto a la izquierda y se resta el divisor M de A. Dado que el resultado es negativo, el divisor se vuelve a sumar para reponer el dividendo, y q, se carga con 0. El proceso se re- pite, desplazando A y Q a izquierda y restando M de A. Nuevamente se obtiene un resul- tado negativo, por lo que se vuelve a reponer el dividendo y se coloca un cero en gy. En latercera iteracién, se desplazan a izquierda A y Q, en tanto M se vuelve a restar de A. En este caso, el resultado de ta resta no es negativo, por lo que se coloca un | en gg. El pro- ceso se repite una vex mas, para realizar una iteracién final, en Ja que nuevamente A y Q se desplazan a izquierda y M se resta de A, lo que vuelve a dar un resultado negativo. Se capiruio 3 + anrrménica 73 repone et dividendo y se carga un 0 en qo, El cociente queda contenido en el registro Q, en tanto que el registro A contiene el resto de la divisi6n. Divisor (M) ooo 9.0000 1110 Desplazamicnto a izquicrds DIE OL 1110 Reser A-M TOOOO F110 — Recuperar A (sumar A +M) 00000 b1 10 Limpiarg 20001 2100 Desptazamiento aizquierda rDI110 1100 — RestrA-M TOOL 1100 — Recuperara 00001 1100 — Limpiar gy 00011 10.00 Desplazamiento aizquierds fO9 000 1900 ResarAnM 0000 1961 — Colocargy ent 99001 0010 Desplaramiento a zquienda rOIti0 0010 ResarA-M TOOOL O10 Recuperar A 0001) OOD) Limpiaras Resto Cociente Figura 8.15 © Un ejemplo de divisién que utiliza et divisor serie, 3.3.3 Producto y cociente signados Si se aplican los métodos descriptos en ia seccién anterior al producto y cociente de nii- meros con signo, surgiran algunos problemas. Considérese el producto de -1 por +! uti- Jizando palabras de cuatro bits, como se muestra en el esquema de la izquierda de la gura 3.16. En lugar de obtener el resultado esperado de -1, se obtiene el equivalente a +15. Lo ocurrido se debe a que el bit de signo no se extendi6 hacia la izquierda del resul- tado. Este no es un problema cuando el resultado es positivo, dado que los bits de mayor peso adoptan el valor 0, por lo que el bit de signo se genera correctamente como 0. En el esquema de la derecha de la figura 3.16 se puede observar una solucién, en la cual cada uno de los productos parciales se extiende a todo lo ancho de la palabra resul- tado, reteniéndose solo los bits menos significativos de dicho resultado. Si ambos ope- randos son negativos, se extienden ambos signos, nuevamente reteniendo solo los ocho bits menos significativos del resultado. 74 Pruncipios be ARGUTTECTURA DE COMPUTADORAS. H1it ye LIVI Elo XOOO1 (ly x 2001 Go biat Pididi ta 0000 0000000 0000 o00000 0000 90000 OOOOTIIT Gide PLtTitdd Cho Incorrect, debe dar—1 Figura 3.16 + Producto de mimeros con signo. La divisién signada es mas compleja. No es intenci6n de este texto el desarrollo de los métodos requeridos, pero, como técnica general, la solucién consiste en convertir ambos operandos a su forma positiva, realizar la operacién y luego, como paso final, convertir el resultado a su forma signada correcta, 3.4 Aritmética de punto flotante Las operaciones aritméticas que utilizan ndmeros representados en notacidn de punto flo- tante pueden realizarse mediante las operaciones de punto fijo descriptas en las seccio- nes anteriores, prestando la debida atenci6n a la necesidad de mantener las caracteristi- cas fundamentales de ta representacién de punto flotante. En las secciones si explorardn los procedimientos para la realizaci6n de célculos tanto en el sistema de nu- meracién binario como en el decimal, sin olvidar los requisites propios de Ia representa- cidn de punto flotante. 3.4.1 Suma y resta en formato de punto flatante Las operaciones aritméticas de punto flotante difieren de las de punto fijo en el hecho de que, ademis de considerarse las magnitudes de los operandos, tiene que considerarse también el tratamiento que debe darse a sus exponentes. Como en el caso habitual de las operaciones decimales en notacién cientffica, los exponentes de los operandos deben ser iguales para poder sumar o restar. Se suman o restan las mantisas segtin corresponda, y se completa ta operacién normalizando el resultado. Los procesos de ajuste de la parte fraccionaria y de redondeo det resultado pueden We- var a una pérdida de precisién del resultado. Como ejemplo, considérese la suma sin sig- no de los operands (0,101 x 2°) + (0,111 x 2 en los que las mantisas se representan con tres digitos significativos. Se inicia la operacién haciendo que el menor de los exponen- (es se iguale al mayor de ellos, y se ajusta adecuadamente fa mantisa. Se tendré asf que 0,101 x 2? = 0,010 x 2*, por lo que se pierde en este proceso una precisi6n equivalente a 0,001 x 2? La suma resultante es: cariruo 3+ anmainca 75 (0,010 + 0,111) x 245 1,001 x 24= 0.1001 x 25 y si se vuelve a redondear a tres digitos significativos, se obtiene 0,100 x 2°, lo que im- plica otra pérdida de precisién de 0,001 x 2* en el proceso de redondeo. éPor qué los némeros de punto flotante tienen formatos tan complicados? Puede ser motivo de curiosidad saber la causa de la complejidad de a estructura que se utiliza cuando se representan niimeros en formato de punto flotante. La mantisa se repre- senta en formato de magnitud y signo; el exponente, a su vez, en notacién excedida, y el bit de signo separado del resto de la mantisa por el campo de exponente. La explicacién de esta estructura es relativamente simple. Considérese la complejidad con la que se realizan las operaciones de punto flotante en una computadora. Antes de poder realizar cAlculo alguno, el nimero debe ser desempaquetado a partir del formato utilizado para su almacenamiento. (En el capitulo 2 se analiza el formato de representacién de nimeros en punto flotante descripto en la norma IEEE. 754.) Antes de realizar la operacién, se deben extraer del conjunta de bits la mantisa y el exponente; luego de realizar la operacidn arit- mética, el resultado debe volver a normalizarse y redondearse, y finalmente se deben rea- comodar los bits para satisfacer los formatos requeridos. La ventaja del formato de punto flotante que contiene un bit de signo seguido por un exponente en notacién excedida, sepuido a su vez por la magnitud de la mantisa, es que perinite Ja realizacién de comparaciones entre dos nimeros de punto flotante, por mayor, menor o igual, sin necesidad de desempaquetar los némeros. El bit de signo es lo mas im- portante en tal comparacién, por lo que es razonable que el signo, en el formato de pun- to flotante, se encuentre en e! bit mas significativo. Lo que sigue en importancia, en la comparacién, es el exponente, dado que una variacién de #1 en el exponente modifica el valor en un factor de 2 en el sistema binario, en tanto que un cambio en cualquier bit de Ja mantisa, aun en el mas significativo, modifica el ntimero en un valor menor. aca tener en cuenta el bit de signo, las mantisas signadas se representan como ente- ros y se convierten en su formato de complemento a dos. Una vez realizada la suma ola resta en formato de complemento a dos, puede haber necesidad de normalizar el resulta- do y de ajustar el bit de signo, tras lo cual nuevamente se Heva el resultado al formato de representacin de magnitud y signo. 3.4.2 Producto y cociente en formato de punto flotante El producto y el cociente en el formato de punto flotante se resuelven en forma similar a fa de la suma y la resta en punto flotante, excepto por el hecho de que tanto el signo co- mo el exponente y la mantisa del resultado se pueden calcular por separado. Si los ope- randos ticnen el mismo signo, el signo del resultado es positivo, Signos distintos produ- ‘76_PRINCIPIOS DE AROUITECTURA DE COMPUTADORAS cen un resultado negativo. El exponente del resultado, antes de su normalizacién, se ob- tiene sumando los exponentes de los factores en la mulliplicacién, 0 restando los expo- nentes de dividendo y divisor en la divisién, Las mantisas se multiptican o dividen de acuerdo con la operacién a realizar, tras to cual se normaliza el resultado, Considérese el uso de mantisas de tres bits al calcular el producto binario de los nii- meros (+0,101 x 2%) x (-0,110 x 27). Los signos de los operandos difieren, lo que signifi- ca que el resultado tendrd signo negativo. Para multiplicar se suman los exponentes, por lo que el exponente del resultado ser4 2 + (-3) =-1. Se multiplican las mantisas, de don- de se obtiene el producto 0.01111. La normalizacién del producto y su redondeo a solo tres bits en la mantisa produce como resultado el valor -0,111 x 27. Ahora se considera la divisin de los ndmeros binarios (+0,110 x 25) y (+0,100 x 24), cu- ‘yas mantisas se representan con tres bits. Los signos de los operandos son iguales, por ende, el resultado tiene signo positivo, Para dividir se restan los exponentes, por lo que el expo- nente del resultado es 5-4 = 1. Se dividen luego las mantisas, lo que puede realizarse en dis- tintas formas. Si se tratan las mantisas como enteros no signados, se obtiene 110/100= I con un resto de 10. Lo que se pretende en realidad es un conjunto de bits que representen la mantisa en vez de dos elementos que en forma separada representen cociente y resto. Para lograrlo, se puede escalar el dividendo en dos posiciones a Ia izquierda, con lo que se ob- tiene el resultado 11000/100 = 110. Si el resultado obtenido se vuelve a escalar dos luga- res, ahora a la derecha, para mantener el factor de escala original, se logea 1,1. Sise agru- pan todos los elementos obtenidos, el resultado de dividir (+0,110 x 2°) por (0,100 x 24) es (41,10 x 2, el que, luego de fa normalizacién, se convierte en (+0,110 x 2%). 3.5 Aritmética de alto rendimiento La velocidad con la que se realizan las operaciones aritméticas suele sere] cuello de bo- tella en el rendimiento de una computadora, Muchas supercomputadoras, como la Cray, la Tera y la Intel Hipercubo, se consideran “super” debido a su eficiencia en el célcuto tanto de punto fijo como flotante. En esta seccién, se analizan distintas técnicas para me- jorar la velocidad de las operaciones de suma, resta, producto y cociente. 3.5.1 Suma de alto rendimiento El sumador serie analizado en la seccién 3.2.2 puede introducir retardos importantes en el sistema que lo utilice. El camino més largo dentro del sumador es aquel que va desde las entradas del sumador menos significativo hasta las salidas del sumador més signifi- cativo. El proceso de sumar las entradas correspondientes a cada posici6n binaria es re- lativamente rapido (es suficiente un circuito en I6giea de dos niveles), pero Ia propaga- ci6n del arrastre demora un tiempo largo en recorrer el circuito. En efecto, el tiempo de propagacién es proporcional a la cantidad de bits de los operandos. La consecuencia es capiruia 3 + anmmmenica 77 desafortunada, dado que aumentar ta cantidad de dfgitos significativos en una suma se traduce en un mayor requerimiento de tiempo para realizar la suma. En esta seccién se analiza un método para acelerar 1a propagacién del arrastre, en lo que se conoce como un sumador con arrastre anticipado (carry lookahead adder), En el apéndice B se desarrollan Ins expresiones booleanas reducidas correspondientes, ala suma (x) y el arrastre (¢,,,) de un sumador completo, Se reiteran aqui estas expresio- nes, donde los subindices indican la posicién relativa de cada sumador completo de un biten el sumador seri ret abe,+ abe, + abe, 5 Gaz betac, ab, Si se factorea la segunda ecuacién se obtiene on = ab + (at Be, La que a su vez puede escribirse en la forma Cini = G+ Pe, En la que Gaaby P, Los términos G; y P; se conocen como funciones de generacién y propagacién, respec- tivamente, por el efecto que tienen sobre el arrastre. Cuando G;= I, se genera un arrastre. en la etapa i. Cuando P, = 1, se propaga un arrastre a través de la etapa i siempre que al- guno de los operandos a, 0 4; valgan 1, Los términos G, y P; pueden implementarse con l6gica de Gnico nivel ya que solo dependen, respectivamente, de un producto légico (Y} ‘ode una suma iégica (0) de Jas variables de entrada. Nuevamente, los arrastres requieren el mayor tiempo. La salida de la etapa 0 corres- pondiente al arrastre c, vale Gy+ Py. cq ¥ dado que en la suma c, = 0, esta expresién pue- de escribirse como c, = G,. La salida de la etapa | correspondiente ac, es G+ P,.¢,. ¥ dado que ¢, = Gy esta expresin se escribe también como ¢, = G, + P, . Gy La salida de arrastre c, de la etapa 2 vale c, = G, + P, . cy y dado que c, = G, +P, . Gy, también pue- de escribirse la expresién como ¢, = G, + PG, + P,. P, . Gy, Reiterando este planteo por dltima vez para un sumador de cuatro bits, la salida de arrastre que se obtiene desde la ctapa 3 es c, = G, + P, . cy, por lo que, considerando el valor obtenido para c;, se pue- de escribir esta titima expresi6n como 78_PRWCIPIOS DE ARQUITECTURA DE COMPUTADORAS Gy+ Py. G,+ Py. P,.G,+P).P,.P,. Gy st Py Git Py ' 2° Py. Gy baa, bray yay bye PG; PG MG « % Cs “ cg a semader| [completa | sumadoe Jcompleia Surat compet Sumsdo| completo 4 n 4, fa Figura 3.17 © Sumador con arrasire anticipada, Ahora puede implementarse un sumador de cuatro bits con arrasire anticipado, tal como el de la figura 3.17. Sigue existiendo el retardo entre los sumadores al igual que en el ca so anterior, pero ahora ia cadena de arrastres puede pensarse como un conjunto de partes independientes que requieren el retarde de una compuerta para G, y P,, y dos retardos adi- cionales para generar c,, ,. Por lo tanto, se agrega un retardo equivalente al pagacién de tres compuertas, pero se elimina la cadena de arrastres entre las distintas eta pas. Si se supone que cada sumador completo de un bit introduce un retardo equivalente a dos compuertas, un sumador de cuatro bits con arrastre anticipado tendrd un retardo mé- ximo equivalente a cinco compuentas, en tanto que en el caso de un sumador serie de cua- tro bits el retard maximo seré equivalente al tiempo de propagacién de ocho compuertas. La diferencia entre las dos soluciones se vuelve mds pronunciada cuanto mas grandes son los operandos. Este procedimiento suele estar acotado a alrededor de ocho bits de antici- paci6n, debido a las Jimitaciones en los factores de carga de las compuertas analizadas en el apéndice A. Para sumar niimeros de més de ocho bits, es posible plantear circuitos par- ciales de anticipo de arrastre, los que pueden encadenarse para calcular las entradas y sa- lidas de arrastre de cada una de esas etapas. (Véase el ejemplo de la pagina 86.) 3.5.2 Producto de alto rendimiento Existen varios métodos para acelerar el proceso de In multiplicacién, Dos de estos mé- todos se describen en las secciones siguientes. El primero gana en eficiencia median- te el esquema de saltear bloques de unos, lo que elimina pasos de suma en la opera- capiruio 3 + anmwerica 79 cidn, Luego, se describe un multiplicador paralelo, en el que se forma un producto cruzado de todos los posibles pares de bits del multiplicando y del multiplicador. E] producto final se obtiene cuando se suma por filas el resultado del producto cruzado antes generado, El algoritmo de Booth Et algoritmo de Booth trata a los niimeros positivos o negativos en la misma forma, Su funcionamiento se basa en el hecho de que, cuando en e! multiplicador existen secuen- cias de ceros 0 unos, no se requieren sumas, sino solo desplazamientos. Las sumas o las restas se evan a cabo en los limites de las secuencias, donde se detecten transiciones de 0a lode t a0. Una secuencia de unos en e! multiplicador, ubicada entre las posiciones de pesos 2 a 2° puede considerarse como 2**! — 2". Por ejemplo, si el multiplicador es 001110 (+14), # = 3 y v= 1, por lo que 2*— 2) = 14. En la implementaci6n circuital se analiza e] multiplicador de derecha a izquierda. La primera transicién que se detecta es un cambio de 0a 1, lo que requiere Ia resta del valor inicial (0) menos 2!, En la transicién siguiente, de | a 0, se suma 24, lo que da por resul- tado +14. Se debe considerar que existe un 0 agregado a la derecha del multiplicador con el objeto de definir la situacién en la que aparezca un | como digito menos significative del mismo. Si el multiplicador se codifica de acuerdo con el algoritmo de Booth, el proceso de la multiplicaci6n puede llegar a requerir menos pasos. Considérese el ejemplo de mul- tiplicacién ilustrado por Ia figura 3.18. El multiplicador (14),, contiene tres unos con- secutivos, lo que implica, si se usara el procedimiento de multiplicar por sumas y des- plazamientos descripto en la seccién 3.3.1, la necesidad de tres operaciones de suma. El multiplicador codificado segtin Booth se obtiene analizando 1 multiplicador origi- nat de derecha a izquierda, colocando un -1 en la primera posicién en la que se encuen- tre un 1, y colocando un +1 en la posicién en la que uparezca el siguiente 0. El multi- plicador se convierte asi en 0 +100 -1 0. El multiplicador codificado segin Booth solo contiene dos posiciones no nulas, lo que significa que habré que realizar una tinica su- ‘ma y una tinica resta, por lo que este ejemplo logra una reduccién en el tiempo reque- rido para completar el producto. Sin embargo, no siempre se logran mejoras, y en algunos casos puede darse que el algoritmo en cuestién genere la realizacién de mas operaciones que si no se lo hubiese utilizado. Al efecto, considérese el ejemplo de la figura 3,19, en la que el mulliplicador consiste en una secuencia de ceros y unos alternados. Este ejemplo es el mismo de la figura 3.18, en la cual se han conmutado multiplicando y multiplicador. Sin ta codifi- ‘cacién Booth del multiplicador se hubiesen requerido tres operaciones de suma dado que tiene tres unos. Si se lo codifica segtin Booth, se requerirdn seis operaciones de su- ma y resta, lo que resulta notablemente peor. La secci6n siguiente intenta mejorar esta situacién, ‘80_PRINCIPIOS DE ARQUITECTURA DE COMPUTADORAS 010101 py OO 1110 (ay x 0+ 0 o-1 0 1 locate Desplazamiento IORPHO” | Desptazamicnto 110 G2tx2o 09:0 X16 11 0 (29449. Producto Figura 3.18 # Producto de enteros con signo mediante el algoritmo de Booth, OO 1119 (1p 0 1 0 1 0 1 Q@1q Mokiplicador X41 <1 41 <1 +1 <1 Recodificacién det moltiplicador {t tA Arena 89 Booth ‘Suma CEPT ETT £0010 (Max 90 CO0KHOL1T 100 Caxrg PET a1 1001000 Cldxdhy 900008110000 (4x8 P11 100100000 (14x16 000111000000 (14x3% 9 ° ° ° ° 2941 Producto iciencia en la aplicacién del algoritma de Booth. Ei algoritmo de Booth modificado Una solucién a este problema consiste en agrupar los bits del multiplicador codificado en pares de bits, lo que lleva a la codificacién por pares de hits, dando lugar a lo que se ¢o- noce como el algoritmo de Booth modificado. El agrupamiento de pares de bits de de- recha a izquierda produce tres pares “+1, -1”, tal como se observa en Ia figura 3.20. De- bido a que el término +1 esté a la izquierda del término -1, tiene un peso que es el doble del peso de la posicién correspondiente al -1. Por consiguiente, puede pensarse en el par como si tuviese un valor conjunto de +2— 1 = +1. De forma similar, el par -1, +1 es equivalente a-2+ 1 =-1, Los pares +1, #1 y-1,-1 no pueden producirse. Se pueden generar un total de siete pares de bits diferentes, los que se muestran en Ia figura 3.21. En cada caso, se realiza el producto del multiplicande por el valor del par de bits codificado y el resultado obtenido se suma al producto parcial. En una implementacién del sistema de codificacién por pares de bits, se resuelven los dos procedimientos de codificacién en un solo puso, mediante la observacién simulténea de tes bits del multiplicador, segdn se muestra en la tabla de bits correspondiente, OO 1 1 tO Qi Mulipticando 01.0.1 4 1 (14g Mubiplicador X SL -1 41-1 41-1 Revodificacin dei multiplicador segin Booth oo +1__+1__#1__ Multiplicador codificado por pares de bits 110 (4xDy9 000 (AxAhg 09 0 (4x16 000100 1001 1 0 (294) 9 Produce Figura 3.20 ° Producto que utiliza la codificacion por pares de bits en el mult okiplicadores Par de bits Par de bits hit G+1.i) recoditicado() (rr i= 1) rq o 0 0000 141 o + 001 0-1 no +H 0 ou +41 +A 010 1 0 100 “lol 101 otal — Figura 3.21 + Cocificacin de pares de bits. El proceso de codificar los bits del multiplicador de a pares garantiza que en el peor ca- 80 se realicen solo w/2 sumas (0 restas) si el multiplicador esté formado por w bits. Multiplicadores matriciales El metodo serie que fuera utilizado para multiplicar dos enteros no signados en la seccién 3.2.1 requiere muy poca cantidad de circuitos, pero el tiempo necesario para realizar el pro- ducto de dos niimeros de w bits crece proporcionalmente con w*, Se puede acelerar el pro- ceso de multiplicacién de modo que se complete en solo 2 pasos por medio de la imple- mentacién del proceso manual de la figura 3.10, en paralelo. La idea general es 1a de formar productos de un bit entre cada bit del multiplicando y cada bit del multiplicador, y sumar luego cada fila de elementos del producto parcial, desde arriba hacia abajo en forma sist6lica (fila por fila). La estructura de un muttiplicador matricial sist6lico se ilustra en la figura 3.22. En Ja parte inferior de la figura se muestra un elemento para el céleulo de un producto par- ‘82_PRINCUPIOS UE ARQUITECTURA DE COMPUTADORAS cial (PP). A través de la compuerta Y se realiza el producto de un bit del multiplicando (nm) por un bit del multipticador (q), Jo que genera un producto parcial en la posicién (i) de la matriz, Este producto parcial se suma con el producto parcial obtenido desde la eta- pa previa (b,) y con cualquier arrastre que se hubiese generado en dicha etapa (a). El re- sultado tiene 2w bits y se lo obtiene en la parte inferior de la matriz (los w bits mas signi- ficativos) y a la derecha de la misma (los w bits menos significativos). rr re | itt fal Powe ty | PPgap— Ay | Pup do | PPgg4——— 4g — fam Pre 1 | PP] sopmcndeays teri] FA Paw ‘Semador Somat ‘ Proc Asrasre defalida ead Jan oh Figura 3.22 Multipticador paraleto de matriz segmentada. 3.5.3 Division de alto rendimiento La metodologia de division de mimeros enteros sin signo desarrollada en la secciGn 3.3.2 puede extenderse para permitir la generacién de un resultado fraccionario cuando se cal- cula a/b, La idea general es la de escalar a y b para que parezcan enteres, realizar el pro~ cariruuo 3 « armuérica 83 ceso de division y, luego, volver a escalar el cociente para que se corresponda con el re- sultado correcto de la divisién de a por 8. Figura 3.23 « teracién de Newton para encontrar el cera {adaptado de D, Goldberg) Otro método para realizar la divisi6n utiliza una tabla de busquedas y un mecanismo de ite- rucién, Uno de los métodos iteratives usados para encontrar las rafces de un polinomio se co- noce como método de iteracién de Newton, y se ilustra en la figura 3.23. El objetivo del mé- todo es encontrar el punto en que la funcién f(x) cruza el eje x a través de una primera aproximacién x, y luego refinar dicha aproaimacién utilizando el error entre f(x) y cero. La tangente en f(x,) puede representarse por la ecuacién yf) La recta tangente cruza el eje x en fe) fe) “aay Me E] proceso se repite mientras /lx,) se acerca a cero. La cantidad de bits de precisi6n se duplica en cada iteracién (véase D. Gotdberg); por ende, si se requiere una precisién de 32 bits a partir de un dnico bit de precisién ini- cial, deben realizarse cinco iteraciones para Negar al resultado deseado, El problema ahora es c6mo convertir la operaci6n de divisi6n en una operaciGn que permita encon- rar un cero para flr). Considérese la funcién IZ - b, que tiene un cero en 1/5, Si se inicia con b, se puede calcular 1/2 aplicando repetidamente el método de Newton. Dado que f(x) =-1/2, se ob- tiene Vx, = 444-106 =x, (2-4 b) oUt ‘84 _PRINCIPIOS DE ARQUITECTURA DE COMPUTADORAS Por consiguiente, solo se requiere la realizacién de productos y restas para poder resol- ver la divisin. Més atin, si la primera aproximaci6n para determinar x, es lo suficiente- mente buena, puede ocurrir que solo hagan falta unas pocas iteraciones. B=primeros Valordecimal Enirada correspondiente Sbitsdeb —realde /B ena tabla de basquedas 0,100 2 10 0,101 19/5 a ont 11a oO onl Ma a Figura 3.24 « Tabla de biisqueda para el cétculo de x. Antes de utilizar este método en un ejemplo, se hace necesario considerar cudl ser la for- ma de intentar ia aproximacién inicial. Si se trabaja con fracciones normalizadas, es rela- tivamente sencillo utilizar una tabla de biisqueda para los primeros dfgitos. Considérese el caso de requerir el céleulo de 1/0,101 101 utilizando una mantisa normalizada representa da en 16 bits, sin la caracteristica del primer uno implicito, Los primeros tres bits de cualquier mantisa binaria pueden adoptar cualquiera de los siguientes valores: 0,100, 0,101, 0,110 0 0,111. Estas fraeciones corresponden, respectivamente, a los valores deci- males 1/2, 5/8, 3/4 y 7/8. Las inversas de estos nmeros son, respectivamente, 2, 8/5, 4/3 y 8/7. Los correspondientes valores binarios pueden almacenarse en una tabla de biisque- da y luego puede recuperarse x, sobre la base de los tres primeros digitos de b. El primer I de la mantisa no contribuye a la precisién, por lo que los tres primeros bits de la misma solo aportan 2 bits de precisi6n. Por lo tanto, la tabla de biisqueda solo re- quiere dos bits para cada entrada, tal como se indica en Ia figura 3.24. Considérese ahora la divisién de 1/0,1011011 mediante esta misma representacién de punto flotante. Se comienza encontrando x,, para lo cual se wtiliza la tabla de ta figura 3.24. Los primeros tres bits de la fraccién b son 101, lo que corresponde a x, = O1. Se puede calcular x, =, (2 — x4) de donde se obtiene, en una operacién sin signo binaria, 01(10 - (01)(0,101 1011)) = 1,0100101. Los dos bits de precisién se han convertido en cuatro. Para este ejemplo, se busca retener la mayor precisién intermedia que permita el cdlculo. En general, si se requiere un resultado de p bits, hace falta retener a lo sumo 2p bits de precisi6n intermedia. A} iterar nuevamente, se obtendrén ocho bits de precisién: ici 4] =x, 2—¥,b)= 1,0100 101 (10 - (1,0100 101,101 011) 1,0110.0101 1001 0010 11101 terando nuevamente, se obtienen los 16 bits de precisién pretendidos: capiruo 3 « aarmuénica 85 y=4,2-4))= =(1,0110 0101 1001 0040 1110)(1 - (1.0110 0101 1001 9010 1110)(1,1011 0119) = 1,0110 1000 0001 001 = (1,40652466),. El valor exacto es (1,40659341),9, pero la precisién obtenida es la mAxima que puede lo- grarse con una representacién de 16 bits, 3.5.4 Calculo residual Las operaciones de suma, resta y producto pueden realizarse en un tinico paso, sin nece- sidad de arrastres, utilizando el Namado edleuto de residuos. El sistema de numeracién residual se basa en un conjunto de ndimeros enteros relativamente primos entre si, Ilama- dos médulos. El residuo de un entero con respecto de un médulo particular es el menor resto entero positivo resultante de la divisién del entero dado por el médulo. Los nime- ros 5,7, 9-y 4 forman un conjunto de médulos posibles. Con estos médulos pueden re- presentarse en forma tinica la cantidad de 5 x 7 x 9 x 4 = 1260 emteros. La figura 3.25 muestra una tabla en la que se tiene la representaci6n de los primeros veinte enteros de- males utilizando los médulos 5, 7.9 y 4. La suma y el producto desasrollados en el sistema numérico de residuos da por resul tado ntimeros de residuos vélidos, suponiendo que el tamafio del espacio numérico elegi- do sea lo suficientemente grande como para contener el resultado. La resta requiere que cada uno de los digitos residuales del sustraendo sea complementado con respecto a su médulo antes de realizar fa suma, La figura 3.26 ilustra ejemplos de suma y producto que utilizan a los ntimeras 5, 7, 9 y 4 como médulos. La suma se realiza en paralelo en cada columna, sin propagacién de arrastre. El producto también se realiza en paralelo colum- ‘na por columna, en forma independiente de las dems columnas. Decimal | Residue | Decimal | Residuo 5794 5794 0 000 10 0312) ' ML ub 123 2 2222 2 2530 3 3333 a 36a 4 4200, 4 4082 5 0551 15 0163 6 1662 16 1270 7 2073 0 2381 8 3180 8 3402 9 4201 9 4513, Figura 3.25 » Representacién de los vainte primeros enteras decimales en ef sistema de residuos para los ‘mAdulos propuestos. ‘86_PANUCIPIOS OE AROUTECTURA DE COMPUTADORAS 29427 = 56 Decimal | Residuo Residuo 5798 5794 29 4121 10 0312, a 2603 7 2381 56 1020 170 0282 Figura 3.26 Ejemplos de suma y producto usando el sistema de residuos. Si bien la aritmética de residuos puede ser muy wipida, trae aparejada una serie de desventa- jas. La divisién y la detecci6n de signo suelen ser complejas, asf como también la represen- tacién de fracciones. Las conversiones entre el sistema numérico de residuos y los sistemas numéricos posicionales conllevan cierta dificultad, y a menudo requieren la utilizacién de ‘otros métodos como el Teorema chino de los restos. Ei problema de conversién es impor- tante debido a que el sistema numérico de residuos no es demasiado ttl si no se lo puede con- vertir en un formato posicional para realizar comparuciones de magnitudes, No obstante, pa- ra aqueltas aplicaciones enteras en las que tos tiempos requeridos por las operaciones de uma, resta y producto superan por mucho al tiempo utilizado para realizar divisiones, con- versiones, etc.,l sistema de residuos puede ser de aplicacién prictica, Ejemplo de este caso es el de la multiplicacién matriz-vector, ampliamente usada en el procesamiento de seftales. Ejemplo. Sumador de alto rendimiento para palabras largas La utilizacién de sumadores con arrastre anticipado suele ser préctica para palabras de cuatro bits, no siendo tan duil su aplicacién en palabras de 16 bits debido a las limitacio- nes eléctricas de entrada y salida de lis compuertas I6gicas que los conforman. La suma de dos ntimeros de 16 bits puede subdividirse en cuatro grupos de cuatro bits cada uno, los que se suman, en cada grupo, con sumadores con arrastre anticipado. La suma entre los distintos grupos de cuatro bits también se realiza con sumadores con arrastre anticipado. Esta forma de organizar la operaci6n sucle denominarse sumador con arrastre anticipa- do entre grupos (GCLA, group carry lookahead adder). En este ejemplo se compararin, en términos de retardos y cargas eléctricas, un sumador de 16 bits con arrasire anticipado (CLA) y otro que utiliza la técnica de arrastre anticipado entre grupos (GCLA). La figura 3.27 muestra un sumador de 16 bits con arrastre anticipado entre grupos, compuesto por cuatro sumadores de cuatro bits, y alguna Iégica adicional que pueda ge- nerar los arrastres entre los distintos sumadores de cuatro bits. Cada grupo se comporta como un sumador convencional, excepto por el hecho de que €1 arrastre que ingresa af bit menos significativo de cada grupo debe ser tratado como una variable en lugar de ser cero, origindndose sefiales de generacién geupal (GG) y propa- gaci6n grupal (GP). Se genera una sefial GG cuando se produce un arrastre en alguna par- te dentro de un grupo y si todas las sefiales de propagacién mis significativas son ciertas. capirwo 3+ annminca 87 Esto significa que la sefial de arrastre ingresada a un grupo se propagard a todo lo largo del mismo, Las ecuaciones correspondientes a las seftales GG y GP menos significativas de la figura 3.27 son las que siguen: GG.= G, + PG, + PPG, + P,P,P\G GP,= PPP Gy amas =a) ay~ay aq a3 bia bas dam by by - by t! {! 4 aha % % CLAY Chay CLAy Pye) Ie mass $6751 sao 57 0-53 op, |G. ar, |e. ari] |ac, Jaro] |ac + Logica de arrastreanticipedo entre grupos (GCLA) “6 Figura 3.27 » Sumador de 16 bits con arrastre anticipado entre grupos. La determinacién de las seftales GG y GP restantes se realiza en forma similar. El arrastre que ingresa en cada grupo, excepto para el caso del arrastre inicial, se de- termina desde las sefiales GG y GP. Por ejemplo, ¢, es cierta cuando GG, es cierta 0 cuando GP, y ¢q son ambas ciertas. La ecuaci6n correspondiente es: C42 GGy+ GP, cy Los arrastres de orden superior que salen desde cada grupo se calculan en forma similar: G, + GP,c,= GG, + GP,GG, + GP xq = GG, + GP,¢,= GG, + GP;GG, + GP,GP GG, + GP;GP,GP 64 €¢= GG, + GP, = GG, + GP,GG, + GP,GP,GG,+ GP,GP,GP GG, + GP,GP,GP,GP 6, En términos de retardos de compuertas, un sumador con arrastre anticipado de 16 bits tie- ne como carnino mas largo para sus seffales Idgicas el equivalente a cinco niveles de com- puertas, requerido para generar el bit mds significative de la suma, tal como se planteara (88 _PRINCIPIOS DE ARQUITEGTURA DE COMPUTADORAS en Ia seccién 3.5.1. Cada uno de los sumadores individuales en el sumador grupal tiene también, al menos, cinco niveles de compuertas en su trayecto mas largo. Las sefales GG y GP se generan con tres niveles de compuertas, y las seffales de arrastre que salen de ca- da uno de los grupos también se generan en dos niveles de compuertas, con lo que s¢ ob- tiene un total de cinco niveles de compuertas como retardo para la generaci6n del arrastre que sale de cada uno de los grupos. En la posicién més significativa (s,,), se requieren cin- co niveles para generar ¢,, y otras cinco compuertas para generar s,., dando como resulta- do que ta peor solucién presenta dicz. niveles de retardo a to largo del sumador grupal. Con respecto a las entradas y salidas, ta cantidad maxima de entradas en cualg compuerta de un sumador de cuatro bits con arrasire anticipado es cuatro, segtin puede verse en la figura 3.17. En general, la maxima cantidad de entradas en una compuerta de un sumador con arrastre anticipado de 1 bits es n. Asi. la méxima cantidad de entradas de cualquier compuerta en un sumador de 16 bits con arrastre anticipado es de 16, Como comparacién, la maxima cantidad de entradas en un sumador grupal de 16 bits es solo de 5, en la generaci6n de c,,, Las cantidades de salidas son las mismas que las de entradas. En resumen, un sumador de arrastre anticipado de 16 bits tiene solo la mitad de la can- tidad de niveles Iégicos que el sumador grupal de [6 bits (5 niveles de compuertas con- tra 10 niveles en el segundo caso). La mayor cantidad de entradas de un sumador con arrasire anticipado de 16 bits es de 16, lo que es mds de tres veces mayor que la caracte- ristica similar en un sumador grupal (16 contra S). Las caracterfsticas de salida son las mismas que las de entrada en cada caso. « 7 3.6 Estudio de un caso: calcutadora que utiliza ef sistema decimal codificado en binario E] cdlculo aritmético en méquinas calculadoras se resuelve tradicionalmente en el siste- ma decimal, en lugar de hacerlo en el sistema binario. Las calculadoras deben ser de ta- mafio reducido y econémicas, y por esa razén los ntimeros decimales se representan en BCD (decimal codificado en binario, véase et capitulo 2), utilizando cuatro bits por digi- to, en lugar de usar el sistema binario de numeracién, que demanda un proceso de con- versién entre sistemas con altas necesidades de recursos. Para realizar las operaciones podré pensarse en una unidad aritmético-légica pequefia, de 4 bits, que realice los célcu- los en serie, operando sobre los digitos codificades BCD, uno tras otro. 3.6.1 La calculadora HP9100A Lacalculadora HP9100A, que apareci6 y se hizo popular sobre el final de la década de 1960, realizaba las funciones aritméticas bisicas: suma, resta, producto y cociente, asf como radi caci6n, ex, In-x, log x, funciones trigonométricas y otras, utilizando en todos los casos aritené- tica decimal. La calculadora HP9100A es, en realidad, una calculadora de escritorio (véase capiTu.o 3» armérica_89 1a figura 3.28). considerada pequeiia para lo que hacia con la tecnologia de aquellos dias. En el visor de la HP9100 se muestran diez dfgitos significativos, pero todos los edlculos se rea- Tizaban con 12 digitos significativos, donde los dos tltimos digitos (digitos de guarda) eran uitilizados para administrar los ervores de redondeo y truncado. Si bien la HP9100A puede pa- recer hoy una reliquia, los métados de operacién aritmética siguen siendo relevantes. Calculadora de escrtorio de la serie HPB100A, Fuente: Museo de caleuladoras HP, httpefvrww hpmuseum org. Las dos secciones siguientes describen téenicas genéricas para la realizacién de operacio- nes de suma y resta entre nimeros codificados en BCD, tanto en punto fijo como en pun- to flotante. Las demés operaciones descriptas en las secciones restantes se realizan en for~ ma similar, haciendo uso de las operaciones de suma y resta. 3.6.2 Suma y resta de némeros codificados en BCD Considérese ta suma de (+255)jo y (+63),o, Codificados en BCD, de acuerdo con lo ilus- trado en la figura 3.29, Cada digito decimal ocupa cuatro bits, y la suma se realiza digito por digito (no bit por bit), de derecha a izquierda, tal como se procederfa cuando se rea- lizan operaciones decimales a mano. El resultado (+318),9, Se obtiene en formato BCD, segan se observa en la figura. 1 0 9 <— Anrastres 0000 0010 9101 0101 2559 + 0000 9000 0110 0011 630 0000 9011 9001 1000 3180 eos Orn Bo Wa Bro Figura 3.29 e Ejempio de summa que uliliza el sistema decimal codificado en binario (BCD)

You might also like