Anda di halaman 1dari 13

Segmentación, generalidades (Parte I)

Quedó referenciado en el artículo


anterior,, así que aquí está (la primera
parte, ya el enlace está corregido). De
nuevo, usamos los términos, tubería,
segmentación o incluso
pipeliningindistintamente
indistintamente y si se les
hace confuso, lean este
completamente, aquí viene explicado
con manzanitas (bueno, con SUVs de hecho). El origin
original
al lo pueden encontrar aquí, es
deArstechnica (como el anterior) el autor es Jon Stokes.. Hoy es lunes, así que les saludo y
provecho!

Entendiendo el rendimiento de la segmentación


El Pentium 4 original fue un diseño radical por una serie de razones, pero quizás su
característica más notable y controvertida, fue su segmentación extraordinariamente
profunda. Con más de 20 etapas, la segmentación del P4 casi doblaba la profundidad de la
segmentación de los competidores. Recientemente Prescott,, su sucesor de 90nm, llevó la
segmentación al siguiente nivel al agregar otras 10 etapas a la ya increíblemente larga
segmentación
n del Pentium 4.
La estrategia de Intel de profundizar la segmentación del Pentium 4, una práctica que Intel
llama "hyperpipelining",
", ha dado sus frutos en términos de rendimiento, pero no deja
de tener sus inconvenientes. En artículos anteriores sobre el Pentium 4 y Prescott, me he
referido a las desventajas asociadas con segmentaciones profundas, e incluso he tratado de
explicar estos inconvenientes en el contexto de artículos técnicos mas extensos
sobre Netburst y otros temas. En la presente serie de artículos, quiero dedicar un tiempo a
explicar la segmentación, su efecto sobre el rendimiento de los microprocesadores, y sus
desventajas potenciales. Te llevaré a través de una introducción básica al concepto de
segmentación
gmentación y, a continuación voy a explicar lo que se requiere para hacer segmentación
con éxito y qué dificultades enfrentan los diseños de segmentaciones profundas como
Prescott. Al final del artículo, usted tendrá una idea clara sobre cómo se

http://www.tecnodelinglesalcastellano.com
relaciona exactamente la profundidad de la segmentación con el rendimiento del
microprocesador en los diferentes tipos de código.
Tenga en cuenta que si usted lee un artículo anterior mío de hace unos años titulado
"Descripción de la segmentación y ejecución superescalar", encontrará en la primera parte
de este texto específicamente la analogía con la línea de montaje vagamente familiar. El
presente artículo se basa en parte en que el artículo anterior, pero se ha rediseñado desde
cero para ser más claro, más preciso y más actualizado.

El ciclo de vida de una instrucción


La acción básica de cualquier microprocesador a medida que se mueve a través del flujo de
instrucciones puede dividirse en una serie de cuatro sencillos pasos, que cada instrucción
en el flujo de código atraviesa a fin de ser ejecutada:

1.- Obtener (fetch) la siguiente instrucción de la dirección almacenada en el contador de


programa.
2.- Almacenar esta instrucción en el registro de instrucciones y decodificarlo, e
incrementar la dirección en el contador de programa.
3.- Ejecutar la operación que está actualmente en el registro de instrucciones. Si la
instrucción no es una instrucción de salto, sino una instrucción aritmética, enviarla a
la ALU adecuada.
a). Leer el contenido de los registros de entrada.
b). Agregue el contenido de los registros de entrada.
4.- Escribir los resultados de la instrucción desde la ALU hacia el registro de destino.

En un procesador moderno, los cuatro pasos anteriores se repiten una y otra vez hasta que
el programa termina de ejecutarse. Estos son, de hecho, las cuatro etapas en
la segmentación RISC clásica. (Voy a definir el término "segmentación" en breve, por
ahora, sólo piense en la segmentación como una serie de etapas que cada instrucción en la
secuencia de código debe atravesar cuando el flujo de código está siendo ejecutado.) Aquí
están las cuatro etapas en su forma abreviada, la forma que usted verá más a menudo:

