Organización del Computador II
Organización del Computador II es una materia dedicada al estudio de las arquitecturas IA-32 e IA-64 de Intel. Pertenece al área de Sistemas y, según el Plan de la Carrera, es una materia a ser cursada en Segundo año. Es correlativa de Organización del Computador I, y es requerida para cursar Sistemas Operativos.
Históricamente, esta materia se cursa los Martes y Jueves a la noche.
Contenidos
- IA32
- Operaciones básicas
- Direccionamiento a memoria
- Manejo de la pila y convencion C
- Aritmética de números grandes
- Strings
- Vectores y matrices
- MMX: Multimedia extension
- FPU: Floating point unit
- Listas enlazadas
Apuntes
- Apuntes primer parcial 03/10/2006: Clase del 03/10/2006 de Emilio Platzer con tips para el primer parcial.
- Apuntes segundo parcial 14/11/2006: Clase del 14/11/2006 de Emilio Platzer con tips para el segundo parcial. Temas: FPU y Listas.
- Apunte condensado de consulta para el segundo parcial.
- Apuntes segundo parcial 2do cuatri 2017: System Programming
- Glosario de términos técnicos de la materia
- Resumen de Instrucciones de IA-32: Resumen hecho a partir de extractos los manuales de Intel [Volumen 2] (2009).
- Apunte de la primera parte de la materia 2019
IA-32
- Ejercicios varios IA-32: Código assembler de funciones varias realizadas en el laboratorio.
- Práctica de Strings: Ejercicios de la práctica de strings.
- Práctica de Vectores y Matrices: Ejercicios de la práctica de vectores y matrices.
- Práctica de Aritmética: Ejercicios de la práctica de aritmética y relacionados.
- Operaciones sobre listas: Una posible manera de implementar en assembler varias operaciones sobre listas enlazadas.
- Manejo del stack (pila): Esquema para la creación de un stack frame.
- Ejemplo de FPU: Resolución del ejercicio 5 de la práctica de FPU. Nos muestra el manejo de la pila y el uso de las operaciones de la FPU.
IA-64 (Itanium)
Itanium ya no se da como tema desde que está Furfaro como profesor.
- Itanium for Dummies: También conocido como "No sé nada de Itanium, ¿Cómo empiezo?"
- Ejercicios varios Itanium: Código assembler de funciones varias realizadas en el laboratorio de Itanium. Incluye sumador y Fibonacci versión iterativa y recursiva.
- Rotación de Registros y Software Pipelining: Apuntes de clase sobre Rotación de registros con ejercicio de ejemplo, próximamente también Software Pipelining.
- SIMD: Apuntes de clase del 26/10/2006 sobre el set de instrucciones SIMD de Itanium.
- Software pipelining: Apuntes de clase software pipelining.
- Instrucciones de pipelining: Un mismo problema resuelto usando ctop, cexit, wtop y wexit para familiarizarse con estas instrucciones.
- Suma de vectores con Software Pipelining: Un pequeño ejemplo útil para encarar el tema.
- Mini-Tutorial de Software Pipelining: Un ejemplo de pipelining optimizando la escritura en el mismo vector que leemos.
- Ejemplo básico de Software Pipelining: Anónimo, cortesía de Fer (nadie lo probó, pero esta explicado).
- Software pipelining para el TP: Ejemplo de cómo tener en cuenta las latencias (la idea es que se use para el TP3).
- Arquitectura Itanium: Apuntes de las teóricas sobre las características generales de la arquitectura, a complementar con la presentación de la página.
Parciales
Primeros parciales
- Parcial del 10/10/06
- Parcial del 17/05/11
- Recuperatorio del 05/07/11
- Parcial del 11/10/11
- Recuperatorio del 01/12/11
- Parcial del 15/05/12
- Recuperatorio del 12/07/12
- Parcial del 09/10/12
- Recuperatorio del 04/12/12
- Parcial del 14/05/13
- Recuperatorio del 11/07/13
- Parcial del 01/10/13
- Recuperatorio del 19/11/13
- Parcial del 20/05/14
- Recuperatorio del 03/07/14
- Parcial del 07/10/14
- Recuperatorio del 25/11/14
- Parcial del 12/05/15
- Recuperatorio del 30/06/15
- Parcial del 01/10/15
- Recuperatorio del 01/12/15
- Parcial del 05/05/16 (resuelto)
- Recuperatorio del 07/07/16
- Parcial del 29/09/16
- Recuperatorio del 29/11/16
- Parcial del 11/05/17 (resuelto)
- Parcial del 03/10/17 (resuelto)
- Recuperatorio del 23/11/17 (resuelto)
- Parcial del 10/05/18 (resuelto)
- Recuperatorio del 28/06/18 (resuelto)
- Parcial del 2/10/18 (resuelto)
- Recuperatorio del 27/11/18 (resuelto)
- Parcial del 7/5/19 (resuelto)
Segundos parciales
- Parcial del 16/11/06
- Parcial del 28/06/11
- Recuperatorio del 12/07/11
- Parcial del 24/11/11
- Recuperatorio del 13/12/11
- Parcial del 26/06/12
- Recuperatorio del 19/07/12
- Parcial del 22/11/12
- Recuperatorio del 11/12/12
- Parcial del 27/06/13
- Parcial del 12/11/13
- Recuperatorio del 26/11/13
- Parcial del 24/06/14
- Recuperatorio del 10/07/14
- Parcial del 18/11/14
- Recuperatorio del 02/12/14
- Parcial del 23/06/15
- Recuperatorio del 07/07/15
- Parcial del 19/11/15 (resuelto)
- Recuperatorio del 10/12/15
- Parcial del 23/06/16
- Recuperatorio del 14/07/16
- Parcial del 17/11/16
- Recuperatorio del 06/12/16
- Parcial del 29/06/17 (resuelto)
- Recuperatorio del 27/07/17 (resuelto)
- Parcial del 14/11/17 (resuelto)
- Parcial del 21/06/18 (resuelto)
- Parcial del 15/11/18 (bastante resuelto) bis
- Parcial del 11/7/19 resuelto (parte 1) (parte 2)
Finales
- Final de 09/03/2018
Finales de Diciembre del 2006: Finales ya tomados en Diciembre del 2006.(precaución: en 2018 estos temas no se están tomando más)
Material para Finales
Recomendación (2018): Los finales de Alejandro Furfaro suelen ser orales (si no hay mucha gente, con más de 10 personas podés esperar que te tome escrito). Los orales duran 15-20 minutos y hace preguntas de microarquitectura: específicamente sobre coherencia de caché (protocolo MESI por ejemplo), predicción de saltos, y ejecución fuera de orden (algoritmo de Tomasulo). También suele tomar aplicaciones prácticas (microarquitectura P6, Netburst, HyperThreading, Pentium 4-M, Intel Core).
Empezar viendo los videos, luego completar información con las clases de Microarquitectura de Furfi, y recién ahí leer los papers que esperan leas para el final.
Resúmenes
- Resumen de temas y algunos papers: La parte de los papers esta mitad en ingles, mitad en castellano, se agreden aportes. Link a la fuente
- Resumen de microarquitectura y otros temas para el final (Straminsky)
- Resumen para el final (no aclara autor) : Contiene los latex y el pdf
- Autoevaluación modelo para preparar el final (lbarrios) (disclaimer: no son preguntas oficiales, son preguntas que se me ocurrieron mientras estudiaba, para luego poder hacer un simulacro de final y ver en qué puntos andaba flojo) Repositorio Github (Markdown) [PDF]
- Resumen (autoevaluación resuelta) (lbarrios) (disclaimer: no garantizo que las respuestas sean 100% correctas) Repositorio Github (Markdown) [PDF]
- Un resumen para el final de Orga 2 : con todos los temas. 2 errores conocidos: 1) El pipeline de forwarding puede estar mal por un ciclo de clock 2) en MESI: Mesi usa la linea RFO (NO LA SHARED) cuando un cache que tiene una linea modified tiene que decirle a otro que la quiere leer que espere a que la escriba en memoria
Videos
- Carnegie Mellon - Computer Architecture 2015 - Onur Mutlu: Videos sobre los temas del final (MUY recomendado). El link también incluye las clases en formato .ppt y .pdf para descargarse. Las clases (o lecturas) importantes son la 9, 10, 11 (Habla de ROB), 12 (Habla de Tomasulo), 13, 17 y 18 (la 29 habla de Snooping Protocols y MESI entre otras cosas).
- Hay un curso de HPCA (High Performance Computer Architecture) que incluye todos los temas que entran en este final. Son videos de muy corta duración cada uno (de 2 a 5 minutos) en donde cada video explica un tema particular de forma autocontenida. A mí me sirvieron mucho, recomiendo darles una oportunidad (como complemento al resto del material)
Papers
Estos son los papers que se espera que se lean:
- The Microarchitecture Of The Pentium 4 Processor
- Hyper-Threading Technology Architecture and Microarchitecture
- The Intel Pentium M Processor - Microarchitecture and Performance
- The Microarchitecture of the Intel Pentium 4 Processor on 90nm Technology
- Introduction to Intel Core Duo Architecture
- CMP Implementation in Systems based on the Intel Core Duo prosessor
- Original 45nm Intels Core 2 Processor Performance
- Improvements in the Intels Core 2 Penryn Processor Family Architecture and Microarchitecture
Material extra
- Pipelining and Superscalar execution : Paper sobre temas de microarquitectura para el final.
- Inside the Machine (Chapter 4): Superscalar Execution : Capitulo de muestra sobre ejecución superescalar para preparar el final.
Bibliografía / Temas
- Computer Architecture. A quantitative approach. Henessy & Patterson. Ed. Morgan Kaufman : Muy buen libro aunque se zarpa un poco con el alcance. Los capítulos son el 2 y el 4, y el apéndice A.
Temas para las fechas de final de Diciembre del 2006: Temas dados por Patricia para el final de Diciembre del 2006 y detalles sobre la bibliografía.(precaución: en 2018 estos temas no se están tomando más)
Recursos
- Planilla de stack trace FPU: Útil para ir explicando paso por paso el estado de la pila de FPU en el parcial.
- Planilla de stack trace FPU (fuente): Archivo fuente de la planilla, hecho en Inkscape SVG.
- Libros de Intel: Cómo conseguir gratuitamente una copia impresa de los libros de Intel de IA32 e IA64.
Enlaces externos
- Página oficial de la materia
- PC Assembly Language
- Art of Assembly
- Tabla de códigos x86
- Intel Itanium Architecture Software Developer's Manual - Volume 3: Instruction Set Reference
- Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 2A: Instruction Set Reference, A-M
- Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 2B: Instruction Set Reference, N-Z
- Índice de instrucciones de Felix Cloutier
- Otro índice de instrucciones, con mejores visualizaciones (especialmente para SIMD)