Universidad Politécnica de Madrid Departamento de Informática Aplicada Notas y Transparencias de Arquitectura de Computadores CPU Memorias Controladores de E/S Paco Aylagas Reservados todos los derechos. Prohibida la reproducción parcial o Total sin autorización. I.S.B.N.: 84-96244-99-7 Depósito Legal: M-33299-2006 Edita y distribuye: Departamento de Publicaciones de la Escuela Universitaria de Informática de la Universidad Politécnica de Madrid BAJO EL PATROCINIO DE LA FUNDACIÓN GENERAL DE LA UNIVERSIDAD POLITÉCNICA DE MADRID Arquitectura de Computadores Notas y Transparencias - ii PRÓLOGO Estas Notas y Transparencias no pretenden en modo alguno servir de alternativa a cualquiera de los libros de texto indicados en la bibliografía de la asignatura. Sólo son las transparencias de clase con sus notas y comentarios de un curso de 30 horas de introducción a la Arquitectura de Computadores, y simplemente intentan servir de apoyo a las explicaciones dadas en clase. Para cualquier duda o ampliación sobre los temas aquí tratados, se recomienda utilizar las fuentes bibliográficas que se citan. En las páginas que siguen se encuentra, muy detallado, el programa de la asignatura, indicando en cada capítulo y apartado la fuente bibliográfica que se ha utilizado para la confección de estas Notas y Transparencias. Agradecimientos Estas Notas y Transparencias de Arquitectura de Computadores se han realizado gracias a los textos citados en la Bibliografía, por ello, quiero dejar sentado que el principal mérito de estos apuntes se debe a los autores de las correspondientes fuentes bibliográficas, los cuales me han servido de guía y fuente en la realización de estas notas. Espero, no obstante, que alguna explicación o ejemplo de mi propia cosecha también ayude a comprender los conceptos básicos de la Arquitectura de Computadores. Quiero dar las gracias a Javier García por la ayuda de sus propios apuntes; a Pilar Manzano y Andrés Sevilla por la revisión general, y a Soledad Delgado por su estupenda revisión y corrección del tema de memoria caché; a Pablo Carazo y a José Luis Esteban, que hicieron las transparencias originales del Motorola 68000; y también a los demás compañeros y alumnos que con sus comentarios, correcciones de erratas y sugerencias de todo tipo han ayudado en gran manera a que estas Notas y Transparencias vean la luz. Junio de 2008 Arquitectura de Computadores Notas y Transparencias - iii Arquitectura de Computadores Notas y Transparencias - iv Contenido y Referencias Bibliográficas 1. Introducción 1.1. ¿Qué es la Arquitectura de Computadores? 1.2. Perspectiva Histórica 1.3. Estructura Básica de un Ordenador 1.4. Clasificación de las arquitecturas 2. La CPU 2.1. Estructura de la CPU 2.2. Ciclo de Instrucción 2.3. Interfaz hardware de una CPU 2.4. Ciclo de Reloj, Memoria e Instrucción 3. Lenguaje Máquina 3.1. Visión del Programador 3.2. Formato de las Instrucciones 3.3. Modos de Direccionamiento 3.4. Instrucciones Típicas 3.5. Un Ejemplo: Motorola 68000 4. La Memoria 4.1. Jerarquía de Memoria 4.2. La Memoria Principal 4.3. Interconexión CPU - Memoria 5. Sistemas de Entrada/Salida 5.1. Estructura de un Sistema de E/S 5.2. Los Métodos de E/S 5.3. E/S por Sondeo (polling) 5.4. E/S por Interrupciones 5.5. E/S por Acceso Directo a Memoria (DMA) 6. Segmentación (Pipelining) 6.1. Conceptos básicos 6.2. Causas de ralentización 7. Memoria Caché 7.1. Fundamento e introducción 7.2. Estructura de una memoria caché 7.3. Políticas de ubicación 7.4. Políticas de sustitución 7.5. Políticas de escritura 7.6. Otras consideraciones 7.7. Casos: Pentium, PowerPC y Motorola 8. Arquitecturas RISC 8.1. Evolución de las Arquitecturas CISC 8.2. Análisis de los Programas 8.3. Principios y Características de las Arquitecturas RISC 8.4. Diseño de los Procesadores Actuales 8.5. Algunos Procesadores RISC Arquitectura de Computadores Notas y Transparencias - v 1. Introducción 1.1. ¿Qué es la Arquitectura de Computadores? Van de Goor 1.1.1; Stallings 1.1 1.2. Perspectiva Histórica Hayes 1.2 y 1.3; Tanenbaum 1.2; Stallings 2; 1.2.1. Los Microprocesadores Tanenbaum (3rd. ed.) 1.5.6 y 1.5.7; Stallings pag. 38, 2.3 (Pentium y PowerPC) 1.3. Estructura Básica de un Ordenador 1.3.1. Máquina de von Neumann Hayes pag. 20; Stallings 2.1; Tanenbaum 1.2.2 1.3.2. Esquema general de un ordenador Hamacher 1.1; Stallings 3.1; Tanenbaum 2 1.4. Clasificación de las arquitecturas Hwang 1.1.3 (Flynn’s classification) 2. La CPU 2.1. Estructura de la CPU Stallings 3.2, 11.1, 11.2; Tanenbaum 2.1.1; Hamacher 3.1 2.2. Ciclo de Instrucción Tanenbaum 2.1.2; Stallings 10.1; 12.3; van de Goor 7.1; Hamacher 3.2 2.3. Interfaz hardware de una CPU Tanenbaum 3.4.1 2.4. Ciclo de Reloj, Memoria e Instrucción 3. Lenguaje Máquina 3.1. Visión del Programador 3.2. Formato de las Instrucciones Stallings 11.3; Instruction set design (p. 330); Tanenbaum 5.3 3.2.1. Consideraciones de diseño Tanenbaum 5.3.1; Stallings 10.3 3.2.2. Códigos de operación con extensión Tanenbaum 5.3.2 3.3. Modos de Direccionamiento 3.3.1. La Pila 3.4. Instrucciones Típicas 3.4.1. Llamadas a procedimientos Stallings 11.1; Tanenbaum 5.4; van de Goor 5.2 Tanenbaum 5.4.8; Stallings apéndice 10-A Stallings 10.4; Tanenbaum 5.5, 5.6; Desplazamientos y rotaciones: van de Goor 6.3 Tanenbaum 5.6.2; Stallings p. 373 3.5. Un Ejemplo: Motorola 68000 3.5.1. Organización de la memoria Arquitectura de Computadores Clements 2.2 (Address Registers) Notas y Transparencias - vi 3.5.2. Registros internos Clements 2.2; Acarreo y Overflow: Hamacher 6.2 y 6.4 3.5.3. Modos de direccionamiento Clements 2.3 3.5.4. Repertorio de instrucciones Clements 2.4 - 2.7 3.5.5. Excepciones e interrupciones Clements 6. Una introducción en van de Goor A.4 4. La Memoria 4.1. Jerarquía de Memoria Hamacher 5.1; Stallings 4.1 (The Memory Hierarchy) 4.2. La Memoria Principal 4.2.1. Tipos de memorias Stallings 5.1; Tanenbaum p. 110-111 4.2.2. La memoria principal Stallings 1.1 4.2.3. Organización y orden Tanenbaum 2.2.2, 2.2.3; Stallings 10-B 4.2.4. Interfaz de una pastilla de memoria Stallings 4.1 (Encapsulado de los Chips) 4.2.5. Cronogramas de lectura y escritura Tanenbaum 3.4.4 4.3. Interconexión CPU - Memoria 4.3.1. El mapa de memoria 4.3.2. Organización de módulos de memoria Stallings 5.1 (Lógica del Chip y Organización en Módulos; Tanenbaum 3.3.4 4.3.2.1. Agrupación por longitud de palabra 4.3.2.2. Agrupación por direcciones 4.3.3. Decodificación de direcciones Tanenbaum 3.7.2; Clements 5.1 4.3.4. Sistema basado en el MC68000 4.3.4.1. Ciclos de lectura y escritura Clements 4.2; García Guerra 6.4 4.3.4.2. Conexión de memoria y decodificación Clements Fig. 5.6 5. Sistemas de Entrada/Salida 5.1. Estructura de un Sistema de E/S van de Goor 11.1; Tanenbaum 2.4.1; García Guerra 3.2 5.1.1. Controlador de dispositivo Stallings 7.2 5.1.2. Software de Entrada/Salida van de Goor 11.3 5.1.3. Acceso a los dispositivos de E/S García Guerra 3.5; Hamacher 4.1 Arquitectura de Computadores Notas y Transparencias - vii 5.1.3.1. Espacio de direccionamiento de E/S 5.1.3.2. Espacio de E/S “mapeado” en memoria 5.2. Los Métodos de E/S García Guerra 3.6; Tanenbaum 5.5.7 5.3. E/S por Sondeo (polling) van de Goor 11.4.1; García Guerra 3.7 5.4. E/S por Interrupciones Stallings 7.4; Hamacher 4.2 5.4.1. ¿Qué es una interrupción? Hamacher 4.2; Tanenbaum 5.6.5; García Guerra 3.8-3.9 5.4.2. Tipos de interrupciones García Guerra 3.12; Tanenbaum 5.6.4, 5.6.5; 5.4.3. Niveles y máscaras de interrupción García Guerra 3.10, 3.11, 3.15-3.17; Hamacher 4.2.2-4.2.3 5.4.4. Reconocimiento y tratamiento de una int. Stallings 7.4 (Procesamiento de la Interrupción); García Guerra 3.14; Hamacher 4.2.1 5.4.5. Esquema de E/S por interrupciones Hamacher 4.3.3 5.5. E/S por Acceso Directo a Memoria (DMA) 5.5.1. Políticas de reparto del bus 6. Segmentación (Pipelining) Stallings 7.5; Wakerly 11.5.1; Hamacher 4.4; García Guerra 3.18; Tanenbaum 5.5.7 Hayes 7.2.2 Hamacher 7; van de Goor 14.8; Stallings 12.4; Patterson 6 6.1. Conceptos básicos Stallings 12.4 (Estrategia de segmentación); van de Goor 14.8; Hamacher 7.1 6.2. Causas de ralentización van de Goor 14.8 (último párrafo); Stallings 12.4 6.2.1. Motivos estructurales Stallings 12.4 6.2.2. Dependencias de datos van de Goor 14.8.1; Hamacher 7.1.2 y 7.4; 6.2.3. Bifurcaciones van de Gor 14.8.3; Hamacher 7.3; Stallings 12.4 (Tratamiento de Saltos) 7. Memoria Caché 7.1. Fundamento e introducción Hamacher 5.5 7.2. Estructura de una memoria caché van der Goor 14.6.1; Stallings 4.2 7.3. Políticas de ubicación Stallings 4.3 (Función de Correspondencia); Hamacher 5.5.1, 5.5.3 7.3.1. Correspondencia directa 7.3.2. Correspondencia asociativa Arquitectura de Computadores Notas y Transparencias - viii 7.3.3. Correspondencia asociativa de conjuntos 7.4. Políticas de sustitución van de Goor pag. 419; Hamacher 5.5.2; Hennessy 5.2 Q3 7.4.1. Basadas en la estadística 7.4.2. No basadas en la estadística 7.5. Políticas de escritura Hennessy 5.2 Q4; Stallings 4.3 (Política de Escritura); 7.5.1. Políticas de actualización 7.5.2. Falta de caché en escritura 7.6. Otras consideraciones 7.6.1. Tamaño de la caché Stallings 4.3 (Tamaño de Caché); 7.6.2. Tamaño de bloque Stallings 4.3 (Tamaño de Línea); van der Goor 14.6.2 (Line & caché size); Hennessy pag. 393 7.6.3. Número de cachés Stallings 4.3 (Número de caches); Hamacher 5.6.3; Hennessy pag. 382 7.7. Casos: Pentium, PowerPC y Motorola Pentium y PowerPC: Stallings 4.4; Motorola: Hamacher 5.5.4 8. Arquitecturas RISC 8.1. Evolución de las Arquitecturas CISC van de Goor 15 y 15.1 8.2. Análisis de los Programas van de Goor 15.2; Milutinovic 2.3.1; Stallings 13.1 8.3. Principios y Características de las Arquitecturas RISC van de Goor 15.3; Stallings 13.4; Milutinovic 2.3.1 8.4. Diseño de los Procesadores Actuales Tanenbaum 2.1.4 8.5. Algunos Procesadores RISC Hamacher 8 tiene una buen estudio comparativo. 8.5.1. MIPS Kane 2; Stallings 13.6; Milutinovic 2.4.4; Tanenbaum-3 8.1.6 8.5.2. PowerPC Stallings 11.6 (5ª ed.); Hamacher 8.3 8.5.3. Alpha AXP Hamacher 8.4 Arquitectura de Computadores Notas y Transparencias - ix Bibliografía La confección de estos apuntes está basada principalmente en libros de introducción a la Arquitectura de Computadores, no obstante, en algunos casos se ha recurrido a algunos textos más avanzados o especializados que han aportado algún dato o matiz de interés. También se incluyen aquí algunos textos avanzados que aún no habiendo sido utilizados para la realización de estos apuntes, los considero de interés para cualquier profundización que se quiera hacer en esta materia. Textos de Introducción a la Arquitectura de Computadores. Organización y Arquitectura de Computadoras (7ª ed.) William Stallings Pearson Educación, 2006 Computer Architecture and Design A.J. van de Goor Addison-Wesley, 1989 Structured Computer Organization (4th ed.) Andrew S. Tanenbaum Prentice-Hall, 1999 Computer Organization and Architecture (3rd. ed.) John P. Hayes McGraw-Hill, 1998 Computer Organization (4th ed.) V. Carl Hamacher, Z. G. Vranesic, S. G. Zaky McGraw-Hill, 1996 Computer Architecture. Concepts and Systems Veljko M. Milutinovic North-Holland, 1988 Sistemas Digitales. Ingeniería de los procesadores 68000 Antonio García Guerra Centro de Estudios Ramón Areces, 1993 The Principles of Computer Hardware (3rd. Ed.) Alan Clements Oxford University Press, 2000 Textos Avanzados o Especializados de Arquitectura de Computadores. Computer Organization and Design. The hardware and software interface. David A. Patterson & John L. Hennessy Morgan Kaufmann , 1994 Computer Architecture. A Quantitative Approach. (2nd. ed.) John L. Hennessy & David A. Patterson Morgan Kaufmann, 1996 Arquitectura de Computadores Notas y Transparencias - x Advanced Computer Architecture Kai Hwang McGraw-Hill,1993 Microprocessor Systems Design. 68000 Hw, Sw. and Interfacing (2nd. ed.) Alan Clements PWS-Kent Publising Company, 1992 Microcomputer Architectura and Programming. The 68000 family John F. Wakerly John Wiley & sons, 1989 The Architetcure of Pipelined Computers Peter M. Kogge Hemisphere Publishing, 1981 The Cache Memory Book Jim Handy Academic Press, 1998 Arquitectura de Computadores Notas y Transparencias - xi