Está en la página 1de 32

PIPELINING: Conceptos Bsicos E Intermedios Muchos lectores de este texto se han descubierto los fundamentos de la pipelining en otro otro

curso. Debido a que los captulos 2 y 3 se basan en gran medida de este material, los lectores deben asegurarse de que estn familiarizados con los conceptos discutidos en este material para una revisin rpida. Comenzamos el anexo con los fundamentos de la lnea de produccin, incluyendo la discusin de las implicaciones de la ruta de datos, la introduccin de hazards, y examinar el rendimiento de pipelines. Esta seccin describe la base de cinco etapas pipelines RISC que es la base para el resto del apndice. Seccin A.2 se describe el problema de los hazards, por qu causar problemas de rendimiento y cmo pueden ser tratados. Seccin A.3 se explica cmo el simple pipelining de cinco etapas que se implementa, se centra en el control de los hazard y cmo se tratan. Seccin A.4 se analiza la interaccin entre los pipelining y los distintos aspectos del diseo del sistema de instruccin, incluyendo discusiones sobre el importante tema de las excepciones y su interaccin con los pipelining. Los lectores no familiarizados con los conceptos de interrupciones precisas e imprecisas y la reanudacin despus de las excepciones se encuentran este material til, ya que son clave para la comprensin de los enfoques ms avanzados en el Captulo 2. apndice antes de continuar. Al leer el captulo 2, que puede ser til recurrir a este

texto (por ejemplo, nuestra ms bsica de la Organizacin de texto Equipo y Diseo) o en

Seccin A.5 discute cmo las cinco etapas pipeline puede ser extendido para manejar ms largo ejecuta instrucciones de punto flotante. Seccin A.6, coloca a estos conceptos en un estudio de caso de un procesador muy canalizado, el MIPS R4000/4400, incluyendo tanto el pipeline entero de ocho etapas y pipeline de punto flotante. Seccin A.7 introduce el concepto de programacin dinmica y el uso de marcadores para poner en prctica la programacin dinmica. Se present como un tema transversal, ya que puede ser utilizado para servir como una introduccin a los conceptos bsicos en el captulo 2, que se centr en los enfoques dinmicamente programado. Seccin A.7 es tambin una introduccin sencilla a la ms compleja a los algoritmo Tomasulo's se tratan en el captulo 2. Aunque el algoritmo Tomasulo's se puede entender sin cubierta y la introduccin de scoreboarding, el enfoque scoreboarding es ms simple y ms fcil de comprender.

QU ES LA PIPELINING? Pipelining es una tcnica de aplicacin por el cual las instrucciones mltiples se solapan en la ejecucin, sino que toma ventaja del paralelismo que existe entre las acciones necesarias para ejecutar una instruccin. Hoy en da, pipelining es la tcnica de aplicacin clave que se utiliza para hacer una CPU rpida. automviles, hay muchos pasos, cada uno algo que contribuye a la construccin del Un pipeline es como una cadena de montaje. En una lnea de montaje de

coche. Cada paso opera en paralelo con los otros pasos, aunque en un coche diferente. En un pipeline ordenador, cada paso en el pipeline completa una parte de una instruccin. Al igual que la lnea de montaje, los diferentes pasos estn completando las diferentes partes de diferentes instrucciones en paralelo. Cada uno de estos pasos se denomina una etapa un tubo de instrucciones entrar en un extremo, el progreso a travs de las etapas, y la salida en el otro extremo, al igual que los coches hara en una lnea de montaje. En una lnea de montaje de automviles, el rendimiento se define como el nmero de automviles por hora y est determinada por la frecuencia de salidas de coches que completaron la lnea de montaje. Asimismo, el rendimiento de un pipeline de instruccin est determinado por la frecuencia con la que una instruccin sale del pipeline. Debido a que las etapas de pipeline estn conectadas entre s, todas las etapas deben estar preparadas para proceder al mismo tiempo, tal como se requerira en una lnea de montaje. El tiempo necesario procesador. Debido a que todas las etapas proceden al mismo tiempo, la longitud de un ciclo de procesador est determinada por el tiempo requerido para que la etapa ms lenta del pipe, tal como en una lnea de montaje automtico, el paso ms largo que determinar generalmente un ciclo de reloj (a veces es de 2, rara vez ms). El objetivo del diseador de pipeline es equilibrar la duracin de cada etapa de conduccin, as como el diseador de la lnea de montaje intenta equilibrar el tiempo de tiempo por la instruccin en el pipeline del procesador, suponiendo que las condiciones ideales es igual a: cada paso en el proceso. Si los tramos estn perfectamente equilibrados, entonces el el tiempo entre el avance de la lnea. En un ordenador, este ciclo de procesador es pipeline o un segmento de pipeline. Las etapas estn conectados uno a otro para formar

entre el movimiento de una instruccin a un nivel inferior del pipeline es el ciclo del

Bajo estas condiciones, la aceleracin de pipelining es igual al nmero de etapas de pipeline, tal como una lnea de montaje con n etapas idealmente puede producir automviles n veces ms rpido. Normalmente, sin embargo, las etapas no ser perfectamente equilibrado y, adems, pipelining involucra alguna sobrecarga. As, el tiempo por instruccin en el procesador segmentado no tendr su valor mnimo posible, sin embargo, puede estar cerca. Pipelining produce una reduccin en el tiempo de ejecucin promedio por instruccin. Dependiendo de lo que se considera como la lnea de base, la reduccin puede ser vista como la disminucin del nmero de ciclos de reloj por instruccin (CPI), como disminuir el tiempo de ciclo de reloj, o como una combinacin. Si el punto de partida es un procesador que lleva varios ciclos de reloj por instruccin, a continuacin, el pipelining se considera generalmente como la reduccin del CPI. Esta es la vista principal por la que se llevar. Si el punto de partida es un procesador que tiene un (largo) ciclo de reloj por instruccin, a continuacin, el pipelining disminuye el tiempo de ciclo de reloj. instrucciones en un flujo de instrucciones secuenciales. Tiene la ventaja sustancial que, a diferencia de algunas tcnicas de aceleracin (vase el captulo 4), no es visible para el programador. En este apndice primero abarcar el concepto de pipelining con un clsico sofisticados en el uso de los procesadores modernos. Antes de decir algo ms acerca de la pipelining y su uso en un procesador, necesitamos un conjunto de instrucciones sencillas, que presentamos a continuacin. LOS FUNDAMENTOS DE UN CONJUNTO DE INSTRUCCIONES RISC A lo largo de este libro se utiliza un RISC (Reduced Instruction Set equipo), la arquitectura o la arquitectura de carga de la tienda para ilustrar los conceptos bsicos, aunque casi todas las ideas que presentamos en este libro son aplicables a otros procesadores. En esta seccin se introduce el ncleo de una tpica arquitectura RISC. En este apndice, y en todo el libro, por defecto nuestra arquitectura RISC es MIPS. En muchos lugares, los conceptos pipeline de cinco etapas; otros captulos se investigaran las tcnicas de pipelining ms Pipelining es una tcnica de aplicacin que explota el paralelismo entre las

