Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Operaciones multiciclo
Introducción
Por ello los diseñadores cambiaron de paradigma haciendo que el sistema se sincronice en períodos más
pequeños y utilizaron los ciclos de reloj del sistema para sincronizar cada etapa de la ejecución de una
instrucción dando lugar a los procesadores multiciclo. En un comienzo cada etapa del ciclo de instrucción
era sincronizado con un ciclo de reloj, luego de acuerdo a las necesidades de cada instrucción hubo
variaciones en el sentido de que por ejemplo la etapa de ejecución de una instrucción dada requería de un
ciclo de reloj mientras que de otra requería más de un ciclo, dando lugar a la flexibilidad del sistema. Para
este tipo de procesadores se observó que un mismo elemento de hardware del sistema podía ser utilizado
en la ejecución de una instrucción por diferentes etapas del ciclo.
Esta funcionalidad de reutilización de hardware dio lugar a que los diseñadores propongan el procesador
segmentado, que como fue descrito permite ejecutar varias instrucciones de manera concurrente para
aumentar el rendimiento del sistema. Cabe señalar que en los procesadores segmentados una vez llenado
el sistema, por cada instrucción se utiliza en promedio un ciclo de reloj. Una ventaja es que las instrucciones
empiezan y terminan en orden.
Figura 13. Comparación en ejecución de instrucciones. Note que Reg representa Decode (Tirado & Hermida, 2012)
Caso típico
Las operaciones en punto flotante son un caso típico de operaciones multiciclo, especialmente para la etapa
de ejecución en donde se requiere añadir hardware adicional. En la figura 14 en donde se puede observar
que existe cuatro circuitos independientes para la etapa de ejecución: la unidad de ejecución de enteros, la
unidad de ejecución de multiplicación para enteros y punto flotante, la unidad de ejecución de suma de punto
flotante y la unidad de ejecución de división de enteros y punto flotante.
Figura 14. Ilustración de hardware adicional para operaciones multiciclo. (Tirado & Hermida, 2012)
Riesgos
Como se puede presumir en este caso habría solapamiento o ejecución concurrente de operaciones enteras
y de operaciones en punto flotante. En el caso de que operen con datos independientes no existiría ningún
riesgos, caso contrario se presentaría el riesgo de datos explicado en la sección anterior. Según el autor
Tirado (Tirado & Hermida, 2012), los riesgos de este tipo de operaciones multiciclo se resumen en los
siguientes:
Riesgos estructurales
En operaciones multiciclo existe una mayor penalización de los riesgos LDE o RAW (Read After Write). Esto
se debe a que una mayor duración en la ejecución de las instrucciones implicará más ciclos de detención
del procesador. Por lo tanto es indispensable planificar de mejor manera las instrucciones. Si bien es cierto
este tipo de riesgos también puede ser resuelto mediante la técnica de cortocircuito, los diseñadores
prefieren no implementarlo por la gran cantidad de circuitos lógicos necesarios para realizar las distintas
comparaciones. Adicionalmente, el tiempo que se encontraría bloqueado (stall) el sistema es muy grande.
Figura 16. Riesgo LDE en procesadores con operaciones multiciclo (Tirado & Hermida, 2012)
El mayor problema que tienen las operaciones multiciclo es la finalización fuera de orden( desordenada),
puesto que las instrucciones inician en orden y terminan en orden distinto al lanzamiento. La Figura 17 ilustra
la finalización de instrucciones en orden distinto al lanzamiento. Esta situación puede dar lugar a conflictos
por escritura simultánea en registros (riesgo estructural), a riesgos de datos tipo EDE o WAW (Write After
Write), o a incluso originar inconvenientes con las excepciones.
Figura 17. Finalización de instrucciones en orden distinto al lanzamiento (Tirado & Hermida, 2012)
Para solucionar estos posibles riesgos se puede utilizar las detenciones del sistema en diferentes etapas.
Por ejemplo, en caso de escritura simultánea de registros, se puede proponer que la instrucción que se
encuentra en la etapa de decodificación se detenga para dar prioridad de escritura a una instrucción emitida
previamente. También se podría detener el sistema en la etapa de ejecución dando prioridad de uso a la
unidad con mayor latencia (tiempo que una unidad funcional requiere para entregar el resultado de una
operación).
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0