¿Para qué le sirve a un programador saber Arquitectura de Computadoras?
Se
puede responder fácilmente con otra pregunta: los programadores programan
computadoras, ¿verdad? ¿Cómo trabajar sobre algo cuyas bases se
desconocen? Los programadores de los años 60' sabian fundamentalmente que
disponían de escasa memoria y desarrollaban sus programas en
consecuencia. Ahora, para desarrollar programas y sistemas competitivos
hay que saber fundamentos de organización de computadoras,
específicamente jerarquía de memoria y procesamiento paralelo. 1. UNIDAD ARITMETICO-LÓGICA 1.1. Sumador binario sin y con signo 12.1.1. Generación y propagación del acarreo. Sumador Ripple-carry 1.1.2. Sumador carry look-ahead 1.2. Multiplicación binaria sin y con signo 1.2.1. Multiplicadores celulares 1.2.1.1. Algoritmo y celda básica ripple-carry 1.2.1.2. Algoritmo y celda básica carry-save 1.2.2. Multiplicador secuencial shift and add. 1.3. División binaria sin y con signo 1.3.1. División con restauración. 1.3.2. División sin restauración.
2. ARQUITECTURA DE ORDENADORES. EL PAPEL DEL RENDIMIENTO 2.1. Introducción. 2.2. Arquitectura (clásica) de un ordenador 2.2.1. Arquitecturas Von-Neumann y Harvard 2.2.2. Arquitecturas CISC y RISC 2.3. El rendimiento del sistema 2.3.1. Unidades de medida 2.3.2. Comparativa de rendimientos 2.3.3. Mejorar el rendimiento. La ley de Amdahl 2.4. Ejemplo de la evolución en el rendimiento de los microprocesadores
3. SEGMENTACIÓN EN LA EJECUCIÓN DE INSTRUCCIONES
3.1. Fundamentos de diseño de un procesador 3.1.1. El repertorio de instrucciones 3.1.2. Ciclo único y multiciclo 3.1.3. Ruta de datos y control 3.2. La técnica de la segmentación 3.2.1. Funcionamiento ideal 3.2.2. Conceptos asociados: Latencia y Rendimiento (Throughput) 3.3. Diseño de un procesador con segmentado (Pipeline) 3.4. Limitaciones del cauce de instrucciones segmentado 3.4.1. Causas que producen perdidas de rendimiento por detención del pipeline. 3.4.1.1. Conflictos por limitaciones estructurales 3.4.1.2. Conflictos por riesgos de control 3.4.1.3. Conflictos por dependencia de datos 3.4.2. Técnicas para evitar detenciones 3.4.2.1. Adelantamiento de datos 3.4.2.2. Predicción de saltos 4. ORGANIZACIÓN Y ESTRUCTURA DE LA MEMORIA: CACHÉS Y MEMORIA VIRTUAL 4.1. Jerarquía de memoria 4.2 Principios básicos de la memoria caché 4.1.1. Caché de varios niveles 4.1.2. Organizaciones: Completamente asociativa, Correspondencia directa y Asociativa por vías 4.1.3. Esquemas de funcionamiento. Escritura directa (Write Through) con asignación en escritura (Fetch on-write) y sin asignación en escritura. Post-escritura o escritura diferida 4.1.4. Algoritmos de sustitución 4.1.5. Coherencia caché 4.1.6. Ejemplos de cachés 4.3. La Memoria virtual 4.3.1.Funcionamiento de la memoria virtual: paginación, segmentación, segmentos paginados 4.3.2.Traducción de direcciones virtuales a direcciones físicas o reales 4.3.3. Unidad de gestión de la memoria (MMU) 4.3.4. Buffer de traducción anticipada (TLB) 4.4. Integración del sistema de memoria: el TLB y la caché 4.4.1. Sistema con caché virtual o caché real 5. SISTEMAS DE ENTRADA SALIDA E INTERCONEXION 5.1. Medidas de rendimiento de sistemas de entrada salida 5.2. Buses 5.3. Diseño de sistemas de E/S 5.4. Casos Reales |