1. Obtener (fetch)
2. Decodificar
3. Ejecutar

http://www.tecnodelinglesalcastellano.com
4. Escribir (o "write-back")

Se puede decir que cada una de las etapas anteriores representa una fase en el "ciclo de
vida" de una instrucción. Una instrucción comienza en la fase de obtención (fetch), se
mueve a la fase de decodificación, luego a la fase de ejecución, y finalmente a la fase de
escritura. Cada fase toma una cantidad de tiempo fijo, pero de ninguna manera igual. En la
mayoría de los procesadores de ejemplo con los que vamos a estar trabajando en este
artículo, las cuatro fases toman una cantidad igual de tiempo, lo cual no suele ser el caso de
los procesadores en el mundo real. En cualquier caso, si un procesador sencillo de ejemplo
tarda exactamente un nanosegundo para completar cada fase, entonces, el procesador que
puede terminar una instrucción cada 4 nanosegundos.

Segmentación básica: una analogía


En esta sección utilizaremos la analogía de una fábrica para explicar la segmentación.
Otras personas utilizan analogías mas simples, como lavar la ropa, por ejemplo, para
explicar esta técnica, pero hay algunas razones por las que elegí una analogía más
elaborada y extensa para ilustrar lo que es en su raíz, un concepto relativamente simple. En
primer lugar, las fábricas basadas en lineas de montaje son fáciles de visualizar para los
lectores y hay mucho espacio para imágenes mentales interesantes con el fin de enfocar
una variedad de puntos relacionados. En segundo lugar, y quizás más importante aún, los
muchos problemas relacionados con programación (scheduling), colas y administración de
recursos que enfrentan los diseñadores de fábricas tienen analogías directas con la
arquitectura de computadores. En muchos casos, los problemas y las soluciones son
exactamente iguales, trasladadas simplemente a dominios diferentes. (Tenga en cuenta
que ciertos pares de problemas/soluciones similares relacionados con colas también
surgen en la industria de los servicios, por lo que las analogías relativas a supermercados y
restaurantes de comida rápida también son mis favoritas.)
Digamos que mis amigos y yo hemos decidido entrar en el negocio de fabricación de
automóviles, y que nuestro primer producto va a ser un vehículo deportivo utilitario (SUV).
Después de algunas investigaciones, determinamos que hay cinco etapas en el proceso de
construcción del SUV:

Etapa 1: Construir el chasis.


Etapa 2: Colocar el motor en el chasis.

http://www.tecnodelinglesalcastellano.com
Etapa 3: Poner puertas, una capucha, y las cubiertas en el chasis.
Etapa 4: Montar las ruedas.
Etapa 5: Pintar el SUV.

Cada una de las etapas anteriores requiere el uso de trabajadores altamente capacitados y
con habilidades muy especializadas, con el resultado de que los trabajadores que son
buenos en la construcción de chasis no saben mucho acerca de motores, carrocería, ruedas,
o pintura, y también sucede así con los constructores de motores, los pintores, y los otros
equipos. Así que cuando hacemos nuestro primer intento de montar una fábrica de SUV,
contratamos y capacitamos cinco equipos de especialistas, uno para cada etapa del proceso
de construcción del SUV. Hay un equipo para construir el chasis, uno para montar el
motor, otro para las ruedas, y un equipo de pintura. Por último, ya que los equipos son tan
especializados y eficientes, cada etapa del proceso de construcción del SUV le toma a un
equipo exactamente una hora para completarse.
Ahora bien, como mis amigos y yo somos gente de computadoras y no ingenieros
industriales, tenemos mucho que aprender sobre cómo hacer un uso eficiente de los
recursos de la fábrica. Hemos basado el funcionamiento de nuestra primera fábrica en el
siguiente plan: ubicar los cinco equipos en una línea en el piso de la fábrica, y que el primer
equipo empiece una camioneta en la Etapa 1. Después que la etapa 1 se completa, el equipo
de la etapa 1 pasa el SUV parcialmente terminado al equipo de la etapa 2 y luego se va a la
sala de descanso para jugar un futbolín, mientras que el equipo de la etapa 2 fabrica y
monta el motor. Una vez que el equipo de la etapa 2 concluye, la camioneta continua hacia
la Etapa 3 y el equipo 3 se hace cargo, mientras que el equipo 2 se une al equipo 1 en la sala
de descanso.
El SUV se mueve en la línea a través de las cinco etapas de esta manera, con un solo equipo
de trabajo en un mismo escenario en un momento dado, mientras que el resto de los
equipos están inactivos. Una vez que el SUV concluye la fase 5, el equipo de la etapa 1
entonces, comienza el otro SUV. A este ritmo, se necesitan exactamente cinco horas para
terminar un SUV único, y nuestra fábrica completa una SUV cada cinco horas. ?

