Diferencia entre revisiones de «Organización del Computador II»

De Cuba-Wiki
m (Agrego una web app para simular Tomasulo que hice con mucho cariño (? y puede serle útil a alguien)
 
(No se muestran 136 ediciones intermedias de 51 usuarios)
Línea 1: Línea 1:
{{Plan 1993|Arquitectura y Organización de Computadores}}
'''Organización del Computador II''' es una materia dedicada al estudio de las arquitecturas [[Organización del Computador II#IA-32|IA-32]] e [[Organización del Computador II#IA-64 (Itanium)|IA-64]] de Intel. Pertenece al área de [[Sistemas (Area)|Sistemas]] y, según el [[Plan de la Carrera]], es una materia a ser cursada en [[Plan de la Carrera#Segundo año|Segundo año]]. Es correlativa de [[Organización del Computador I]], y es requerida para cursar [[Sistemas Operativos]].
'''Organización del Computador II''' es una materia dedicada al estudio de las arquitecturas [[Organización del Computador II#IA-32|IA-32]] e [[Organización del Computador II#IA-64 (Itanium)|IA-64]] de Intel. Pertenece al área de [[Sistemas (Area)|Sistemas]] y, según el [[Plan de la Carrera]], es una materia a ser cursada en [[Plan de la Carrera#Segundo año|Segundo año]]. Es correlativa de [[Organización del Computador I]], y es requerida para cursar [[Sistemas Operativos]].


Línea 17: Línea 19:


== Apuntes ==
== Apuntes ==
*[[Apuntes primer parcial 03/10/2006 (Organización del Computador II)| Apuntes primer parcial 03/10/2006]]: Clase del 03/10/2006 de Emilio Platzer con tips para el primer parcial.
*[[Media:Orga2_apunte_primera_parte_2019.pdf|Apunte de la primera parte de la materia 2019]]
*[[Apuntes segundo parcial 14/11/2006 (Organización del Computador II)| Apuntes segundo parcial 14/11/2006]]: Clase del 14/11/2006 de Emilio Platzer con tips para el segundo parcial. Temas: FPU y Listas.
*[[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]]
*[https://docs.google.com/document/d/1G0Tnyp8jiwzN_cUHSDlw0IWKemfbwaV5N3zG2M8jQOk/edit#heading=h.pw1o7wj3m89b Apunte condensado de consulta para el segundo parcial.]
*[[Media:Resumen_Instrucciones_IA-32.pdf|Resumen de Instrucciones de IA-32]]: Resumen hecho a partir de extractos los manuales de Intel [Volumen 2] (2009).
*[[Medio:Orga2_resumen_2parcial.pdf| 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.
 
== IA-32 ==
*[[Ejercicios varios IA-32 (Organización del Computador II)| Ejercicios varios IA-32]]: Código assembler de funciones varias realizadas en el laboratorio.
*[[Práctica Strings (Organización del Computador II)| Práctica de Strings]]: Ejercicios de la práctica de strings.
*[[Práctica Vectores y Matrices (Organización del Computador II)| Práctica de Vectores y Matrices]]: Ejercicios de la práctica de vectores y matrices.
*[[Práctica de Aritmética (Organización del Computador II)| Práctica de Aritmética]]: Ejercicios de la práctica de aritmética y relacionados.
*[[Operaciones sobre listas (Organización del Computador II)|Operaciones sobre listas]]: Una posible manera de implementar en assembler varias operaciones sobre listas enlazadas.
*[[Manejo del stack (Organización del Computador II)|Manejo del stack (pila)]]: Esquema para la creación de un stack frame.
*[[Ejemplo de FPU (Organización del Computador II)|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 for Dummies (Organización del Computador II)| Itanium for Dummies]]: También conocido como ''"No sé nada de Itanium, ¿Cómo empiezo?"''
*[[Ejercicios varios Itanium (Organización del Computador II)| 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 (Organización del Computador II)| 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 (Organización del Computador II)| SIMD]]: Apuntes de clase del 26/10/2006 sobre el set de instrucciones SIMD de Itanium.
*[[Software pipelining (Organización del Computador II)| Software pipelining]]: Apuntes de clase software pipelining.
*[[Instrucciones de pipelining (Organización del Computador II)| Instrucciones de pipelining]]: Un mismo problema resuelto usando ctop, cexit, wtop y wexit para familiarizarse con estas instrucciones.
*[[Suma de vectores con Software Pipelining (Organización del Computador II)| Suma de vectores con Software Pipelining]]: Un pequeño ejemplo útil para encarar el tema.
*[[Mini-Tutorial de Software Pipelining (Organización del Computador II)| Mini-Tutorial de Software Pipelining]]: Un ejemplo de pipelining optimizando la escritura en el mismo vector que leemos.
*[[Media:sp_basico.pdf|Ejemplo básico de Software Pipelining]]: Anónimo, cortesía de Fer (nadie lo probó, pero esta explicado).
*[[Software pipelining para el TP (Organización del Computador II)| 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 (Organización del Computador II)|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 ==
== Parciales ==
===Primeros parciales===
===Primeros parciales===
*[[Parcial del 10/10/06 (Organización del Computador II)|Parcial del 10/10/06]]
 
*[[Medio:ORGA2 P1 1C 2011.pdf|Parcial del 15/05/11]]
{| class="wikitable sortable"
*[[Medio:ORGA2 P1 2C 2011.pdf|Parcial del 11/10/11]]
! Año  !! Cuatrimestre        !! Fecha      !! Instancia    !! Links
*[[Medio:ORGA2 P1 1C 2012.pdf|Parcial del 17/05/12]]
|-
*[[Medio:ORGA2 P1 1C 2013.pdf|Parcial del 14/05/13]]
|| 2023 || Segundo Cuatrimestre || 23/11/2023 || Recuperatorio || [https://git.exactas.uba.ar/avenegas/recu-primer-parcial-orga-ii enunciado + resolución]
*[[Medio:ORGA2 P1 2C 2013.pdf|Parcial del 01/10/13]]
|-
*[[Medio:ORGA2 P1 1C 2014.pdf|Parcial del 20/05/14]]
|| 2023 || Primer Cuatrimestre || 29/06/2023 || Recuperatorio || [https://git.exactas.uba.ar/slizarraga/recu1orga/-/tree/master enunciado + resolución]
|-
|| 2023 || Primer Cuatrimestre || 27/04/2023 || Parcial|| [https://github.com/Supermister47/1er-Parcial-Orga-II enunciado + resolución]
|-
|| 2022 || Segundo Cuatrimestre || 17/11/2022 || Recuperatorio || [https://github.com/sandromaestroni/orga2/tree/main/recu1 enunciado + resolución]
|-
|| 2022 || Segundo Cuatrimestre || 22/09/2022 || Parcial || [https://github.com/honi/uba-orga2/tree/main/parciales/01 enunciado + resolución]
|-
|| 2019 || Segundo Cuatrimestre || 07/06/2019 || Parcial || [[Medio:Orga2 1parcial 07-05-19.pdf| enunciado + resolución]]
|-
|| 2018 || Segundo Cuatrimestre || 17/11/2018 || Recuperatorio || [[Medio:Orga2_1recu_27-11-18_resuelto.pdf| enunciado + resolución]]
|-
|| 2018 || Segundo Cuatrimestre || 02/10/2018 || Parcial || [[Medio:Orga2_1parcial_2-10-18_resuelto.pdf| enunciado + resolución]]
|-
|| 2018 || Primer Cuatrimestre || 28/06/2018 || Recuperatorio || [[Medio:Orga2_1recu_28-06-18_resuelto.pdf| enunciado + resolución]]
|-
|| 2018 || Primer Cuatrimestre || 10/05/2018 || Parcial || [[Medio:Orga2_1parcial_10-05-18_resuelto.pdf| enunciado + resolución]]
|-
|| 2017 || Segundo Cuatrimestre || 23/11/2017 || Recuperatorio || [[Medio:Orga2_1recu_23-11-17_resuelto.pdf| enunciado + resolución]]
|-
|| 2017 || Segundo Cuatrimestre || 03/10/2017 || Parcial || [[Medio:Orga2_1parcial_03-10-17_resuelto.pdf| enunciado + resolución]]
|-
|| 2017 || Primer Cuatrimestre || 11/05/2017 || Parcial || [[Medio:Orga2-1P-11-05-17.pdf| enunciado + resolución]]
|-
|| 2016 || Segundo Cuatrimestre || 29/11/2016 || Recuperatorio || [[Medio:Orga2_1recu_29-11-16.pdf| enunciado + resolución]]
|-
|| 2016 || Segundo Cuatrimestre || 29/09/2016 || Parcial || [[Medio:Orga2_1parcial_29-09-16.pdf| enunciado + resolución]]
|-
|| 2016 || Primer Cuatrimestre || 07/07/2016 || Recuperatorio || [[Medio:Orga2_1recu_07-07-16.pdf| enunciado + resolución]]
|-
|| 2016 || Primer Cuatrimestre || 05/05/2016 || Parcial || [[Medio:Orga2_1parcial_05-05-16_resuelto.pdf| enunciado + resolución]]
|-
|| 2015 || Segundo Cuatrimestre || 17/11/2015 || Recuperatorio || [[Medio:Orga2_1recu_01-12-15.pdf|Recuperatorio del 01/12/15]]
|-
|| 2015 || Segundo Cuatrimestre || 17/11/2015 || Recuperatorio || [[Medio:Orga2_1parcial_01-10-15.pdf|Parcial del 01/10/15]]
|-
|| 2015 || Segundo Cuatrimestre || 17/11/2015 || Recuperatorio || [[Medio:Orga2_1recu_30-06-15.pdf|Recuperatorio del 30/06/15]]
|-
|| 2015 || Segundo Cuatrimestre || 17/11/2015 || Recuperatorio || [[Medio:Orga2_1parcial_12-05-15.pdf|Parcial del 12/05/15]]
|-
|| 2014 || Segundo Cuatrimestre || 17/11/2014 || Recuperatorio || [[Medio:Orga2_1recu_25-11-14.pdf|Recuperatorio del 25/11/14]]
|-
|| 2014 || Segundo Cuatrimestre || 17/11/2014 || Recuperatorio || [[Medio:Orga2_1parcial_07-10-14.pdf|Parcial del 07/10/14]]
|-
|| 2014 || Segundo Cuatrimestre || 17/11/2014 || Recuperatorio || [[Medio:Orga2_1recu_03-07-14.pdf|Recuperatorio del 03/07/14]]
|-
|| 2014 || Segundo Cuatrimestre || 17/11/2014 || Recuperatorio || [[Medio:ORGA2 P1 1C 2014.pdf|Parcial del 20/05/14]]
|-
|| 2013 || Segundo Cuatrimestre || 17/11/2013 || Recuperatorio || [[Medio:Orga2_1recu_19-11-13.pdf|Recuperatorio del 19/11/13]]
|-
|| 2013 || Segundo Cuatrimestre || 17/11/2013 || Recuperatorio || [[Medio:ORGA2 P1 2C 2013.pdf|Parcial del 01/10/13]]
|-
|| 2013 || Segundo Cuatrimestre || 17/11/2013 || Recuperatorio || [[Medio:Orga2_1recu_11-07-13.pdf|Recuperatorio del 11/07/13]]
|-
|| 2013 || Segundo Cuatrimestre || 17/11/2013 || Recuperatorio || [[Medio:ORGA2 P1 1C 2013.pdf|Parcial del 14/05/13]]
|-
|| 2012 || Segundo Cuatrimestre || 17/11/2012 || Recuperatorio || [[Medio:Orga2_1recu_04-12-12.pdf|Recuperatorio del 04/12/12]]
|-
|| 2012 || Segundo Cuatrimestre || 17/11/2012 || Recuperatorio || [[Medio:Orga2_1parcial_09-10-12.pdf|Parcial del 09/10/12]]
|-
|| 2012 || Segundo Cuatrimestre || 17/11/2012 || Recuperatorio || [[Medio:Orga2_1recu_12-07-12.pdf|Recuperatorio del 12/07/12]]
|-
|| 2012 || Segundo Cuatrimestre || 15/05/2012 || Recuperatorio || [[Medio:ORGA2 P1 1C 2012.pdf|Parcial del 15/05/12]]
|-
|| 2011 || Segundo Cuatrimestre || 01/12/2011 || Recuperatorio || [[Medio:Orga2_1recu_01-12-11.pdf|Recuperatorio del 01/12/11]]
|-
|| 2011 || Segundo Cuatrimestre || 11/10/2011 || Recuperatorio || [[Medio:ORGA2 P1 2C 2011.pdf|Parcial del 11/10/11]]
|-
|| 2011 || Segundo Cuatrimestre || 05/07/2011 || Recuperatorio || [[Medio:Orga2_1recu_05-07-11.pdf|Recuperatorio del 05/07/11]]
|-
|| 2011 || Segundo Cuatrimestre || 17/05/2011 || Recuperatorio || [[Medio:ORGA2 P1 1C 2011.pdf|Parcial del 17/05/11]]
|}


===Segundos parciales===
===Segundos parciales===
*[https://github.com/Supermister47/Parciales-Orga-II/blob/main/2do%20parcial.pdf Parcial del 22/06/23 (resuelto)]
*Parcial del 10/11/22 [[Medio:Orga2_2parcial_10-11-22_enunciado.pdf|(enunciado)]] [[Medio:Orga2_2parcial_10-11-22_resuelto.pdf|(resuelto)]] [[Medio:Orga2_2parcial_10-11-22_teorico.pdf|(enunciado+resuelto teórico)]]
*[[Medio:Orga2_2parcial_17-06-21.pdf|Parcial del 17/06/21 (resuelto)]]
*[[Medio:Orga2_2parcial_06-08-20.pdf|Recuperatorio del 06/08/20 (resuelto)]]
*[[Medio:Orga2_2parcial_18-06-19.pdf|Parcial del 18/06/19]]
*[[Medio:Orga2_2parcial_11-07-19_parte2.pdf|(parte 2)]][[Medio:Orga2_2parcial_11-07-19_parte1.pdf|Parcial del 11/07/19 resuelto (parte 1)]]
*[[Medio:Orga2_2parcial_15-11-18.pdf|Parcial del 15/11/18 (bastante resuelto)]] [[Medio:Orga2_2parcialbis_15-11-18_resuelto.pdf|bis]]
*[[Medio:Orga2_2parcial_21-06-18_resuelto.pdf|Parcial del 21/06/18 (resuelto)]]
*[[Medio:Orga2_2parcial_14-11-17_resuelto.pdf|Parcial del 14/11/17 (resuelto)]]
*[[Medio:Orga2_2recu_18-07-17.pdf|Recuperatorio del 27/07/17 (resuelto)]]
*[[Medio:Orga2_2parcial_29-06-17.pdf|Parcial del 29/06/17 (resuelto)]]
*[[Medio:Orga2_2recu_06-12-16.pdf|Recuperatorio del 06/12/16]]
*[[Medio:Orga2_2parcial_17-11-16.pdf|Parcial del 17/11/16]]
*[[Medio:Orga2_2recu_14-07-16.pdf|Recuperatorio del 14/07/16]]
*[[Medio:Orga2_2parcial_23-06-16.pdf|Parcial del 23/06/16]]
*[[Medio:Orga2_2recu_10-12-15.pdf|Recuperatorio del 10/12/15]]
*[[Medio:Orga2_2parcial_19-11-15.pdf|Parcial del 19/11/15 (resuelto)]]
*[[Medio:Orga2_2recu_07-07-15.pdf|Recuperatorio del 07/07/15]]
*[[Medio:Orga2_2parcial_23-06-15.pdf|Parcial del 23/06/15]]
*[[Medio:Orga2_2recu_02-12-14.pdf|Recuperatorio del 02/12/14]]
*[[Medio:Orga2_2parcial_18-11-14.pdf|Parcial del 18/11/14]]
*[[Medio:Orga2_2recu_10-07-14.pdf|Recuperatorio del 10/07/14]]
*[[Medio:ORGA2 P2 1C 2014.pdf|Parcial del 24/06/14]]
*[[Medio:ORGA2 R2 2C 2013.pdf|Recuperatorio del 26/11/13]]
*[[Medio:ORGA2 P2 2C 2013.pdf|Parcial del 12/11/13]]
*[[Medio:ORGA2 P2 1C 2013.pdf|Parcial del 27/06/13]]
*[[Medio:Orga2_2recu_11-12-12.pdf|Recuperatorio del 11/12/12]]
*[[Medio:ORGA2 P2 2C 2012.pdf|Parcial del 22/11/12]]
*[[Medio:Orga2_2recu_19-07-12.pdf|Recuperatorio del 19/07/12]]
*[[Medio:ORGA2 P2 1C 2012.pdf|Parcial del 26/06/12]]
*[[Medio:Orga2_2recu_13-12-11.pdf|Recuperatorio del 13/12/11]]
*[[Medio:ORGA2 P2 2C 2011.pdf|Parcial del 24/11/11]]
*[[Medio:Orga2_2recu_12-07-11.pdf|Recuperatorio del 12/07/11]]
*[[Medio:ORGA2 P2 1C 2011.pdf|Parcial del 28/06/11]]
*[[Parcial del 16/11/06 (Organización del Computador II)|Parcial del 16/11/06]]
*[[Parcial del 16/11/06 (Organización del Computador II)|Parcial del 16/11/06]]
*[[Medio:ORGA2 P2 1C 2011.pdf|Parcial del 28/06/11]]
*[[Medio:ORGA2 P2 2C 2011.pdf|Parcial del 24/11/11]]
*[[Medio:ORGA2 P2 1C 2012.pdf|Parcial del 26/06/12]]
*[[Medio:ORGA2 P2 2C 2012.pdf|Parcial del 22/11/12]]
*[[Medio:ORGA2 P2 1C 2013.pdf|Parcial del 27/06/13]]
*[[Medio:ORGA2 P2 2C 2013.pdf|Parcial del 12/11/13]]
*[[Medio:ORGA2 R2 2C 2013.pdf|Recuperatorio del 26/11/13]]
*[[Medio:ORGA2 P2 1C 2014.pdf|Parcial del 24/06/14]]


== Finales ==
== Finales ==
*[[Temas final Dic-2006 (Organización del Computador II)| 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.
*[[Orga2_final_09-03-18|Final de 09/03/2018]]
*[[Finales Dic-2006 (Organización del Computador II)| Finales de Diciembre del 2006]]: Finales ya tomados en Diciembre del 2006.
*[[Orga2_final_06-08-19|Final de 06/08/2019]]
*[[Media:Res_orga2.zip | Resumen para el final]] : Contiene los latex y el pdf
*[[Medio:Orga2_final_02-08-22.pdf |Final de 02/08/2022]]
*[[Orga2_final_28-02-23|Final de 28/02/2023]]
 
== 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/ReOrder Buffer).
 
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.
 
=== Oral ===
* Coherencia de Cache :
** Explicar cuándo empezamos a tener problemas con la coherencia y cuál es el problema de tener incoherentes la memoria con las caches.
** Explicar las diferentes políticas de escritura, comparándolas según el uso de procesador y el uso del bus. ¿Cuál es más apta para un sistema Monoprocesador y cuál para un sistema SMP? Justificar.
** Explicar cómo se podría utilizar Copy Back en un sistema SMP.
** ¿Qué entiende por snooping y con qué elementos se implementa?¿Cómo se complementa con el protocolo MESI?¿Qué cosas se tienen que agregar a nivel de HW para implementar MESI (snoop bus, Shared, RFO)?
** En el protocolo MESI, ¿qué significa el estado ''Modified''?
** MESI, tenés una línea en estado ''Shared'', ¿qué significa?¿Qué pasa si la querés escribir?¿Es impreciso?
** Si un procesador quiere leer una línea que él no tiene pero otro cache tiene en estado ''Modified'', ¿qué secuencia de cosas pasan? 
** ¿Qué pasa si un procesador escribe en una linea con ''Modified''?¿Cómo afecta a la performance si se usa un protocolo con Write/copy back comparado con Write through?
   
* Predicción de Saltos :
**¿Cómo funciona un predictor de saltos de 2 bits? Motivación y funcionamiento. Incluir diagrama y transiciones de estado.
** ¿En qué situaciones funciona bien un predictor de saltos de 2 bits y mal uno de 1 bit?
** ¿Por qué usar un predictor de 2 bits y no uno de 1 bit, 3 bits, spec89, etc?
 
* Ejecución Fuera de Orden
** Concepto y funcionamiento general.¿Qué nuevas dependencias se introducen con la ejecución fuera de orden?   
** Ventajas respecto de un esquema superescalar con ejecución en orden. Considerar que ambos modelos tienen la misma cantidad de vías de ejecución.
 
* Algoritmo de Tomasulo
** ¿Cuándo se debe stallear una instrucción?
** Explicar cuáles son los bloques de hardware que se agregan a un procesador superescalar, qué riesgos resuelve, y cómo funciona cada uno.
** ¿Qué elementos tiene una Reservation Station?
** ¿Cómo se establece la relación consumidor/productor según Tomasulo?¿Dónde está el tag o a qué hace referencia?
** Detallar secuencia de pasos para ejecutar una instrucción.
 
* Reorder Buffer
** ¿Qué le faltó al algoritmo de Tomasulo para tener excepciones precisas?
** ¿Qué elementos tiene un reorder buffer?
** Explicar la implementación de Intel del Algoritmo de Tomasulo en el Three Cores Engine, detallando cada parte involucrada.
 
=== Resúmenes ===
*[[Media:Resumen_orga_2.pdf | Apunte para el final (2021)]]
*[[Media:Resumen_orga_2_zamboni.pdf | Resumen de temas y algunos papers]]: La parte de los papers esta mitad en ingles, mitad en castellano, se agreden aportes. Link a la [https://github.com/Gian150/resumenes-uba/tree/master/Orga2 fuente]
*[[Media:Resumen_orga_2_-_Straminsky.pdf | 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) [https://github.com/lbarrios/orga2-final/blob/master/preguntas-final.md Repositorio Github (Markdown)] [[Medio:Orga2_cuestionario_lbarrios.pdf| [PDF]]]
**Resumen (autoevaluación resuelta) (lbarrios) (disclaimer: no garantizo que las respuestas sean 100% correctas) [https://github.com/lbarrios/orga2-final/blob/master/preguntas-final-resueltas.md Repositorio Github (Markdown)] [[Medio:Orga2_resumen_lbarrios.pdf| [PDF]]]
*[[Media:Resumen_para_el_Final_de_Orga_2.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
*([[ Media:Orga2_resumen_mivnisky2019_1.pdf | Parte 1 ]] | [[ Media:Orga2_resumen_mivnisky2019_2.pdf | Parte 2 ]]): Todos los temas del final (2019) y resúmenes de los papers de Pentium 4, Hyper-Threading y Pentium M.
*( [[Medio:Orga2_mapaConceptual_Borgnia.png|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 ===
* [https://campus.exactas.uba.ar/course/view.php?id=2492&section=1 Clases teóricas y prácticas del 2020-2021 (virtualidad)] No se necesita estar matriculado. Las teóricas son dadas por Furfaro así que los temas que entran en los finales que suele tomar él son los de las clases T04 y T05 (microarquitectura).
*[http://www.archive.ece.cmu.edu/~ece447/s15/doku.php?id=schedule 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 [https://www.youtube.com/watch?v=CkOPbj5KhP8&index=10&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq 9], [https://www.youtube.com/watch?v=NCUDEgLfC_I&index=11&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq 10], [https://www.youtube.com/watch?v=nMfbtzWizDA&index=13&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq 11] (Habla de ROB), [https://www.youtube.com/watch?v=P-mXr9adbCc&index=14&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq 12] (Habla de Tomasulo), [https://www.youtube.com/watch?v=z0EknfZdlIs&index=15&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq 13], [https://www.youtube.com/watch?v=AXf_C5qOm8o&index=19&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq 17] y [https://www.youtube.com/watch?v=4_Z07m8tf6k&index=20&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq 18] (la [https://youtu.be/JfjT1a0vi4E?t=3922 28] habla de Coherencia de Caché (minuto 1:05:20) y la [https://www.youtube.com/watch?v=X6DZchnMYcw&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq&index=33 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)
** Parte 1: [https://www.youtube.com/watch?v=tawb_aeYQ2g&list=PLAwxTw4SYaPmqpjgrmf4-DGlaeV0om4iP]
** Parte 2: [https://www.youtube.com/watch?v=z4rWk3VMtm4&list=PLAwxTw4SYaPkNw98-MFodLzKgi6bYGjZs]
** Parte 3: [https://www.youtube.com/watch?v=Oqfk7U2eaFY&list=PLAwxTw4SYaPnhRXZ6wuHnnclMLfg_yjHs]
 
=== Papers ===
 
Estos son los papers que se espera que se lean:
 
*[[Medio:Orga2_paper_pentium4.pdf| The Microarchitecture Of The Pentium 4 Processor]]
*[[Medio:Orga2_paper_hyper-threading.pdf| Hyper-Threading Technology Architecture and Microarchitecture]]
*[[Medio:Orga2_paper_pentiumM.pdf| The Intel Pentium M Processor - Microarchitecture and Performance]]
*[[Medio:Orga2_paper_pentium4-90nm.pdf| The Microarchitecture of the Intel Pentium 4 Processor on 90nm Technology]]
*[[Medio:Orga2_paper_duo.pdf| Introduction to Intel Core Duo Architecture]]
*[[Medio:Orga2_paper_cmp.pdf| CMP Implementation in Systems based on the Intel Core Duo prosessor]]
*[[Medio:Orga2_paper_duo-45nm.pdf| Original 45nm Intels Core 2 Processor Performance]]
*[[Medio:Orga2_paper_penyn.pdf| Improvements in the Intels Core 2 Penryn Processor Family Architecture and Microarchitecture]]
 
 
Material extra
 
*[[Media:Understanding_Pipelining_and_Superscalar_Execution.pdf | Pipelining and Superscalar execution]] : Paper sobre temas de microarquitectura para el final.
*[[Media:Understanding_Pipelining_and_Superscalar_Execution.pdf | Pipelining and Superscalar execution]] : Paper sobre temas de microarquitectura para el final.
*[http://www.nostarch.com/download/insidemachine_ch4.pdf Inside the Machine (Chapter 4): Superscalar Execution] : Capitulo de muestra sobre ejecución superescalar para preparar el final.
*[http://www.nostarch.com/download/insidemachine_ch4.pdf Inside the Machine (Chapter 4): Superscalar Execution] : Capitulo de muestra sobre ejecución superescalar para preparar el final.


== Recursos ==
=== Bibliografía / Temas ===
*[[Media:fpu_stack.pdf|Planilla de stack trace FPU]]: Útil para ir explicando paso por paso el estado de la pila de FPU en el parcial.
 
*[[Media:fpu_stack.svg|Planilla de stack trace FPU (fuente)]]: Archivo fuente de la planilla, hecho en [http://www.inkscape.org Inkscape SVG].
* 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.
*[[Cómo conseguir los libros de Intel (Organización del Computador II)| Libros de Intel]]: Cómo conseguir gratuitamente una copia impresa de los libros de Intel de IA32 e IA64.
 
=== Otros ===
*[https://tomobossi.github.io/tomosulo/ Simulador del algoritmo de Tomasulo] : Web app que permite simular la etapa de issue de instrucciones del algoritmo de Tomasulo, útil para validar soluciones a ejercicios típicos de final.


== Enlaces externos ==
== Enlaces externos ==
*[http://www.dc.uba.ar/people/materias/oc2 Página oficial de la materia]
*[https://www.felixcloutier.com/x86/index.html Índice de instrucciones de Felix Cloutier]
*[http://www.drpaulcarter.com/pcasm/pcasm-book-pdf.zip PC Assembly Language]
*[http://webster.cs.ucr.edu/AoA/Linux/aoapdf.tar.gz Art of Assembly]
*[http://www.jegerlehner.com/intel/IntelCodeTable_es.pdf Tabla de códigos x86]
*[http://www.jegerlehner.com/intel/IntelCodeTable_es.pdf Tabla de códigos x86]
*[http://download.intel.com/design/Itanium/manuals/24531905.pdf Intel Itanium Architecture Software Developer's Manual - Volume 3: Instruction Set Reference]
*[https://www.officedaytime.com/simd512e/simd.html Otro índice de instrucciones, con mejores visualizaciones (especialmente para SIMD)]
*[ftp://download.intel.com/design/Pentium4/manuals/25366621.pdf Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 2A: Instruction Set Reference, A-M]
*[ftp://download.intel.com/design/Pentium4/manuals/25366621.pdf Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 2A: Instruction Set Reference, A-M]
*[ftp://download.intel.com/design/Pentium4/manuals/25366721.pdf Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 2B: Instruction Set Reference, N-Z]
*[ftp://download.intel.com/design/Pentium4/manuals/25366721.pdf Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 2B: Instruction Set Reference, N-Z]
*[http://download.intel.com/design/Itanium/manuals/24531905.pdf Intel Itanium Architecture Software Developer's Manual - Volume 3: Instruction Set Reference]
*[http://www.drpaulcarter.com/pcasm/pcasm-book-pdf.zip PC Assembly Language]


[[Category:Materias]]
[[Category:Materias]]
[[Category:Computación]]
[[Category:Computación]]
[[Category:Sistemas]]
[[Category:Sistemas]]

Revisión actual - 13:18 24 sep 2024

Esta página es sobre la materia del plan de estudios 1993. Para ver la materia del plan 2023, consultar Arquitectura y Organización de Computadores.

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

Parciales

Primeros parciales

Año Cuatrimestre Fecha Instancia Links
2023 Segundo Cuatrimestre 23/11/2023 Recuperatorio enunciado + resolución
2023 Primer Cuatrimestre 29/06/2023 Recuperatorio enunciado + resolución
2023 Primer Cuatrimestre 27/04/2023 Parcial enunciado + resolución
2022 Segundo Cuatrimestre 17/11/2022 Recuperatorio enunciado + resolución
2022 Segundo Cuatrimestre 22/09/2022 Parcial enunciado + resolución
2019 Segundo Cuatrimestre 07/06/2019 Parcial enunciado + resolución
2018 Segundo Cuatrimestre 17/11/2018 Recuperatorio enunciado + resolución
2018 Segundo Cuatrimestre 02/10/2018 Parcial enunciado + resolución
2018 Primer Cuatrimestre 28/06/2018 Recuperatorio enunciado + resolución
2018 Primer Cuatrimestre 10/05/2018 Parcial enunciado + resolución
2017 Segundo Cuatrimestre 23/11/2017 Recuperatorio enunciado + resolución
2017 Segundo Cuatrimestre 03/10/2017 Parcial enunciado + resolución
2017 Primer Cuatrimestre 11/05/2017 Parcial enunciado + resolución
2016 Segundo Cuatrimestre 29/11/2016 Recuperatorio enunciado + resolución
2016 Segundo Cuatrimestre 29/09/2016 Parcial enunciado + resolución
2016 Primer Cuatrimestre 07/07/2016 Recuperatorio enunciado + resolución
2016 Primer Cuatrimestre 05/05/2016 Parcial enunciado + resolución
2015 Segundo Cuatrimestre 17/11/2015 Recuperatorio Recuperatorio del 01/12/15
2015 Segundo Cuatrimestre 17/11/2015 Recuperatorio Parcial del 01/10/15
2015 Segundo Cuatrimestre 17/11/2015 Recuperatorio Recuperatorio del 30/06/15
2015 Segundo Cuatrimestre 17/11/2015 Recuperatorio Parcial del 12/05/15
2014 Segundo Cuatrimestre 17/11/2014 Recuperatorio Recuperatorio del 25/11/14
2014 Segundo Cuatrimestre 17/11/2014 Recuperatorio Parcial del 07/10/14
2014 Segundo Cuatrimestre 17/11/2014 Recuperatorio Recuperatorio del 03/07/14
2014 Segundo Cuatrimestre 17/11/2014 Recuperatorio Parcial del 20/05/14
2013 Segundo Cuatrimestre 17/11/2013 Recuperatorio Recuperatorio del 19/11/13
2013 Segundo Cuatrimestre 17/11/2013 Recuperatorio Parcial del 01/10/13
2013 Segundo Cuatrimestre 17/11/2013 Recuperatorio Recuperatorio del 11/07/13
2013 Segundo Cuatrimestre 17/11/2013 Recuperatorio Parcial del 14/05/13
2012 Segundo Cuatrimestre 17/11/2012 Recuperatorio Recuperatorio del 04/12/12
2012 Segundo Cuatrimestre 17/11/2012 Recuperatorio Parcial del 09/10/12
2012 Segundo Cuatrimestre 17/11/2012 Recuperatorio Recuperatorio del 12/07/12
2012 Segundo Cuatrimestre 15/05/2012 Recuperatorio Parcial del 15/05/12
2011 Segundo Cuatrimestre 01/12/2011 Recuperatorio Recuperatorio del 01/12/11
2011 Segundo Cuatrimestre 11/10/2011 Recuperatorio Parcial del 11/10/11
2011 Segundo Cuatrimestre 05/07/2011 Recuperatorio Recuperatorio del 05/07/11
2011 Segundo Cuatrimestre 17/05/2011 Recuperatorio Parcial del 17/05/11

Segundos parciales

Finales

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/ReOrder Buffer).

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.

Oral

  • Coherencia de Cache :
    • Explicar cuándo empezamos a tener problemas con la coherencia y cuál es el problema de tener incoherentes la memoria con las caches.
    • Explicar las diferentes políticas de escritura, comparándolas según el uso de procesador y el uso del bus. ¿Cuál es más apta para un sistema Monoprocesador y cuál para un sistema SMP? Justificar.
    • Explicar cómo se podría utilizar Copy Back en un sistema SMP.
    • ¿Qué entiende por snooping y con qué elementos se implementa?¿Cómo se complementa con el protocolo MESI?¿Qué cosas se tienen que agregar a nivel de HW para implementar MESI (snoop bus, Shared, RFO)?
    • En el protocolo MESI, ¿qué significa el estado Modified?
    • MESI, tenés una línea en estado Shared, ¿qué significa?¿Qué pasa si la querés escribir?¿Es impreciso?
    • Si un procesador quiere leer una línea que él no tiene pero otro cache tiene en estado Modified, ¿qué secuencia de cosas pasan?
    • ¿Qué pasa si un procesador escribe en una linea con Modified?¿Cómo afecta a la performance si se usa un protocolo con Write/copy back comparado con Write through?
  • Predicción de Saltos :
    • ¿Cómo funciona un predictor de saltos de 2 bits? Motivación y funcionamiento. Incluir diagrama y transiciones de estado.
    • ¿En qué situaciones funciona bien un predictor de saltos de 2 bits y mal uno de 1 bit?
    • ¿Por qué usar un predictor de 2 bits y no uno de 1 bit, 3 bits, spec89, etc?
  • Ejecución Fuera de Orden
    • Concepto y funcionamiento general.¿Qué nuevas dependencias se introducen con la ejecución fuera de orden?
    • Ventajas respecto de un esquema superescalar con ejecución en orden. Considerar que ambos modelos tienen la misma cantidad de vías de ejecución.
  • Algoritmo de Tomasulo
    • ¿Cuándo se debe stallear una instrucción?
    • Explicar cuáles son los bloques de hardware que se agregan a un procesador superescalar, qué riesgos resuelve, y cómo funciona cada uno.
    • ¿Qué elementos tiene una Reservation Station?
    • ¿Cómo se establece la relación consumidor/productor según Tomasulo?¿Dónde está el tag o a qué hace referencia?
    • Detallar secuencia de pasos para ejecutar una instrucción.
  • Reorder Buffer
    • ¿Qué le faltó al algoritmo de Tomasulo para tener excepciones precisas?
    • ¿Qué elementos tiene un reorder buffer?
    • Explicar la implementación de Intel del Algoritmo de Tomasulo en el Three Cores Engine, detallando cada parte involucrada.

Resúmenes

  • Apunte para el final (2021)
  • 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]
  • 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

  • Clases teóricas y prácticas del 2020-2021 (virtualidad) No se necesita estar matriculado. Las teóricas son dadas por Furfaro así que los temas que entran en los finales que suele tomar él son los de las clases T04 y T05 (microarquitectura).
  • 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:


Material extra

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.

Otros

  • Simulador del algoritmo de Tomasulo : Web app que permite simular la etapa de issue de instrucciones del algoritmo de Tomasulo, útil para validar soluciones a ejercicios típicos de final.

Enlaces externos