son significativamente similares que se aplicar a cualquier RISC. Arquitecturas RISC se caracterizan por una serie de propiedades clave, que simplifican enormemente su aplicacin: Todas las operaciones de datos se aplican a los datos de los registros y suelen cambiar todo el registro (32 o 64 bits por registro). Las nicas operaciones que afectan a la memoria son las operaciones de carga y almacenamiento que mueven los datos de la memoria a un registro o en la memoria de un registro, respectivamente. Cargas y operaciones de las tiendas que la carga o almacenar menos de un registro completo (por ejemplo, un byte, 16 bits o 32 bits) a menudo estn disponibles. suelen ser uno de tamao. Estas propiedades simples conducen a simplificaciones radicales en la ejecucin del pipelining, por lo que estos conjuntos de instrucciones se han diseado de esta manera. Para mantener la coherencia con el resto del texto, se utiliza MIPS64, la versin de 64 bits del juego de instrucciones MIPS. Los extendidos de 64 bits las instrucciones estn en general por tener una D en el inicio o el final de la tecla de acceso. Por ejemplo DADD es la versin de 64 bits de una instruccin ADD, mientras que LD es la versin de 64 bits de una instruccin de carga. Al igual que otras arquitecturas RISC, el conjunto de instrucciones MIPS Los formatos de instruccin son pocos en nmero, con todas las instrucciones que

proporciona 32 registros, aunque el registro 0 siempre tiene el valor 0. La mayora de las arquitecturas RISC, como MIPS, tienen tres clases de instrucciones (ver Apndice B para ms detalles): 1. Estas instrucciones de UTA instrucciones de tomar cualquiera de dos registros o un registro y una seal de instrucciones extendido inmediata (UTA llamados inmediatos, tiene un desplazamiento de 16 bits en MIPS), operan en ellos, y almacenan el resultado en un tercer registro. Las operaciones tpicas incluyen complementos (DADD), restar (IDC), y operaciones lgicas (como AND y OR), que no establezcan diferencias entre las versiones de 32 bits y 64 bits. Versiones inmediatas de estas instrucciones de uso de los mismos mnemotcnicos con el sufijo I. En MIPS, no son tanto las formas con y sin signo de las instrucciones aritmticas, los formularios firmados, que no generan excepciones de

desbordamiento y por tanto son los mismos en 32 bit y el modo de 64 bits, tiene una U al final (por ejemplo, DADDU, DSUBU, DADDIU). 2. Estas instrucciones de carga y almacn de las instrucciones de tener una fuente de registro, denominado registro de base, y una inmediata sobre el terreno (16-bit en MIPS), llamado el desplazamiento, como operando. La suma-llama la direccin de efectivo el contenido del registro de base y la seal extendidos-offset se utiliza segundo operando registro acta como el destino de los datos cargados desde la memoria. En el caso de un almacn, el segundo operando registro es la fuente de los datos que se almacenan en la memoria. La palabra carga instrucciones (LD) y la palabra tienda (SD) cargar o almacenar los enteros de 64 bits contenido de los registros. 3. Oficinas y Sucursales de saltos son las transferencias condicionadas de control. Generalmente hay dos formas de especificar la condicin de sucursal en arquitecturas RISC: con un conjunto de bits de condicin (a veces llamada un par de registros o entre un registro y un cero. MIPS utiliza este ltimo. Para este cdigo de condicin), o por un conjunto limitado de las comparaciones entre un apndice, consideramos que las comparaciones slo para la igualdad entre los dos registros. En todas las arquitecturas RISC, el destino rama se obtiene mediante la adicin de un signo-extendida de desplazamiento (16 bits en MIPS) al PC actual. vamos a cubrir los saltos en este apndice. UNA IMPLEMENTACIN SIMPLE DE UN CONJUNTO DE INSTRUCCIONES RISC Para entender cmo un conjunto de instrucciones RISC se pueden implementar de una manera segmentada, es necesario entender cmo se aplica, sin pipelining. En esta seccin se muestra una implementacin sencilla en la que cada instruccin tarda un mximo de 5 ciclos de reloj. Vamos a extender esta aplicacin de base a una versin segmentada, resultando en una mucho menor CPI. Nuestra implementacin unpipelined no es la ms econmica o la implementacin de ms alto rendimiento sin pipelining. Por el contrario, est diseado para conducir naturalmente a una implementacin de pipeline. Implementar el sistema de instruccin requiere la introduccin de varios registros temporales que no forman parte de la arquitectura, los cuales se introducen en esta seccin para simplificar pipelining. Nuestra implementacin se centrar slo en un Saltos incondicionales se proporcionan en muchas arquitecturas RISC, pero no como una direccin de memoria. En el caso de una instruccin de carga, un

