Gabriel Enrique González · Transcript · · Updated
Arquitectura de Computadoras y Técnicas Digitales 2020 Clase: Introducción a los monoprocesadores – Transcript
Video by Gabriel Enrique González · Watch the original on YouTube

Use this video with Pro
Reading, copying and transcript downloads are free. Create saved AI results for this video with a signed-in Pro account ($9/month).
Transcript
Search ignores accents. All transcript text stays visible.
bueno vamos a empezar en este en este vídeo en este en esta presentación de filminas a ver el tema de paralelismo en mono procesadores son unas series de grupos de féminas en donde se tratan paralelismo en procesadores super escalares el tratamiento de multi threading y otros temas relacionados procesadores de
palabra muy larga sobre la instrucción word etcétera pero preferiría dar una pequeña introducción en una serie de comentarios generales una serie de introducciones de temas que a lo largo de los siguientes paquetes de filminas vamos a ir tratando sí
en principio digamos como para empezar desde el principio sí hay varias técnicas que se pueden aplicar para mejorar el rendimiento de un procesador en cursos anteriores vimos que podemos partir de un procesador totalmente combi nacional un procesador sin absolutamente ninguna mejora que del
grupo de instrucciones que tiene que ejecutar ejecuta de a una instrucción completa por vez tiene un ciclo de instrucción que dura cierta cantidad de tiempo que durante el cual ejecuta desde principio a fin o sea desde fecha la etapa de guardar los resultados toda la instrucción completa una mejora que vimos que se puede introducir en el
proceso para aumentar el rendimiento es aplicar segmentación de circuitos esto es dividir el circuito combinación al de la primera variante de procesador en varias etapas separadas con registros con algunas consideraciones eléctricas que hay que hacer pero eso permite que tengamos varias instrucciones en ejecución o sea tenemos un paralelismo
ya pero es un paralelismo temporal porque las diferentes instrucciones están en diferentes fases y etapas o estadios de su ejecución así vamos a tener que mientras una instrucción está en fecha y una instrucción previa a ella va a estar en decodificación una instrucción previa a ella va a estar en ejecución y así hasta que en algún momento haya alguna instrucción va a estar
etapa final en la etapa de guardado de resultados sí entonces ya empezamos a tener un paralelismo de instrucciones aunque con alguna consideración cada instrucción sigue tardando el mismo tiempo que tardaba en este procesador e incluso más por la introducción de mecanismos que permitan esta paralización temporal y lo que si el tiempo de ciclo acá genera un tiempo de ciclo de reloj
coincidente con el tiempo de ciclo de instrucción en cambio acá el tiempo de ciclo de reloj es coincidente con el tiempo de la etapa que más tarde entonces es un tiempo menor versión super escalar de esta implementación segmentada que sería la versión escalar de un procesador lo que hace es que el grupo de instrucciones
puede hacer el camino segmentado pero a través de diferentes rutas alternativas obviamente tiene que existir todo un mecanismo de sincronización entre las diferentes instrucciones porque ahora no sólo tenemos paralelismo temporal este que está dado por el mecanismo de segmentación sino que además tenemos paralelismo real paralelismo físico sí que es el que está dado por el hecho de
que diferentes instrucciones del mismo programa están en la misma etapa por ejemplo ejecución de codificación switching etcétera hay alguna variante de la versión super escalar que es la que se es una previa en todo caso a los procesadores super escalares aunque también hay diseños superadores a los super escalares que
son las arquitecturas con paralelismo de instrucción explícito sí pero los primeros procesadores que tenían algo de paralelismo eran los llamados procesadores de palabras muy larga o very long distribution word procesos que en realidad extienden el concepto de procesadores escalar a un comportamiento super escalar de qué manera en realidad
cada instrucción es una super instrucción armada por el continuador que contiene muchas operaciones por ejemplo tres operaciones tal como está dibujado acá de manera que el procesador va leyendo cada instrucción larga una por vez como si fuera un procesador escalar pero esa instrucción divide en varios en varias operaciones y
cada operación es enviada a una ruta super escalar predeterminada si es un avance son intermedios con este tipo de procesador no tiene mucho dinamismo el frenado de una operación frena las operaciones que están paralelas a ella hay ciertas limitaciones pero es no deja de ser un avance y si los comparamos respecto de sus
flujos de instrucciones en un procesador segmentado escalar hay emisión de instrucciones en cada ciclo si se emite una instrucción en el siguiente ciclo se emite otra de manera que hay un corrimiento hay una una superposición entre diferentes instrucciones que están en diferentes etapas por ejemplo acá la primera la primera está en su etapa de post escritura la segunda en su etapa de
memoria la tercera en su etapa de ejecución la cuarta en su etapa de decodificación sí y las limitaciones son buenos la frecuencia de emisión obviamente las paradas por riesgos aunque se puede llegar a una versión sin ningún tipo de detención aplicando estrategias de hardware combinadas con estrategias de reordenamiento en software sí y tiene mucha profundidad de
las unidades funcionales esto es las unidades funcionales son costosas porque cada unidad debe resolver todo tipo de operaciones la visión super escalar lo que tiene es que agrupa instrucciones en realidad de las instrucciones son instrucciones independientes pero se puede hacer lecturas de múltiples instrucciones esto es el festín en múltiples instrucciones y entonces el procesador ya tiene un grado mayor que uno y va trabajando con
grupos de instrucciones en paralelo si la característica principal entonces es la emisión múltiple de instrucciones para ejecución y las grandes limitaciones son la resolución de riesgos que es en todo caso mucho más compleja que en los procesadores escalares y la búsqueda de paralelismo a nivel de instrucciones sea el procesador tiene que estar buscando el paralelismo dinámicamente en sus núcleos de ejecución
la solución very long de instrucción word como dijimos lo que tiene es que se lee una super palabra de memoria entonces se hace una lectura de una única instrucción se decodifica una única instrucción y luego se emiten para ejecución múltiples operaciones para que hagan sus etapas posteriores hasta la terminación de todas ellas las características son que el
compilador determina el grado de paralelismo en realidad el compilador va a determinar el grado de paralelismo de función del procesador que tiene abajo el procesador de destino y está bien una vez que el procesador lo determina un grado y el procesador lo decide queda claro que en un procesador con cuatro rutas escalares podría existir la manera de que el compilador determina grados de paralelismo con un máximo de cuatro pero
podría haber sido 32 o sin paralelismo en una sola instrucción en ejecución e y queda claro que una instrucción implican múltiples operaciones si las limitaciones el empaquetamiento y la compatibilidad de código más adelante es algún paquete donde se estudia específicamente este tipo de procesadores y nos introduciremos más profundamente en estas temáticas
las formas de ejecución en distintas arquitecturas las podemos ver también agrupadas en otra forma podemos ver cómo se ejecutan instrucciones en un procesador super escalar en un procesador de granularidad fina en un procesador de granulares de la gruesa en un procesador con multi será de un simultáneo o en un núcleo de multi procesadores y donde éstos cada uno de
estos procesadores década de este núcleo multiprocesadores puede eventualmente llegar a ser un procesador súper escalar sí entonces teniendo diferentes tres ejecutándose en diferentes procesadores si en una configuración súper escalar y lo que tenemos es que siempre considerando que la evolución del tiempo desde la parte superior hacia la parte
inferior eventualmente va a haber cierta cantidad de disponibilidad de recursos de hardware por ejemplo 4 en este caso y de acuerdo al paralelismo que el procesador pueda ir encontrando en las instrucciones que va leyendo desde memoria puede encontrar mayor paralelismo en este caso dos instrucciones y quedan dos rutas ociosas en este caso una instrucción y quedan tres rutas escalares ociosas acá hay
tres instrucciones acá por alguna razón de bloqueos o algunas razones dependencias no se pueden emitir nuevas instrucciones de ejecución y así va evolucionando la ejecución en un procesador super escalar no es no es coincidencia este comportamiento que se describe en donde hay poca utilización de los núcleos de los
núcleos de cálculo porque realmente es difícil extraer el paralelismo en un programa que no está a priori pensados paralelismo hay programas que sí están pensados así como los programas matriciales programas con gráficos etcétera en donde hay mucho paralelismo explotable pero en un programa normal hay mucho menos paralelismo y mucho menos todavía si consideramos una
ventana de instrucciones relativamente chica el procesador no le mil instrucciones a la vez para ver cuáles son paralelas entre sí y te está diciendo de a cuatro me hacéis instrucciones etcétera entonces el paralelismo que puede extraer es poco así que esto es un comportamiento bastante normal con cómo se nota una eficiencia de uso de hardware no tan alta
las arquitecturas de granularidad fina si en realidad lo que hacen es empezar junto con la de granularidad de gruesas y las de simultáneas múltiple bien empezar a tratar de solucionar este problema introduciendo el concepto de que cuando tengo unidades escalares que están desaprovechadas sería bueno poder
incrementar el paralelismo metiendo instrucciones de otros extremos están esperando para su ejecución en el procesador este comportamiento super escalar presume que se les da un uso de tiempo determinado a cada tren en el comportamiento de granularidad final lo que se hace es a cada tren se le asigna
un único ciclo del reloj hay justificaciones para hacer eso las veremos en el paquete correspondiente de filminas entonces en el primer ciclo del reloj esta tarea con ladrillos rosados es la que toma el uso del procesador en el siguiente ciclo de reloj se desaloja esa tarea y ahí otra tarea a la red de que usa el procesador en el siguiente ciclo de reloj o una tercera tarea de una
cuarta y fíjense que en este ciclo del reloj entran tres nuevas instrucciones de la primer tarea que se había usado en el procesador y el ciclo vuelve a comenzar con las tareas verdes las naranjas y las marrones y vuelve a comenzar por tercera vez si se logra una utilización un poco mejor del hardware del procesador aunque todavía existen