Adelantémonos un año. Nuestra SUV, el Extinction LE, se está vendiendo como ... bueno,
se está vendiendo como un SUV, lo que significa que lo está haciendo bastante bien. De
hecho, nuestro SUV se está vendiendo tan bien que hemos llamado la atención de los

http://www.tecnodelinglesalcastellano.com
militares y han ofrecido un contrato para proveer SUVs para el Ejército de EE.UU a un
ritmo continuo. Al Ejército le gusta ordenar múltiples SUVs a la vez, puede haber una
orden para 10 SUVs, y otra orden puede ser para 500 vehículos SUV. Mientras más
órdenes podamos llenar cada año fiscal, más dinero podemos hacer durante ese mismo
período y nuestro balance será mejor. Esto, por supuesto, significa que vamos a querer
encontrar una manera de aumentar el número de SUVs que nuestra fábrica puede
completar por hora (es decir, la tasa de terminación de nuestra fábrica de SUVs). Al
completar más SUVs por hora, podemos llenar las órdenes del Ejército más rápido y ganar
más dinero cada año.
La manera más intuitiva de aumentar la tasa de completamiento de nuestra fábrica de SUV
sería tratar de disminuir el tiempo de producción de cada camioneta. Si pudiéramos
conseguir que los equipos trabajen el doble de rápido, entonces, nuestra fábrica podrá
producir el doble de SUVs en la misma cantidad de tiempo. Nuestros equipos están
trabajando tan duro como pueden, de manera que, a menos que haya un avance
tecnológico que incremente la productividad esta opción está fuera de la mesa por ahora.

Puesto que no podemos acelerar nuestro personal, siempre podemos utilizar el método de
la fuerza bruta, y meterle dinero al problema mediante la construcción de una segunda
línea de montaje. Si fuéramos a contratar y capacitar cinco equipos nuevos para formar
una segunda línea de montaje, que también fuera capaz de producir un coche cada cinco
horas, podríamos completar un total de dos camionetas cada cinco horas en el piso de la
fábrica, el doble de la tasa de terminación de SUVs de la fábrica actual. Esto no parece un
uso muy eficiente de los recursos de la fábrica, dado que, ya no sólo tenemos el doble de
equipos que trabajan a la vez, sino que también tendríamos el doble de equipos en la sala
de descanso a la vez. Tiene que haber una manera mejor.
Ante la falta de opciones, contratamos a un equipo de consultores para hallar una forma
inteligente de incrementar la productividad general de la fábrica sin la necesidad de
duplicar el número de equipos o de aumentar la productividad de cada equipo individual.
Un año y miles de horas facturables más tarde, a los consultores se le ocurrió una solución.
¿Por qué dejar que nuestros equipos malgasten cuatro quintas partes de su jornada de
trabajo en la sala de descanso, cuando podrían estar haciendo un trabajo útil durante ese
tiempo? Con la programación adecuada de los actuales cinco equipos, nuestra fábrica
podría completar un SUV cada hora, y así mejorar drásticamente tanto la eficiencia como

