¿La canalización de la CPU siempre implica una ruta de datos de ciclo múltiple?

5

Estoy estudiando la CPU MIPS y tengo una pregunta muy básica sobre la ruta de datos. Dado que la CPU MIPS utiliza una canalización de 5 etapas, eso significa que la tubería está utilizando una ruta de datos multiciclo, ¿correcto? Si una CPU tiene instrucciones donde los ciclos por instrucción es mayor que 1, la CPU está utilizando una ruta de datos de varios ciclos. ¿Correcto?

Supongo que estoy tratando de entender si hay un caso en el que puedas tener una CPU canalizada que NO esté utilizando una ruta de datos de múltiples ciclos. En mi opinión, la canalización siempre implica una ruta de datos multiciclo. ¿Es ese el caso? ¿O hay excepciones?

    
pregunta mjh2007

2 respuestas

4

Una CPU canalizada implica una ruta de datos de múltiples ciclos, precisamente porque se necesitan cinco ciclos de reloj para que una instrucción pase de Recuperar a Escritura por escrito.

Donde estoy confundido es aquí "a diferencia de la CPU de múltiples ciclos, la ruta de datos canalizada requiere que cada instrucción use las cinco etapas de ejecución".

Deberías terminar de leer el siguiente párrafo que estás citando. Ese requisito es solo para evitar que dos instrucciones terminen al mismo tiempo.

supongamos que usamos las latencias de nuestra CPU de varios ciclos e intentamos ejecutar una instrucción de carga seguida de una instrucción de adición. la instrucción de carga requerirá cinco ciclos para ejecutarse, y la instrucción de adición requerirá cuatro ciclos . por lo tanto, si comenzamos a ejecutar la instrucción de carga en el ciclo 1, finalizará la ejecución en el ciclo 5. estaremos en proceso, por lo que podemos comenzar a ejecutar la instrucción de adición en el ciclo 2, y finalizará en el ciclo 5. esto es un problema: tenemos dos instrucciones que terminan en el ciclo 5 : ambos intentarán escribir en el archivo de registro en el ciclo 5. esto es un problema, porque nuestro archivo de registro solo tiene un puerto de escritura.

    
respondido por el ajs410
4

Muchos de los antiguos microprocesadores de 8 bits (antes del 8086, digamos) tenían instrucciones que demoraban más de un ciclo en ejecutarse y no tenían capacidad de canalización. Cada instrucción pasaría por las fases de búsqueda, decodificación, ejecución y reescritura, pero cada una se ejecutaría antes de que pudiera comenzar la siguiente. Un poco como tener una autopista de NY a DC y dejar solo un auto a la vez.

La canalización aprovecha el hecho de que, por ejemplo, podría estar usando la lógica de obtención de instrucciones para obtener la instrucción next mientras ejecuta la actual. Esto se conoce como paralelismo de nivel de instrucción, ya que tiene más de una instrucción ejecutándose a la vez. Ahora, en la analogía de la carretera, no tiene que esperar a que el primer automóvil llegue a DC antes de dejar otro en NY. Este tipo de cosas comenzaron a suceder alrededor del 8086/8088. (y no había duda de otros, pero ofrezco el 8086 simplemente como un punto de referencia en el tiempo)

Entonces, no, tener instrucciones que requieran más de un ciclo no implica canalización.

Por otra parte, si todas sus instrucciones pudieran ejecutarse en un solo ciclo, no habría ninguna ventaja en la canalización, ya que efectivamente no habría manera de ejecutar diferentes etapas de diferentes instrucciones al mismo tiempo. Por lo tanto, la canalización parece implicar que las instrucciones se pueden descomponer en diferentes fases que se pueden paralelizar.

(Es realmente difícil imaginar qué tipo de instrucción se podría hacer en un solo ciclo, más allá de un simple NOP. Incluso las transferencias simples de registro a registro requerirían un ciclo para introducir el código de operación en el chip y otro ciclo para lograrlo. el efecto.)

    
respondido por el JustJeff

Lea otras preguntas en las etiquetas