pipeline para un subconjunto entero de una arquitectura RISC, que consiste de la palabra de la carga de la tienda, sucursales y las operaciones de enteros UTA. Cada instruccin en este subgrupo RISC se puede implementar en un mximo de 5 ciclos de reloj. Los 5 ciclos de reloj son los siguientes. 1. Ciclo de bsqueda de instrucciones (IF): Enviar el contador de programa (PC) a la memoria y la captacin de la instruccin actual de la memoria. Actualizacin de la PC bytes) a la PC. 2. Instruccin decodificar / registrarse ciclo de bsqueda (ID): a la PC mediante la adicin secuencial siguiente 4 (ya que cada instruccin es de 4

Decodificacin de la instruccin y leer los registros correspondientes para registrar los especificadores de origen del archivo de registro. Es la prueba de la igualdad en los registros tal como se leen, por una rama sea posible. Regstrate ampliar el campo de de la sucursal de destino posible gracias a la adicin de la seal extendida compensado con el PC se incrementa. En una implementacin agresiva, que analizaremos ms adelante, la rama puede ser completado al final de esta etapa, almacenando la direccin de la sucursal-objetivo en el PC, si la prueba de condicin de cedido verdad. La descodificacin se realiza en paralelo con los registros de lectura, lo cual es desplazamiento de la instruccin en el caso de que sea necesario. Calcular la direccin

posible porque el especificadores de registro est en una ubicacin fija en una arquitectura RISC. Esta tcnica se conoce como campo fijo de decodificacin. Tenga en cuenta que podemos leer un registro que no usamos, lo que no ayuda, sino tambin no perjudicar el rendimiento. (Lo hace gastar energa para leer un registro que no sean necesarios, y sensibles a la energa diseos puede evitar esto.) Dado que la parte inmediata de una instruccin tambin se encuentra en un lugar idntico, la inmediata inscrCPIin extendida se calcula tambin en este ciclo en caso de que se necesita. 3. Ciclo efectiva de direccin/Ejecucin (EX):

La ALU opera sobre los operando preparados en el ciclo anterior, la realizacin de una de las tres funciones, dependiendo del tipo de instrucciones. para formar la direccin efectiva. Referencia De La Memoria: La ALU aade el registro de base y la compensacin

Registro-Registro De Instrucciones ALU: La ALU realiza la operacin especificada por el cdigo de operacin ALU en los valores ledos desde el archivo de registro. Registrar-Inmediata De Instrucciones ALU: La ALU realiza la operacin especificada por el cdigo de operacin ALU en el primer valor ledo desde el archivo de registro y el inmediato inicio de sesin extendida.

pueden combinar en un solo ciclo de reloj, ya que no necesita instruccin para calcular simultneamente una direccin de datos y realizar una operacin en los datos. 4. Memoria de acceso (MEM):

En una arquitectura de carga-tienda la direccin efectiva y ciclos de ejecucin se

Si la instruccin es una carga, la memoria hace una lectura utilizando la direccin efectiva calculada en el ciclo anterior. Si se trata de una tienda, entonces la memoria direccin efectiva. 5. Write-back ciclo (BM): Registrarse-Registrarse ALU-instruccin o una instruccin de carga: Escriba el una carga) o de la ALU (para una instruccin ALU). En esta implementacin, instrucciones de salto requieren 2 ciclos, las instrucciones de almacenamiento requieren 4 ciclos, y todas las dems instrucciones que requieren de 5 ciclos. Suponiendo una frecuencia rama del 12% y una frecuencia de tienda de 10%, una distribucin tpica instruccin conduce a un CPI general de 4,54. Esta puesta en prctica, sin embargo, tampoco es ptimo para lograr el mejor rendimiento o en el uso de la cantidad mnima de hardware dado el nivel de rendimiento, nos vamos a la mejora de este diseo como un ejercicio para usted y en su lugar se centran en pipelining de esta versin. EL CLSICO DE CINCO ETAPA DE CONDUCCIN DE UN PROCESADOR RISC Podemos pipeline de la ejecucin se ha descrito anteriormente, con casi ningn cambio, simplemente iniciar una nueva instruccin en cada ciclo de reloj. (Vea por qu se opt por este diseo!). Cada uno de los ciclos de reloj de la seccin anterior se convierte en un tubo de etapa-un ciclo en la pipeline. Esto resulta en el patrn de ejecucin mostrada en la figura Al, que es la forma tpica se dibuja una estructura de pipelines. Aunque cada resultado en el archivo de registro, ya sea que provenga del sistema de memoria (para escribe los datos del registro segunda lectura del archivo de registro utilizando la

instruccin tarda 5 ciclos de reloj para completar, durante cada ciclo de reloj del hardware se iniciar una nueva instruccin y se ejecuta una parte de las cinco instrucciones distintas. Tal vez le resulte difcil de creer que pipelining es tan simple como eso, no lo es. En

esta y las siguientes secciones, vamos a hacer nuestra cartera de RISC "real" al tratar con los problemas que introduce pipelining. Para empezar, tenemos que determinar lo que sucede en cada ciclo de reloj de la

procesador y asegrese de que no tratamos de llevar a cabo dos operaciones diferentes en el recurso de datos en el mismo camino mismo ciclo de reloj. Por ejemplo, un ALU individuales no se puede pedir a calcular una direccin efectiva y realizar una operacin de restar al mismo tiempo. Por lo tanto, debemos asegurarnos de que la superposicin de simplicidad de un conjunto de instrucciones RISC hace que la evaluacin de recursos relativamente fcil. Figura A.2 muestra una versin simplificada de un camino de datos RISC dibujado en forma de pipelines. Como puede ver, las unidades funcionales principales se utilizan en los diferentes ciclos, y por lo tanto, la superposicin de la ejecucin de mltiples instrucciones presenta relativamente pocos conflictos. Hay tres observaciones en las que se apoya este hecho. las instrucciones de la pipeline no puede causar un conflicto. Afortunadamente, la

que normalmente se implementan con las instrucciones por separado y cachs de datos (vase el captulo 5). El uso de cachs separadas elimina un conflicto por un solo recuerdo que se planteara entre la instruccin buscar y acceso a los datos de la memoria. Ntese que si nuestro procesador pipeline tiene un ciclo de reloj que es igual a la de la versin unpipelined, el sistema de memoria debe entregar cinco veces el ancho de banda. Este aumento de la demanda es un costo de un mayor rendimiento.

En primer lugar, se utiliza la instruccin por separado y las memorias de datos,

lectura en ID y una para escribir en WB. Estos usos son distintos, por lo que simplemente mostrar el archivo de registro en dos lugares. Por lo tanto, tenemos que realizar dos lecturas y una escritura cada ciclo de reloj. Para hacer frente a las lecturas y una escritura en el mismo registro (y por otra razn, que se har evidente en breve), se realiza la escritura en el registro en la primera mitad del ciclo de reloj y la lectura en la segunda mitad.

En segundo lugar, el archivo de registro se utiliza en las dos etapas: una para la

Figura A.1 simple pipelining de RISC. En cada ciclo de reloj, otra instruccin se recupera y comienza su ciclo de ejecucin 5. Si existe una instruccin que se inicia cada ciclo de reloj, el rendimiento ser de hasta cinco veces mayor que la de un procesador que no est canalizado. Los nombres de las etapas de la pipeline son los mismos que los utilizados para los ciclos en la ejecucin unpipelined: IF = instruccin fetch, ID = decodificacin de la instruccin, EX = ejecucin, MEM = memoria de acceso, y el WB = escribir de nuevo.

Figura A.2 El pipeline puede ser considerado como una serie de rutas de datos desplazados en el tiempo. Esto muestra el solapamiento entre las partes de la ruta de datos, con un ciclo de reloj 5 (CC 5) que muestra la situacin de estado estacionario. Debido a que el fichero de registro se utiliza como una fuente en la etapa de identificacin y como un destino en la fase de BM, que aparece dos veces. Se demuestra que se lee en una parte de la etapa y y una lnea discontinua en el otro lado. El IM abreviatura se utiliza para la memoria de instrucciones, DM para la memoria de datos, y CC para el ciclo de reloj.

escrito en otro mediante una lnea continua, a la derecha o a la izquierda, respectivamente,

Figura En tercer lugar, A.2 no se ocupa de la PC. Para iniciar una nueva instruccin todos los relojes, tenemos que incrementar y almacenar el PC cada reloj, y esto debe ser hecho durante la etapa de IF en la preparacin para la siguiente instruccin. Por otra parte, durante la identificacin. Un problema adicional es que una rama no cambia el PC hasta la etapa de identificacin. Esto causa un problema, lo que ignoramos por ahora, pero se encargar en breve. Aunque es esencial para garantizar que las instrucciones en la pipeline no intentan utilizar los recursos de hardware al mismo tiempo, tambin hay que garantizar que las instrucciones en diferentes etapas de la pipeline no interfieran uno con el otro. Esta separacin se realiza mediante la introduccin de registros de pipelining entre las etapas sucesivas de la pipeline, de modo que al final de un ciclo de reloj todos los resultados de una etapa dada se almacenan en un registro que se utiliza como la entrada a la siguiente etapa en el reloj siguiente ciclo. Figura A.3 muestra la pipeline dibujada con estos registros de pipeline. tambin debemos tener un sumador para calcular el destino de la ramificacin potencial

En la figura A.3 muestra una pipeline del pipeline registra entre las sucesivas fases de pipelining. Tenga en cuenta que los registros de evitar la interferencia entre dos instrucciones diferentes etapas adyacentes de la pipeline. Los registros tambin desempear propiedad disparada por el borde de los registros, es decir, que los valores cambian instantneamente en un reloj de borde es crtica. De lo contrario, los datos de una instruccin podra interferir con la ejecucin de otro! la funcin crtica de llevar datos para una instruccin dada de una etapa a la otra. La

requeridas para hacer la pipeline funcionar correctamente y debe estar presente. Por supuesto, los registros similares sera necesario incluso en una ruta de datos multiciclo que no tena pipelining (ya que slo los valores en los registros se conservan a travs de tambin desempea el papel fundamental de llevar a los resultados intermedios de una

Aunque muchas figuras se omiten estos registros para la simplicidad, son

fronteras de reloj). En el caso de un procesador segmentado, la pipelining de registros etapa a otra en la que el origen y el destino no pueden ser justo al lado. Por ejemplo, el valor del registro para ser almacenados durante un almacn de instruccin se lee durante ID, pero en realidad no utilizados hasta MEM, sino que se hace pasar a travs de dos modo, el resultado de una instruccin ALU se calcula durante EX, pero en realidad no se almacena hasta BM, sino que llega all haciendo pasar a travs de dos registros de pipelines. A veces es til para nombrar a los registros de pipelines, y seguimos la convencin de nombrar a las fases de pipelining que se conectan, de modo que los registros se llaman IF / ID, ID / EX, EX / MEM, y MEM / WB. pipelines registra para llegar a la memoria de datos durante la etapa de MEM. Del mismo

CUESTIONES BSICAS DE RENDIMIENTO EN PIPELINING

Pipelining aumenta el rendimiento de instruccin de la CPU, el nmero de instrucciones completadas por unidad de tiempo, pero no reduce el tiempo de ejecucin de una instruccin individual. De hecho, generalmente aumenta ligeramente el tiempo de en el rendimiento de la instruccin significa que un programa se ejecuta ms rpido y tiene un menor tiempo de ejecucin total, aunque no sola instruccin se ejecuta ms rpido! El hecho de que el tiempo de ejecucin de cada instruccin no disminuye pone ejecucin de cada instruccin debido a sobrecarga en el control de la pipeline. El aumento

lmites a la profundidad de la prctica de un pipeline, como se ver en la siguiente seccin. Adems de las limitaciones derivadas de la latencia de la pipeline, los lmites se

derivan de los desequilibrios entre las etapas de pipelines y pipeline de la cabeza. Desequilibrio entre las etapas de pipeline reduce el rendimiento ya que el reloj puede funcionar ms rpido que el tiempo necesario para la etapa ms lenta tramitacin. Gastos de pipelining surge de la combinacin de retraso pipelines registro y reloj no funciona correctamente. El pipeline registra el tiempo de instalacin complemento, que es el tiempo que una entrada de registro debe ser estable antes de la seal de reloj que desencadena una escritura produce, adems de retardo de propagacin para el ciclo de reloj. Desplazamiento de reloj, que es mximo retraso entre el momento en el reloj llega a cualquiera de los dos registros, tambin contribuye al lmite inferior en el ciclo de reloj. desplazamiento de reloj y el pestillo, sin pipelining adicional es til, ya que no hay tiempo que queda en el ciclo de trabajo til. El lector interesado debera ver Kunkel y Smith [1986]. Como veremos en el captulo 2, esta sobrecarga afecta las ganancias de rendimiento alcanzados por el Pentium 4 en comparacin con el Pentium III. Ejemplo: Consideremos el procesador unpipelined en la seccin anterior. Suponga que tiene un ciclo de reloj de 1 ns y que se utiliza para las operaciones de 4 ciclos de UTA y las ramas y 5 ciclos de las operaciones de memoria. Supongamos que las frecuencias relativas sesgo del reloj y la configuracin, pipelining del procesador aade 0,2 ns de los gastos generales para el reloj. Haciendo caso omiso de cualquier efecto de latencia, la cantidad de aceleracin en la tasa de ejecucin de la instruccin vamos a ganar de una pipeline? Solucin: El tiempo promedio de ejecucin de instrucciones en el procesador es unpipelined Tiempo medio de ejecucin de la instruccin = ciclo de reloj x media del CPI = 1 ns x ((40% + 20%) x 4 + 40% x 5) = 1 x 4,4 ns = 4,4 ns de estas operaciones son 40%, 20%, y 40%, respectivamente. Supongamos que, debido al Una vez que el ciclo de reloj es tan pequeo como la suma de la sobrecarga de

En la implementacin pipeline, el reloj debe funcionar a la velocidad de la etapa ms lenta, ms arriba, que ser 1 + 0.2 o 1.2 ns, lo que es el tiempo de ejecucin de la instruccin media. Por lo tanto, la aceleracin de la pipelining es

La sobrecarga ns 0,2 esencialmente establece un lmite sobre la eficacia de pipelining. Si la sobrecarga no se ve afectada por cambios en el ciclo de reloj, la ley de Amdahl nos dice que la sobrecarga limita el aumento de velocidad. Esta sencilla cartera RISC podra funcionar muy bien para las instrucciones de enteros, si todas las instrucciones son independientes de toda otra instruccin en la pipeline. En realidad, las instrucciones de la pipeline puede depender el uno del otro, lo que es el tema de la siguiente seccin. A2 EL PRINCIPAL OBSTCULO DE PIPELINE- PIPELINING HAZARDS Hay situaciones, los hazard llamados, que impiden la siguiente instruccin en la secuencia de la instruccin que se ejecute durante su ciclo de reloj designado. Hazards de reducir el rendimiento de la aceleracin ideales adquirida por pipelining. Hay tres clases de hazards: 1. Hazard estructurales surgen de conflictos por los recursos cuando el hardware no puede soportar todas las combinaciones posibles de las instrucciones de forma 2. Hazards de datos surgen cuando una instruccin depende de los resultados de una instruccin previa de una manera que se expone por el solapamiento de 3. Control de los hazards surgen de la pipelining de las ramas y otras instrucciones que cambian el PC. Hazard en los pipelines puede hacer que sea necesario para detener el pipeline. Evitar un Hazard a menudo requiere que algunas instrucciones en la pipeline se dejan continuar, mientras que otros se retrasan. Para las pipelines que se discuten en este apndice, cuando la instruccin se ha estancado, todas las instrucciones emitidas antes de la instruccin y por lo tanto no se estanc en la medida de lo largo de la pipeline, tambin estn siendo soslayados. Instrucciones emitidas antes de la instruccin-se estanc y por lo tanto mucho ms adelantados en la pipeline, debe continuar, pues de lo contrario el Hazard nunca se instrucciones en la pipeline. simultnea en la ejecucin solapada.

borrar. Como resultado, no hay nuevas instrucciones se recuperan durante la parada. Veremos varios ejemplos de cmo los puestos de pipelines operan en esta seccin de preocupacin-no, no son tan complejas como puede sonar! DESEMPEO DE PUESTOS DE PIPELINE Un puesto hace que el rendimiento de pipelines para degradar el rendimiento ideal Echemos un vistazo a una simple ecuacin para encontrar la aceleracin real de pipelining a partir de la frmula de la seccin anterior.

Pipelining se puede considerar como la disminucin de la CPI o el tiempo de ciclo de reloj.

Como es tradicional utilizar el CPI para comparar las pipelines, vamos a empezar con esa suposicin. El ideal CPI en un procesador pipeline es casi siempre 1. Por lo tanto, podemos calcular el pipeline del CPI:

Si dejamos de lado la sobrecarga de tiempo de ciclo del pipelining y asumir las etapas estn perfectamente equilibradas, entonces el tiempo de ciclo de los dos procesadores puede ser igual, lo que

Un caso importante es sencilla, donde todas las instrucciones tomar el mismo nmero de ciclos, que tambin debe ser igual al nmero de fases de pipelining (tambin llamado la la pipeline, que conduce a profundidad de la pipeline). En este caso, el unpipelined IPC es igual a la profundidad de

Si no hay puestos de venta de pipelines, esto lleva al resultado pipelining intuitiva que puede mejorar el rendimiento por la profundidad de la pipeline. Por otra parte, si pensamos en pipelining de mejorar el tiempo de ciclo de reloj, entonces podemos asumir que el CPI del procesador unpipelined, as como la del procesador segmentado, es de 1. Esto conduce a

En los casos en que las etapas de pipelines son perfectamente equilibrado y no hay ninguna sobrecarga, el ciclo de reloj en el procesador pipeline es menor que el ciclo de reloj del procesador unpipelined por un factor igual a la profundidad pipeline:

Esto conduce a la siguiente

Por lo tanto, si no hay puestos de venta, la aceleracin es igual al nmero de fases pipeline, que coincide con nuestra intuicin para el caso ideal. ESTRUCTURALES HAZARD

Cuando un procesador est canalizado, la ejecucin solapada de instrucciones requiere pipelining de las unidades funcionales y la duplicacin de los recursos para permitir que todas las combinaciones posibles de las instrucciones en la pipeline. Si una combinacin de instrucciones no se puede acomodar a causa de conflictos por los recursos, el procesador se dice que tiene un riesgo estructural.

Los casos ms comunes de los hazard estructurales surgen cuando alguna unidad funcional no est totalmente pipeline. Luego una secuencia de instrucciones que utilizan dicha unidad unpipelined no puede proceder a la tasa de un ciclo de reloj por. Otra forma duplicado suficiente para permitir que todas las combinaciones de las instrucciones de la pipeline a ejecutar. Por ejemplo, un procesador puede tener slo un registro de archivo de realizar dos escribe en un ciclo de reloj. Esto generar un hazard estructural. Cuando una secuencia de instrucciones se encuentra con este hazard, la pipeline, se parar una de las instrucciones hasta que la unidad necesaria est disponible. Tales puestos se incrementarn el CPI desde su valor habitual ideal de 1. Algunos procesadores pipeline han compartido una pipeline de una sola memoria para datos e instrucciones. Como resultado, cuando una instruccin contiene una referencia de memoria de datos, que entrarn en conflicto con la referencia de instrucciones para una instruccin ms tarde, como se muestra en la Figura A.4. Para resolver este hazard, se detendr la pipeline de 1 ciclo de reloj cuando el acceso a la memoria de datos se produce. que flota a travs de la pipeline que llevaba el espacio, sino llevar a ningn trabajo til. Vamos a ver otro tipo de plaza, cuando hablamos acerca de los hazards de datos. Los diseadores a menudo indican el comportamiento de parada mediante un Un puesto que comnmente se llama una. Burbuja de pipelines o simplemente burbuja, ya puerto de escritura, pero en ciertas circunstancias, la pipeline puede ser que desee comn de que los hazard estructurales parecen es en que algunos recursos no se ha

diagrama simple slo con los nombres de pipelining del escenario, como en la figura A.5. La forma de la figura A.5 muestra la plaza indicando el ciclo cuando se produce ninguna accin y simplemente cambiando la instruccin 3 hacia la derecha (que retrasa su ejecucin iniciar y terminar por 1 ciclo). El efecto de la burbuja pipeline es en realidad para ocupar los recursos para que la ranura de instrucciones a medida que viaja a travs de la pipeline. Ejemplo: Vamos a ver hasta qu punto el hazard de carga estructural podra costar. Supongamos que las referencias de datos constituyen el 40% de la mezcla, y que el ideal CPI del procesador pipeline, ignorando el hazard estructural, es 1. Supngase que el procesador con el hazard estructural tiene una velocidad de reloj que es 1,05 veces mayor rendimiento, es el pipeline, con o sin el riesgo estructural ms rpido, y por cunto? que la velocidad de reloj del procesador sin el hazard. Sin tener en cuenta las prdidas de

Respuesta: Hay varias formas en que podra resolver este problema. Quiz la ms sencilla consiste en calcular el tiempo de instruccin promedio de los dos procesadores: El tiempo de instruccin media = CPI x tiempo de ciclo de reloj Ya que no tiene puestos, el tiempo de instruccin promedio para el procesador ideal es simplemente el tiempoideal de ciclo de reloj. El promedio de tiempo de instruccin para el procesador con el hazard estructural es

Figura A.4 Un procesador con puerto de memoria solo va a generar un conflicto cada vez que una referencia de memoria. En este ejemplo, la instruccin de carga se utiliza la memoria o un acceso de datos al mismo tiempo la instruccin 3 quiere recuperar una instruccin de la memoria.

Figura A.5 Figura A.5 Una pipeline estancado por un hazard, una estructura de carga con el puerto de memoria. Como se muestra aqu, la instruccin de carga efectivamente se roba un ciclo de instruccin-fetch, causando la pipeline entre en prdida, ninguna instruccin se inici el ciclo de reloj 4 (que normalmente se inicia la instruccin / + 3). Debido a que la instruccin que van a buscar se ha estancado, todas las dems instrucciones de la pipeline antes de la instruccin se estanc pueda continuar con normalidad. El ciclo plaza continuar pasando a travs de la pipeline, de modo que ninguna instruccin completa en un ciclo de reloj 8. A veces, estos diagramas de pipelines se dibujan con el puesto que ocupa toda una fila horizontal y la instruccin 3 de ser trasladado a la siguiente fila, en cualquier caso, el efecto es el mismo, ya que la instruccin / + 3 no comienza la ejecucin hasta que el ciclo 5. Usamos el formulario de que la instruccin / '+ 1 y + / 2 no son las referencias de memoria. Claramente, el procesador sin el hazard estructural es ms rpido, podemos utilizar la relacin de los tiempos de instruccin promedio a la conclusin de que el procesador sin el hazard es 1,3 veces ms rpido. Como una alternativa a este hazard estructural, el diseador puede proporcionar arriba, ya que ocupa menos espacio en la figura. Tenga en cuenta que esta cifra supone

un acceso de memoria independiente para las instrucciones, ya sea mediante el fraccionamiento de la cach de instrucciones en separado y cachs de datos, o mediante el uso de un conjunto de buffers, generalmente llamado tampones de instruccin, para mantener instrucciones. El captulo 5 analiza tanto la cach de instrucciones y las ideas de divisin de amortiguamiento.

Si todos los dems factores son iguales, un procesador sin hazard estructurales siempre tiene un menor CPI. Por qu, entonces, un diseador de permitir que los hazard

estructurales? La razn principal es reducir el costo de la unidad, ya que pipelining todas las unidades funcionales, o la duplicacin de ellos, puede resultar demasiado costoso. Por ejemplo, los procesadores que soportan tanto una instruccin y un acceso a la cach de datos en cada ciclo (para evitar el hazard estructural del ejemplo anterior) requieren ancho de banda total de memoria doble y, a menudo tienen una mayor anchura de banda a los pasadores. Del mismo modo, pipelining totalmente un multiplicador de punto que no valga la pena el costo para evitarlo. DATOS DE HAZARD Un efecto importante de pipelining consiste en cambiar la temporizacin relativa de y controlar los hazard. Los hazard de datos se producen cuando la pipeline cambia el orden de lectura / escritura de los accesos a operandos de modo que la orden difiere de la orden secuencial visto por la ejecucin de instrucciones en un procesador unpipelined. Considere la posibilidad de la ejecucin pipeline de estas instrucciones: instrucciones por la superposicin de su ejecucin. Esta superposicin introduce los datos flotante consume un montn de puertas. Si el riesgo estructural es poco frecuente, puede

Todas las instrucciones despus de la DADD utilizar el resultado de la instruccin DADD.

Como se muestra en la Figura A.6, la instruccin DADD escribe el valor de RI en la etapa de pipeline BM, pero la instruccin DSUB lee el valor durante su etapa de identificacin. Este problema se llama un hazard de datos. A menos que se tomen precauciones para evitar que, la instruccin DSUB leer el valor incorrecto y tratar de usarlo. De hecho, el valor utilizado por el DSUB instruccin no es an determinista: Aunque podramos pensar que es lgico suponer que DSUB siempre utilizar el valor de RL que fue asignado por una entre el DADD instrucciones y DSUB, la etapa de la BM DADD completar, y el valor de obviamente inaceptable. figura A.6, la escritura de Rl no se completa hasta el final del ciclo de reloj 5. Por lo tanto, La instruccin AND tambin es afectada por este hazard. Como podemos ver en la instruccin antes de la DADD, esto no es siempre el caso. Si una interrupcin debe ocurrir Rl en ese punto ser el resultado de la DADD. Este comportamiento impredecible es

la instruccin y que lee los registros durante el ciclo de reloj de 4 recibir los resultados equivocados. ocurre en un ciclo de reloj 6, despus de la escritura en el registro. La instruccin OR lee en la segunda mitad del ciclo y la escribe en la primera mitad. hazards que implica la DSUB y el e instrucciones. La instruccin XOR opera adecuadamente debido a que su registro de lectura

tambin opera sin incurrir en un riesgo, porque llevamos a cabo el archivo de registro se El siguiente apartado se describe una tcnica para eliminar los puestos de venta de los

Figura A.6 El uso del resultado de la instruccin DADD en los siguientes tres instrucciones provoca un hazard, ya que el registro no est escrito hasta despus de dichas instrucciones leerlo.

Minimizacin de Hazard Puestos de datos mediante el envo de

El problema planteado en la Figura A.6 se puede resolver con una tcnica llamada reenvo de hardware simple (tambin llamado a veces sin pasar por un cortocircuito). La idea clave en la expedicin es que el resultado no es realmente necesario por la DSUB hasta despus de la DADD realidad que produce. Si el resultado puede ser movido de la pipeline

registro donde el DADD se almacena a donde el DSUB que necesita, entonces la necesidad de una plaza puede ser evitado. Uso de esta observacin, el reenvo funciona de la siguiente manera: 1. El resultado tanto de la ALU EX / MEM y MEM / WB registros pipeline es siempre se retroalimenta a las entradas de la ALU. 2. Si el hardware detecta que el reenvo de la anterior operacin de ALU ha escrito el registro correspondiente a una fuente de la corriente de operacin ALU, la lgica de control selecciona el resultado transmitido como la entrada de ALU en lugar del valor ledo desde el archivo de registro.

Tenga en cuenta que con la expedicin, si el DSUB se ha estancado, el DADD se completar y el por el paso no se activar. Esta relacin tambin es cierto para el caso de una interrupcin entre las dos instrucciones. Como el ejemplo de la Figura A.6 muestra, es necesario que transmita los resultados no slo de la instruccin inmediatamente anterior, pero, posiblemente, de una instruccin que comenz a principios de 2 ciclos. Figura A.7 muestra nuestro ejemplo, con los escritura. Esta secuencia de cdigo puede ser ejecutado sin paradas. funcional que requiere: Un resultado se enva de la pipeline registro correspondiente a la salida de una unidad a la entrada de otro, y no slo desde el resultado de una unidad para la entrada de la misma unidad. Considrese, por ejemplo, la secuencia siguiente: Desvo se puede generalizar a incluir la consecuencia directa de la unidad caminos de circunvalacin en el lugar y destacando el momento del registro de lectura y

Figura A.7 Un conjunto de instrucciones que depende del resultado DADD utiliza rutas de reenvo para evitar el hazard de los datos. en la primera es reproducido ALU o recibe sus resultados, mediante la transmisin a Las entradas para el DSUB y el avance y las instrucciones de la pipeline se registra

travs del archivo de registro, que se logra fcilmente mediante la lectura de los registros en la segunda mitad del ciclo y la escritura en el primera mitad, como las lneas discontinuas en los registros indican. Tenga en cuenta que el resultado transmitido puede ir a cualquiera de las entradas ALU, de hecho, las dos entradas de UTA podra utilizar insumos enviados ya sea de la misma pipeline de registro o registros de pipelines diferentes. Esto ocurrira, por ejemplo, si la instruccin AND era AND R6, R1, R4.

Para evitar que un puesto en esta secuencia, fuera necesario que transmita los valores de la salida del ALU y la salida de la unidad de memoria de la pipeline se registra en la ALU y entradas de datos de memoria. Figura A.8 muestra todas las rutas de desvo para este ejemplo.

Figura A.8 Transmisin de operandos requeridos por las tiendas durante el MEM. El resultado de la carga se transmite desde la memoria de salida a la entrada de memoria para ser almacenado. Adems, la salida ALU se remiti a la entrada de ALU para el clculo de la direccin de la carga y el almacn (este no es diferente de reenvo a otra operacin muestra arriba), el resultado sera necesario que se transmitir a evitar una prdida. HAZARD DE DATOS QUE REQUIEREN DE PUESTOS Por desgracia, no todos los hazards potenciales de datos pueden ser manejados por derivacin. Considere la siguiente secuencia de instrucciones: de ALU). Si el almacn dependa de una operacin ALU inmediatamente anterior (no se

El camino de datos pipeline con las rutas de derivacin para este ejemplo se muestra en la Figura A.9. Este caso es diferente de la situacin con las back-to-back operaciones de UTA. La instruccin LD no tiene los datos hasta el final del ciclo de reloj 4 (su ciclo MEM), mientras que la instruccin DSUB necesita tener los datos por el comienzo de ese ciclo de reloj. As, el hazard de datos utilizando el resultado de una instruccin de carga no puede muestra, por ejemplo, una ruta de transmisin tendra que operar hacia atrs en el tiempo ser completamente eliminado con hardware sencillo. Como muestra la Figura A.9

de una capacidad no est disponible para los diseadores de computadoras! Podemos transmita el resultado inmediato de la ALU de la pipeline registra para su uso en la operacin AND, que comienza 2 ciclos de reloj despus de la carga. Asimismo, la instruccin OR no tiene ningn problema, ya que recibe el valor a travs del fichero de registro. Para el DSUB instruccin, el resultado transmitido llega demasiado tarde en el extremo de un ciclo de reloj, cuando se necesita al principio. La instruccin de carga tiene un retardo o latencia que no puede ser eliminado mediante la transmisin solo. En su lugar, tenemos que agregar hardware, denominado bloqueo de la pipeline, para preservar el patrn de la correcta ejecucin. En general, un bloqueo de pipelines detecta un hazard y los puestos de la pipeline hasta que el hazard haya pasado. En este caso, el enclavamiento de la pipeline se atasca, comenzando con la instruccin que introduce un puesto o una burbuja, al igual que lo hizo por el riesgo estructural. El CPI para la instruccin estancado aumenta por la longitud de la plaza (1 ciclo de reloj en este caso). Figura A. 10 muestra la pipeline antes y despus de la plaza utilizando los nombres de las fases pipeline. Debido a que el puesto hace que las instrucciones de arranque con la DSUB para mover un ciclo ms tarde en el tiempo, la transmisin a la instruccin AND ahora pasa por el archivo de registro y de expedicin no del todo es necesaria para la instruccin OR. La insercin de la burbuja hace que el nmero de ciclos para completar esta secuencia a crecer por una. Sin instruccin se inicia durante el ciclo de reloj de 4 (y acabado ninguno durante el ciclo 6). desea utilizar los datos hasta la instruccin fuente que produce. Este bloqueo de pipelines

Figura A.9 La instruccin de carga puede pasar por alto sus resultados a las instrucciones de los AND y OR, pero no a la DSUB, ya que eso significara enviar el resultado de "tiempo negativo".

Figura A.10 En la mitad superior, podemos ver por qu una plaza se necesita: El ciclo de MEM de la carga produce un valor EX que se necesita en el ciclo de la DSUB, que se como se muestra en la mitad inferior. BRANCH HAZARDS produce al mismo tiempo. Este problema se resuelve mediante la insercin de una plaza,

Los hazard de control pueden causar una prdida de rendimiento mayor para nuestra cartera de MIPS que hacen los hazards de datos. Cuando una rama se ejecuta, puede o no puede cambiar el PC para algo ms que su valor actual ms 4. Recordemos que si una rama cambia el PC a su direccin de destino, es una rama tomada, y si cae, no se toma, o sin aprovecharse. Si la instruccin i es una rama tomada, a continuacin, el PC normalmente no se cambi comparacin. Figura A. 11 muestra que el mtodo ms simple de hacer frente a las ramas es volver a hacer el fetch de la instruccin a raz de una sucursal, una vez que se detecta en la rama de identificacin (cuando las instrucciones son decodificadas). El primer ciclo de SI es esencialmente un puesto, porque nunca se lleva a cabo un trabajo til. Usted puede haber notado que si la rama se sin aprovecharse, a continuacin, la repeticin de la. Etapa de IF es innecesaria, ya que la instruccin correcta fue realmente exagerado Vamos a desarrollar varios planes para tomar ventaja de este hecho en breve. Un ciclo de parada para cada rama dar lugar a una prdida de rendimiento del 10% al 30% dependiendo de la frecuencia de la ramificacin, por lo que vamos a examinar algunas de las tcnicas para hacer frente a esta prdida. hasta el final de identificacin, despus de la finalizacin del clculo de direcciones y de

Figura A.11 Una rama provoca un puesto de un ciclo en la pipeline de cinco etapas. La instruccin despus de que la rama se recupera, pero la instruccin se ignora, y la captacin que se reinicie una vez que el destino de la ramificacin que se conoce. Es probablemente obvio que si la rama no se toma medidas, el segundo SI para el sucesor de la rama es redundante. Este problema se solucionar en breve. LA REDUCCIN DE SANCIONES PIPELINE BRANCH Hay muchos mtodos para hacer frente a los puestos de pipelines causados por el retraso rama, y se discuten cuatro esquemas simples en tiempo de compilacin en este apartado. En estos cuatro esquemas de las acciones de una sucursal son la electricidad esttica que se fijan para cada sucursal durante toda la ejecucin. El software se puede tratar de minimizar la pena de la rama con el conocimiento del sistema de hardware y del

comportamiento de la rama. Los captulos 2 y 3 Mira un hardware ms potente y las tcnicas de software para la prediccin de saltos, tanto esttica como dinmica. El esquema ms simple de manejar las ramas es la freeze ox flush la pipeline, la celebracin o eliminar todas las instrucciones despus de la rama hasta que el destino de la rama que se conoce. El atractivo de esta solucin reside principalmente en su simplicidad, tanto para hardware y software. Es la solucin utilizada anteriormente en la reducido por el software. pipeline se muestra en la Figura A11. En este caso la pena de rama es fija y no puede ser Un mayor rendimiento, y slo un poco ms complejo, el esquema consiste en tratar

a todas las ramas que no se toma, simplemente permitiendo que el hardware de continuar como si la rama no se ejecutaron. En este caso, se debe tener cuidado de no cambiar el estado del procesador hasta que el resultado rama se sabe con certeza. La complejidad de este plan surge de la necesidad de conocer que el estado puede ser cambiado por una instruccin y la forma de "marcha atrs" como un cambio. En el sencillo de cinco etapas de pipelining, este esquema de predecir-no-tomada o prevista sin aprovecharse-se lleva a cabo mediante la continuacin en busca de nada fuera de lo comn est sucediendo. Si la rama se toma, sin embargo, necesitamos dar un giro la instruccin a buscar en un no-op y reiniciar la captacin en la direccin de destino. Figura A. 12 muestra las dos situaciones. instrucciones como si el poder fuera una instruccin normal. El pipeline se ve como si

Figura A.12 La prediccin-no-tomada esquema y la secuencia de pipeline cuando la rama se sin aprovecharse (arriba) y toma (abajo). Cuando la rama se sin aprovecharse, determinado durante la identificacin, hemos exagerado la cada a travs de y continuar justo. Si la rama se toma durante el ID, que reiniciar la captacin en el destino de la

ramificacin. Esto hace que todas las instrucciones despus de la rama para detener un ciclo de reloj. Un esquema alternativo es tratar a todas las ramas en que se haya. Tan pronto como la rama se decodifica y la direccin de destino se calcula, se asume el poder que deben tomarse y comenzar a ir a buscar y ejecutar en el destino. Porque en nuestro pipeline de cinco etapas que no sabemos el objetivo de atender ms temprano de lo que sabemos el resultado rama, no hay ninguna ventaja en este enfoque de esta pipelining. En algunos procesadores, en especial aquellas con cdigos de condicin implcita establecidos o ms poderosa (y por tanto ms lento) las condiciones de la rama-rama de destino se conoce antes de que el resultado de la rama, y un esquema de predecir-tomada podra tener sentido. En cualquiera de un esquema de predecir-tomadas o previstas-no-tomar, el el camino ms frecuente coincida con la eleccin del hardware. Nuestro esquema de cuarto ofrece ms oportunidades para el compilador para mejorar el rendimiento. Un cuarto esquema de uso en algunos procesadores se llama la rama retardada. Esta tcnica se utiliza mucho en los primeros procesadores RISC y funciona razonablemente retraso de una rama es bien en la pipeline de cinco etapas. En una rama retardada, el ciclo de ejecucin con un compilador puede mejorar el rendimiento mediante la organizacin del cdigo para que

El sucesor secuencial es en la ranura de retraso de la rama. Esta operacin se ejecuta si l retardo de rama se muestra en la Figura A. 13. Aunque es posible tener una rama retrasar

se toma la rama. El comportamiento pipelining del pipeline de cinco etapas con un ms de uno, en la prctica, casi todos los procesadores con rama retardada tienen un retardo de instruccin individual; se utilizan otras tcnicas si la pipeline tiene una pena rama ms larga posible.

Figura A.13 El comportamiento de una rama de retraso es el mismo si l se toma la rama. Las instrucciones de la ranura de retardo (slo hay una ranura de retardo para MIPS) son ejecutados. Si la rama se sin aprovecharse, la ejecucin contina con la instruccin despus de la instruccin demora rama, y si l se toma la rama, la ejecucin contina en la meta de la rama. Cuando la instruccin en la ranura de retraso de la rama es tambin una rama, el significado es claro: Si la rama no se toman medidas, lo que debera pasar a la rama en la ranura de retraso de la rama? Debido a esta confusin, las arquitecturas con las ramas de retardo a menudo no permitir poner una sucursal en la ranura de retardo. El trabajo del compilador es hacer que las instrucciones del sucesor vlido y til.

Una serie de optimizaciones se utilizan. Figura A. 14 muestra las tres maneras en que puede ser el retraso de las ramas programadas. restricciones impuestas a las instrucciones que estn programadas en las ranuras de retardo y (2) nuestra capacidad para predecir en tiempo de compilacin si una rama es probable que se tome o no. Para mejorar la capacidad del compilador para llenar los han introducido una rama de cancelar o dejar sin efecto. En una rama de cancelacin, la instruccin incluye la direccin de que la rama se predijo. Cuando la rama se comporta como lo hara normalmente, deber ser con una rama de retraso. Cuando la rama se convirti en un no-op. como se predijo, la instruccin en la ranura de retraso de la rama simplemente se ejecuta predijo incorrectamente, la instruccin en la ranura de retraso de la sucursal slo se espacios de sucursales de retardo, la mayora de los procesadores con ramas condicionales Las limitaciones de retraso-la rama de programacin se derivan de (1) las

Figura A.14 Programacin de la ranura de retraso de la rama. El cuadro de la parte superior de cada par se muestra el cdigo antes de la programacin, el cuadro inferior se muestra el cdigo programado. En (a) la ranura de retardo est programada con una instruccin independiente desde antes de la rama. Esta es la mejor eleccin. Estrategias (b) y (c) se utilizan cuando (a) no es posible. En las secuencias de cdigos para (b) y (c), el uso de R1 en la condicin de bifurcacin impide la instruccin DADD (cuyo destino es Rl) se mueva despus de la rama. En (b) de la ranura de retraso de la rama est programada a partir del objetivo de la sucursal, por lo general la instruccin objetivo tendr que ser copiado, ya que se puede llegar por otro camino. Estrategia (b) es preferible cuando la rama se toma con alta probabilidad, tal como una rama bucle. Por ltimo, la rama puede ser programada desde el no-tomar-a travs de la cada como en (c). Para hacer esta optimizacin legal para (b) o (c), debe estar bien para ejecutar la instruccin se movi cuando el poder va en la direccin inesperada. Por bien entendemos que el trabajo se en (c) si R7 eran un registro temporal utilizada cuando la rama va en la direccin inesperada. pierde, pero el programa todava se ejecutar correctamente. Este es el caso, por ejemplo,

RENDIMIENTO DE LOS SISTEMAS DE SUCURSALES Cul es el desempeo eficaz de cada uno de estos esquemas? El pipeline efectiva aceleracin con penas de sucursales, suponiendo un ideal CPI de 1, es

Debido a la siguiente: Ciclos Pipeline plaza de ramas de Poder = frecuencia X pena de Poder obtenemos

La frecuencia de la ramificacin y la pena de rama puede tener un componente de ambas ramas condicionales e incondicionales. Sin embargo, este ltimo dominar ya que son ms frecuentes. Ejemplo: Para una tubera ms profunda, como por ejemplo que en un MIPS R4000, se necesitan al menos tres fases pipeline antes de que la direccin de la sucursal de destinoes conocido y un ciclo adicional antes de que la condicin se evale la rama, suponiendo que no hay puestos de venta en los registros en la comparacin condicional. Un retraso de tres etapas lleva a las faltas de ramificacin de los esquemas de prediccin ms simples tres que figuran en la figura A. 15. asumiendo las siguientes frecuencias: Buscar la incorporacin efectiva a la CPI derivada de las ramas de este pipeline,

Figura A15. Faltas de ramificacin de los esquemas de prediccin ms simples tres para construir un pipeline ms profundo.

Figura A.16 CPI sanciones para tres de prediccin de ramificacin esquemas y un pipeline de ms profundo. Respuesta Encontramos los IPC multiplicando la frecuencia relativa de sin aprovecharse resultados se muestran en la Figura A. 16. retraso. Si el CPI de base eran el 1 y ramas eran la nica fuente de puestos de venta, el parada-pipeline. El plan prev, sin aprovecharse sera 1,13 veces mejor que el sistema de parada-pipeline bajo los mismos supuestos. 475 Las diferencias entre los esquemas se incrementan sustancialmente con este mayor

incondicional, condicional y condicional ramas tomadas por las respectivas sanciones. Los

pipeline ideal sera 1,56 veces ms rpido que una tubera que se utiliza el esquema de