http://www.tecnodelinglesalcastellano.com
el rendimiento de nuestra línea de montaje. El flujo de trabajo revisado se vería de la
siguiente manera:
El equipo de la etapa 1 construye un chasis. Una vez que el chasis es completado, lo
envían al equipo de la etapa 2. La Etapa 2 de la tripulación recibe el chasis y comienza a
montar el motor, mientras que el equipo de la etapa 1 inicia un nuevo chasis. Cuando
ambos equipos hayan terminado, el trabajo del equipo de la etapa 2 avanza hacia la etapa
3, los avances del trabajo del equipo de la etapa 1 pasan al equipo de la etapa 2, y el equipo
de la etapa 1 inicia un nuevo chasis.

Así a medida que la línea de montaje comienza a llenarse de SUVs en diversas etapas de
producción, más equipos se ponen a trabajar simultáneamente hasta que todos los equipos
están trabajando en un vehículo diferente en una etapa diferente de la producción. (Por
supuesto, así es como la mayoría de nosotros hoy en día, en la era post-Ford, esperamos
que funcione una linea de ensamblaje eficiente.) Si podemos mantener la línea de montaje
llena, y mantener los cinco equipos trabajando a la vez, entonces, podemos producir un
SUV cada hora: una mejora de cinco veces en la tasa de terminación de SUV sobre la tasa
de terminación anterior de un SUV de cada cinco horas. Eso, en pocas palabras, es la
segmentación.
Mientras que la cantidad total de tiempo que cada SUV individual pasa en la producción no
ha cambiado desde el original, 5 horas, la velocidad a la que la fábrica en su conjunto
completa los SUVs, y por lo tanto la velocidad a la que la fábrica puede cumplir las órdenes
del Ejército de los lotes de SUVs, ha aumentado drásticamente. La segmentación hace su
magia haciendo un uso óptimo de los recursos ya existentes. No necesitamos acelerar cada
una de las etapas del proceso de producción, ni tenemos necesidad de aumentar
drásticamente la cantidad de recursos que gastamos en el problema, todo lo necesario es
trabajar mas con los recursos que ya tenemos.

Llevando la discusión de nuevo a los microprocesadores, será fácil ver cómo este concepto
se aplica a las cuatro fases del ciclo de vida de una instrucción. Al igual que los propietarios
de la fábrica en nuestra analogía querían aumentar el número de SUVs que la fábrica
podría terminar en un período determinado de tiempo, los diseñadores de
microprocesadores están siempre buscando maneras de aumentar el número de
instrucciones que una CPU puede completar en un determinado período de tiempo.

http://www.tecnodelinglesalcastellano.com
Cuando recordamos que un programa es una secuencia ordenada de instrucciones,
entonces es claro que el aumento del número de instrucciones ejecutadas por unidad de
tiempo es una manera de disminuir la cantidad total de tiempo que se tarda en ejecutar un
programa. En términos de nuestra analogía, un programa es como una orden de SUVs de
los militares, al igual que aumentar la producción de nuestra fábrica de camionetas por
hora nos ha permitido cumplir con los pedidos más rápido, aumentar la tasa de realización
de instrucciones de nuestro procesador (es decir, el número de instrucciones completadas
por unidad de tiempo) nos permite ejecutar programas más rápidamente.

Un ejemplo sin segmentación.


Los primeros, procesadores sin "segmentación" trabajaban en una instrucción a la vez,
moviendo cada instrucción a través de las cuatro fases de su ciclo de vida en el curso de un
ciclo de reloj. Así, los procesadores sin "segmentación" también se les llama procesadores
de un solo ciclo, porque a todas las instrucciones les toma exactamente un ciclo de reloj
para completarse (o, pasar a través de las cuatro fases de su ciclo de vida).
Debido a que el procesador completa las instrucciones a un ritmo de una por ciclo de reloj,
queremos que el reloj de la CPU corra tan rápido como sea posible para que la tasa de
completamiento de instrucciones del procesador (es decir, el número de instrucciones
completado por nanosegundo) sea tan alta como sea posible. Por lo tanto tenemos que
calcular la cantidad mínima de tiempo que toma completar una instrucción, y hacer el
tiempo de ciclo de reloj equivalente a ese lapso de tiempo. Lo que pasa es que en nuestro
CPU hipotético de ejemplo, las cuatro fases del ciclo de vida de una instrucción toman un
total de cuatro nanosegundos para completarse. Por lo tanto, deberíamos establecer la
duración del ciclo de reloj de la CPU a cuatro nanosegundos, para que la CPU pueda
completar el ciclo de vida de la instrucción, desde el fetch hasta el write-back, en un solo
reloj. (Un ciclo de reloj de la CPU es a menudo llamado simplemente un "reloj", para
abreviar).

