La segmentación es una técnica de implementación por la cual se solapa la ejecución de múltiples instrucciones. Hoy en día, la segmentación es la técnica de implementación clave utilizada para hacer CPU rápidas. La segmentación es como una línea de ensamblaje: Cada etapa de la segmentación completa una parte de la instrucción. Cada uno de estos pasos se define como etapa de la segmentación o segmento. Las etapas están conectadas, cada una a la siguiente, para formar una especie de cauce las instrucciones se entran por un extremo, son procesadas a través de las etapas y salen por el otro extremo.
La productividad de la segmentación está determinada por la frecuencia con que una instrucción salga del cauce. Como las etapas están conectadas entre sí, todas las etapas deben estar listas para proceder al mismo tiempo. El tiempo requerido para desplazar una instrucción, un paso, a lo largo del cauce es un ciclo máquina. La duración de un ciclo máquina está determinada por el tiempo que necesita la etapa más lenta (porque todas las etapas progresan a la vez). Con frecuencia, el ciclo máquina es un ciclo de reloj (a veces dos, o raramente más), aunque el reloj puede tener múltiples fases.
El objetivo del diseñador es equilibrar la duración de las etapas de la segmentación. Si las etapas están perfectamente equilibradas, entonces el tiempo por instrucción de la máquina segmentada -suponiendo condiciones ideales es igual a:
Tiempo por instrucción en la máquina no segmentada ÷ Número de etapas de la segmentación.
Bajo estas condiciones, la mejora de velocidad debida a la segmentación es igual al número de etapas. Sin embargo, habitualmente, las etapas no están perfectamente equilibradas; además, la segmentación involucra algún gasto. Así, el tiempo por instrucción en la máquina segmentada no tendrá su valor mínimo posible, aunque pueda estar próximo.
La segmentación consigue una reducción en el tiempo de ejecución medio por instrucción. Esta reducción se puede obtener decrementando la duración del ciclo de reloj de la máquina segmentada o disminuyendo el número de ciclos de reloj por instrucción, o haciendo ambas cosas. Normalmente, el mayor impacto está en el número de ciclos de reloj por instrucción, aunque el ciclo de reloj es, con frecuencia, más corto en una máquina segmentada (especialmente en supercomputadores segmentados).
La segmentación es una técnica de implementación, que explota el paralelismo entre las instrucciones de un flujo secuencial. Tiene la ventaja sustancial que, de forma distinta a algunas técnicas de aumento de velocidad, no es visible al programador.
En brevedad, las arquitecturas segmentadas o con segmentación del cauce buscan mejorar el desempeño realizando paralelamente varias etapas del ciclo de instrucción al mismo tiempo.
Un ciclo de instrucción (también llamado ciclo de fetch-and-executeo ciclo de fetch-decode-executeen inglés) es el período que tarda la unidad central de proceso (CPU) en ejecutar una instrucción de lenguaje máquina.
Comprende una secuencia de acciones determinada que debe llevar a cabo la CPU para ejecutar cada instrucción en un programa.
Cada instrucción del juego de instrucciones de una CPU puede requerir diferente número de ciclos de instrucción para su ejecución.
Un ciclo de instrucción está formado por uno o más ciclos máquina. Arquitecturas Segmentadas.
El tamaño de las instrucciones no está relacionado con el de los datos, y por lo tanto puede ser optimizado para que cualquier instrucción ocupe una sola posición de memoria de programa, logrando así mayor velocidad y menor longitud de programa.
El tiempo de acceso a las instrucciones puede superponerse con el de los datos, logrando una mayor velocidad en cada operación.
Hay situaciones en la segmentación cuando la siguiente instrucción no se puede ejecutar en el próximo ciclo de reloj.
Existen tres tipos de riesgos:
Riesgos Estructurales: El hardware no puede manejar la combinación de instrucciones que deben ejecutarse en el mismo ciclo. (suponiendo que se cuenta con una única memoria).
Riesgos de Control: Los riesgos en el control ocurren porque el procesador no “sabe” lo suficiente.
Riesgos de Datos: Ocurren porque una instrucción depende del resultado de una instrucción previa en el segmento