Diferencia entre revisiones de «Organización del Computador II»
Línea 22: | Línea 22: | ||
*[[Medio:resumen_2p_orga2.pdf| Apuntes segundo parcial 2do cuatri 2017: System Programming]] | *[[Medio:resumen_2p_orga2.pdf| Apuntes segundo parcial 2do cuatri 2017: System Programming]] | ||
*[[Glosario de términos técnicos (Organización del Computador II)|Glosario de términos técnicos de la materia]] | *[[Glosario de términos técnicos (Organización del Computador II)|Glosario de términos técnicos de la materia]] | ||
*[[Media:Orga2_apunte_primera_parte_2019.pdf|Apunte de la primera parte de la materia 2019]] | *[[Media:Orga2_apunte_primera_parte_2019.pdf|Apunte de la primera parte de la materia 2019]] | ||
Revisión del 20:16 9 feb 2021
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
- 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.
- Resumen para el segundo parcial: Pequeño resumen de algunos elementos de la segunda parte de la materia para llevar al parcial como apoyo. Hecho para el primer cuatrimestre de 2019.
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/07/19 resuelto (parte 1) (parte 2)
- Parcial del 18/06/19
- Recuperatorio del 06/08/20 (resuelto)
Finales
- Final de 09/03/2018
- Final de 06/08/2019
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)
- 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
- ( Parte 1 | Parte 2 ): Todos los temas del final (2019) y resúmenes de los papers de Pentium 4, Hyper-Threading y Pentium M.
- ( Mapa Conceptual.png ): Mapa conceptual con todos los temas tratados por las diapositivas de Furfi y los papers que dá para leer. Basándome en cuando di el final, no se maten tanto estudiandose todos los temas de los papers al pie de la letra, pero está bueno tenerlos en cuenta quiza para entender más a fondo como funciona todo lo explicado por Furfi. Lamentablemente no logro subir el archivo .vue a la wiki por lo que no puedo pasarlo por si lo quieren editar/mejorar. (Claramente estudiar este mapa no cumpliría con la aprobación del exámen, pero sirve como índice usando el resto de resumenes ya aportados para saber donde encontrar cada tema). Los papers están ordenados de izquierda a derecha en el orden que los da Furfi en su lista de descarga (que es el mismo orden que el que aparece en esta wiki).
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 28 habla de Coherencia de Caché (minuto 1:05:20) y 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)