http://www.tecnodelinglesalcastellano.com
Figura PIPELINING 4: Un procesador de un solo ciclo.

En
n el diagrama anterior, la instrucción en color azul abandona la zona de almacenamiento
de código, entra en el procesador, y luego avanza a través de las fases de su ciclo de vida en
el transcurso del período de reloj de cuatro nanosegundos, hasta que al final
f del cuarto
nanosegundo se completa la última fase y su ciclo de vida se ha terminado. El final del
cuarto nanosegundo es también el final del primer ciclo de reloj, así que ahora que el
primer ciclo de reloj está terminado y la instrucción azul ha finalizado
finalizado su ejecución, la
instrucción roja puede entra en el procesador en el inicio de un nuevo ciclo de reloj y pasar
por el mismo proceso. Esta secuencia de pasos de cuatro nanosegundos se repite hasta que,
después de un total de 16ns (o cuatro ciclos de reloj), el procesador ha completado las
cuatro instrucciones para una tasa de finalización de instrucciones de 0,25
instrucciones/ns (= 4 instructions/16 ns).
Los procesadores de un solo ciclo como el de la figura PIPELINING.4 son fáciles de
diseñar, pero malgastan muchos recursos de hardware. Todo ese espacio en blanco en el
diagrama representa hardware del procesador que está sentado de brazos cruzados
mientras espera a que la instrucción que actualmente se encuentra en el procesador
finalice su ejecución.
n. Segmentando el procesador de arriba, podemos poner más hardware
a trabajar cada nanosegundo, aumentando así la eficiencia del procesador y su
rendimiento en la ejecución de los programas.

Antes de continuar, debo aclarar algunos aspectos del diagrama anterior que algunos
pueden encontrar confusos. En la parte inferior del diagrama hay una región marcada

http://www.tecnodelinglesalcastellano.com
"Instrucciones completadas". Ahora, las instrucciones completadas en realidad no van a
ninguna parte cuando se han terminado de ejecutar, una vez que han hecho su trabajo de
decirle al procesador cómo modificar el flujo de datos, son simplemente eliminadas del
procesador. (Tenga en cuenta que las instrucciones que se han eliminado del procesador
aún existen en el área de almacenamiento de código y están disponibles para su uso
repetido) Así que el área de "Instrucciones completadas" en la parte inferior de la figura
PIPELINING.4 no representa una parte real del equipo, por lo que he puesto una línea de
puntos alrededor de ella. Esta zona es sólo un lugar para hacer un seguimiento de cuantas
instrucciones el procesador ha completado en un período de tiempo determinado, o la tasa
de completamiento de instrucciones del procesador (o tasa de finalización, para abreviar),
de modo que al comparar los diferentes tipos de procesadores vamos a tener un lugar
donde mirar rápidamente y obtener una sensación instantánea de qué procesador tiene un
mejor rendimiento. Mientras mas instrucciones completa un procesador en un periodo de
tiempo, mejor rendimiento tendrá en los programas, que son una secuencia ordenada de
instrucciones. Así que piense en la caja de "Instrucciones completadas" como una especie
de cuadro de indicadores para el seguimiento de la tasa de finalización de cada procesador,
y marque la casilla en cada uno de los siguientes diagramas para ver cuánto tiempo le toma
al procesador rellenar esta casilla.
Siguiendo con el punto anterior, puede sentir curiosidad en cuanto a por qué la instrucción
azul que ha finalizado en el cuarto nanosegundo no aparece en el cuadro de "Instrucciones
Completadas" hasta el quinto nanosegundo. La razón es sencilla, y se deriva de la
naturaleza de la figura. Debido a que una instrucción gasta un nanosegundo completo, de
principio a fin, en cada etapa de ejecución, la instrucción azul entra en la fase de escritura
en el inicio del cuarto nanosegundo y sale de esta fase al final del cuarto nanosegundo. Esto
significa que el quinto nanosegundo es el primer nanosegundo completo en el que la
instrucción azul es completada . Así, al comienzo del quinto nanosegundo (que coincide
con el final del cuarto nanosegundo) el procesador ha completado una instrucción.

Un ejemplo con segmentación.


Segmentar un procesador implica dividir el proceso de ejecución de la instrucción a lo que
le llamamos "ciclo de vida" de la instrucción, en una serie de etapas de segmentos
separados, que puede ser completada en una secuencia por hardware especializado.

http://www.tecnodelinglesalcastellano.com
Recordemos la manera en que dividimos el proceso de ensamblaje de SUV en cinco pasos
discretos, con un equipo dedicado asignado a completar cada paso, y tendrá la idea.
Debido a que e ciclo de vida de una instrucción se compone de cuatro fases muy distintas,
podemos comenzar por dividir el proceso de ejecución de instrucciones de un procesador
de un solo ciclo en una secuencia de cuatro etapas discretas segmentadas, en la que cada
etapa o segmento corresponde a una fase del ciclo de vida estándar de la instrucción:

Etapa 1: Obtener la instrucción desde el almacenamiento de código.


Etapa 2: Decodificar la instrucción.
Etapa 3: Ejecutar la instrucción.
Etapa 4: Escribir los resultados de la instrucción de vuelta al archivo del registro.

Tenga en cuenta que el número de etapas del proceso se conoce como profundidad de
segmentación. Así que nuestras cuatro etapas de segmentación equivalen a una
profundidad de segmentación de cuatro.
Por conveniencia, digamos que a cada una de las cuatro etapas de la segmentación del
ejemplo le toma exactamente un nanosegundo terminar su labor en una instrucción, al
igual que cada equipo en nuestra analogía de la línea de montaje tuvo una hora para
terminar su parte del trabajo en un SUV. Así que el proceso de ejecución de cuatro
nanosegundos de nuestro procesador original de ciclo único, se ha dividido en cuatro
etapas, discretas, secuenciales de segmentos de un nanosegundo de longitud cada uno.
Ahora veamos otro esquema para ver cómo una CPU segmentada ejecutaría las cuatro
instrucciones ilustradas en la figura PIPELINING.4.

http://www.tecnodelinglesalcastellano.com
Figura PIPELINING 5: Segmentación de cuatro etapas.

Al comienzo del primer nanosegundo, la instrucción azul entra en la etapa de "fetch".


"
Después de que el primer nanosegundo es completado, inicia el segundo nanosegundo y la
instrucción azul pasa a la fase de decodificación, mientras que la siguiente instrucción, la
roja, empieza a hacer su camino desde el almacenamiento de código hacia el
e procesador
(es decir, entra en la etapa de fetch). Al inicio del tercer nanosegundo, la instrucción azul
avanza a la fase de ejecución, la instrucción roja avanza a la etapa de decodificación, y la
instrucción verde entra en la etapa de fetch. En el cuarto
cuarto nanosegundo, la instrucción azul
entra a la fase de escritura, la roja a la etapa de ejecución, la verde a la fase de
decodificación, y la violeta a la etapa de fetch. Después de que el cuarto nanosegundo ha
transcurrido totalmente e inicia el quinto nanosegundo,
nanosegundo, la instrucción azul deja la tubería y
concluye su ejecución. Por lo tanto podemos decir que al final de cuatro nanosegundos (=
cuatro ciclos de reloj) el procesador segmentado descrito arriba ha completado una
instrucción.
Al inicio del quinto nanosegundo,
anosegundo, la tubería está ahora llena y el procesador puede
empezar a completar las instrucciones a ritmo de una instrucción por nanosegundo. Esta
tasa de completamiento de 1 instrucción/ns es una mejora de cuatro veces en la tasa de
terminación del procesador
esador de .25 instrucciones/ns (o 4 instrucciones cada 16
nanosegundos).

http://www.tecnodelinglesalcastellano.com
Reduciendo el reloj.
Puede ver en el diagrama anterior que la función del reloj del CPU cambia ligeramente en
un procesador segmentado, en comparación con el procesador de un solo ciclo de la figura
PIPELINING.4. Debido a que todas las etapas de la tubería ahora deben trabajar juntas al
mismo tiempo y estar listas al inicio de cada nuevo nanosegundo para entregar los
resultados de su trabajo a la siguiente etapa del segmento, el reloj es necesario para
coordinar la actividad de la tubería en general. La forma en que esto se hace es simple:
reducir el tiempo de ciclo de reloj para que coincida con el tiempo que tarda cada etapa en
completar su labor, de modo que al inicio de cada ciclo de reloj cada etapa de la tubería
entregue la instrucción en la que estaba trabajando a la siguiente etapa. Debido a que cada
etapa de la tubería en nuestro procesador de ejemplo se toma un nanosegundo para
completar su trabajo, podemos establecer el ciclo de reloj en un nanosegundo de duración.
Este nuevo método de suministrarle reloj al procesador significa que una nueva
instrucción no necesariamente se completará al final de cada ciclo de reloj, como fue el
caso del procesador de un solo ciclo. En vez de eso, una nueva instrucción se
completará sólo al final de los ciclos de reloj en el que la etapa de write-back ha estado
trabajando en una instrucción. Cualquier ciclo de reloj con una etapa write-back vacía no
añadirá ninguna instrucción nueva a la caja de "Instrucciones completadas", y cualquier
ciclo de reloj con una etapa write-back activa añadirá una nueva instrucción a la caja. Por
supuesto, esto significa que cuando el segmento comience a trabajar en un programa,
habrá varios ciclos de reloj, tres para ser exactos, durante los cuales no se completará
ninguna instrucción. Pero una vez que se inicia el cuarto ciclo de reloj, la primera
instrucción entra en la etapa write-back y la tubería puede entonces comenzar a
completar las nuevas instrucciones en cada ciclo de reloj, que, dado que cada ciclo de reloj
es de un nanosegundo, se traduce en una tasa de terminación de una instrucción por
nanosegundo .

Disminución de tiempo de ejecución del programa.


Tenga en cuenta que el tiempo total de ejecución de cada instrucción individual no es
alterado por la segmentación. Todavía le tomará a cada instrucción 4ns hacer todo su
camino a través del procesador, que 4ns se pueden dividir en 4 ciclos de reloj de 1ns cada
uno, o puede cubrir un ciclo de reloj más largo, pero siguen siendo los mismos 4ns. Así, la
segmentación no acelera el tiempo de ejecución de la instrucción, pero sí acelera el tiempo

http://www.tecnodelinglesalcastellano.com
de ejecución del programa (es decir, el número de nanosegundos que se tarda en ejecutar
un programa completo) al aumentar el número de instrucciones acabadas por unidad de
tiempo. Al igual que la segmentación de nuestra hipotética línea de montaje de SUVs nos
permitió cumplir con los pedidos del Ejército en un lapso corto de tiempo, aunque cada
SUV individual todavía pasaba un total de cinco horas en la línea de montaje, así permite la
segmentación al procesador ejecutar programas en una menor cantidad de tiempo a pesar
de que cada instrucción individual todavía pasa la misma cantidad de tiempo de viaje a
través de la CPU. La segmentación hace un uso más eficiente de los recursos existentes de
la CPU, poniendo todas sus unidades para trabajar de forma simultánea, con lo que podrá
hacer más trabajo total, en cada nanosegundo

http://www.tecnodelinglesalcastellano.com

Anda mungkin juga menyukai