Tema 3: Soluciones a los ejercicios - myTeachingURJC/Arq-computadores-01 GitHub Wiki
Soluciones a los ejercicios del Tema 3: El procesador
Contenido
- S9: Nivel de Electrónica Digital
- S10: El computador NanoRisc-V
- S11: El procesador NanoRisc-V monociclo
- Autores
- Licencia
- Enlaces
S9: Nivel de Electrónica digital
Soluciones a los ejercicios propuestos en la sesión 9: Nivel Electrónica digital
Ejercicio 1
- Apartado a) Es un circuito combinacional porque está formado por la unión de puertas lógicas, que son combinacionales. En cuanto se produzca un cambio cualquiera de las entradas se propagará hacia las salidas, que se actualizarán transcurrido un tiempo
- Apartado b) El circuito tiene dos entradas de 1 bit, y dos salidas de 1 bit
- Apartado c) En total hay 4 caminos. El retardo de cada camino lo obtenemos sumando los retardos de las puertas que atraviesa
-
Camino 1:
AND1
yNOT2
. Retardo: C1 = 1 + 10 = 11ns -
Camino 2:
AND1
, yAND2
. Retardo: C2 = 1 + 4 = 5ns -
Camimo 3:
AND1
,OR
yAND2
. Retardo: C3 = 1 + 2 + 4 = 7ns -
Camino 4:
NOT1
,OR
yAND2
. Retardo: C4 = 1 + 2 + 4 = 7ns -
Apartado d) El camino crítico es el que tiene un retardo mayor. En este caso es debido al camino 1, con un retardo de 11ns
-
Apartado e) El retardo del circuito siempre es el de su camino crítico. Por tanto el retardo de este circuito es de 11ns. Una vez caracterizado, lo podemos sustituir por un bloque genérico, con dos entradas, dos salidas y un retardo de 11ns. Así lo podemos usar para calcular los retardos de otros circuitos
- Apartado f) Esta es la típica pregunta que te harán como ingeniero/a. Tenemos este sistema, ¿Cómo podemos mejorarlo?. Suelen ser preguntas complicadas que dependen de muchos factores. Y muchas veces como ingenieros no podemos cambiar todo lo que queramos. Pero esto te lo encontrarás en la vida real muchísimo
En el caso de este circuito, para mejorar el retardo nos fijamos en el camino crítico, que está formado por las puertas AND1
y NOT2
. Observamos que el retardo de la puerta NOT2 es muy alto (10ns). En el circuito tenemos otra puerta NOT, la NOT1
, que tiene un retardo mucho menor (1ns). Como ingenieros nos deberíamos preguntar por qué hay dos puertas NOT diferentes. Posiblemente cada una se ha comprado a un fabricante diferente, por personas del departamento de compras. O puede ser que que la NOT2 tenga otras características (como bajo consumo) y por eso tiene un retardo mayor. Una posible mejora sería sustituir la puerta NOT2 por una puerta NOT1. Tal vez no sea posible, porque hay más factores implicados, pero como ingenieros nuestro trabajo es aportar soluciones que mejoren el circuito
Esta es la mejora que se analiza en el ejercicio 2. Al hacer el cambio, el camino 1 deja de ser el crítico. Y ahora los críticos son el C3 y el C4, ambos con 7ns de retardo. Tendríamos una mejora de 11-7 = 4ns
Ejercicio 2
- Apartado a) Los nuevos retardos para los caminos son los siguientes:
Los caminos C3 y C4 tienen ambos un retardo de 7ns, por lo que son los nuevos caminos críticos. El retardo de este nuevo circuito es de 7ns
- Apartado b) Estos son los nuevos retardos:
Los caminos críticos siguen siendo los mismos, pero ahora el retardo ha bajado a 4ns
Ejercicio 3
-
Apartado a) El circuito está formado por la conexión en anillo de un circuito secuencial y uno combinacional. El secuencial es un registro de 1 bit y el combinacional la puerta NOT
-
Apartado b) Cuando el registro captura un bit, al cabo de 5ns (su retardo) este nueva valor está presente en la entrada de la puerta NOT y al cabo de 1ns adicional (retardo de la NOT) está presente en la entrada del registro. Por tanto, hasta que no transcurre un tiempo igual a 5ns + 1ns no hay un valor estable que se pueda capturar. El periodo mínimo es de 6ns. Lo que nos da una frecuencia máxima de funcionamiento de 1/6ns = 166.7MHz (aprox)
-
Apartado c) Analizamos el funcionamiento del circuito. Partimos de la situación inicial en la que hay un 0 almacenado en el registro, que al pasar por la puerta NOT se convierte en 1. Por la entrada del registro llega un 1, que queda a la espera de capturarse en el próximo flanco de reloj
Al llegar el siguiente ciclo, se captura este 1, pasa por la NOT, se convierte en 0 que queda a la espera en la entrada del registro. Al llegar el siguiente ciclo se captura y se estamos en la misma situación anterior (igual que al inicio)
En este dibujo vemos lo que ocurre durante los primeros 5 ciclos de reloj. Se ha representado con una flecha curva la llegada de un flanco de reloj (un ciclo nuevo), que hace que se produzca una transición al siguiente estado
Al cabo de 5 ciclos de reloj el registro tiene el valor 1
- Apartado d) Si nos fijamos en el estado del registro (q), vemos que en cada ciclo de reloj su valor cambia de 0 a 1 y de 1 a 0. Lo representamos en un cronograma:
Observamos que el periodo de la señal q es justo el doble del periodo del reloj del sistema. Es decir, su frecuencia es la mitad. Este circuito es un divisor de frecuencia: genera una señal cuadrada que tiene la frecuencia mitad del reloj del sistema. Como este componente se usa mucho, tiene nombre propio: biestable T
Ejercicio 4
-
Apartado a) El circuito está formado por la conexión en anillo de un registro de 2 bits y un sumador de 2 bits. La parte combinacional es el sumador, que tiene un retardo de 1ns, y el registro es la parte secuencial, con un retardo de 4ns
-
Apartado b) Para obtener la frecuencia máxima tenemos que fijarnos en el camino desde la salida del registro hasta que llega otra vez a su entrada. Podrían existir diferentes caminos. Siempre se toma el camino crítico. Es el que nos garantiza que en todos los casos el valor situado a la entrada del registro es estable, y por tanto se capturará correctamente al llegar el flanco de subida del reloj
En este circuito sólo hay un camino que tiene un retardo de 4ns + 1ns = 5ns en total. Al llegar un flanco de subda se captura el valor siguiente. Al cabo de 5ns este valor se ha guardado en el reg. La frecuencia máxima de funcionamiento será por tanto de 1 / 5ns = 0.2Ghz = 200Mhz
-
Apartado c): Analizando el circuito vemos que trata de un contador que va contando en binario 00, 01, 10, 11 (0,1,2,3,0,1,2,3,0...). Como me dicen que inicialmente empieza en 0, al llegar 3 ciclos de reloj, pasa a valer 11 (3)
-
Apartado d): En el siguiente ciclo de reloj, el registro pasará a valor 0, ya que los números que estamos usando son de 2 bits
-
Apartado e): Si no nos dicen nada, siempre supondremos que el circuito funciona a su máxima frecuencia, es decir que el periodo del ciclo es el calculado en el aparado b que era de 5ns. También sabemos que tarda 4 ciclos de reloj de volver otra vez a 0. Por tanto tarda 4 * 5ns = 20ns
Ejercicio 5
-
Apartado a) Está formado por un registro de 8 bits con entrada de write, es decir, que sólo se actualizará cuando la señal cnt valga 1 y llegue un flanco de subida de reloj. Tiene una parte secuencial, conectada en anillo, que es un sumador de 8 bits. El estado siguiente que calcula este sumador siempre será el valor del registro más 1. El retardo del registro es de 3ns y el del sumador de 1ns
-
Apartado b) La frecuencia máxima viene dada por el tiempo que se tarda en tener un valor estable en la entrada del registro para que se garantice que se captura con total seguridad. Eso lo garantizamos haciendo que el periodo del reloj sea al menos el valor del camino crítico, que en este caso es la suma de los dos retardos: 3ns + 1ns = 4ns. La frecuencia máxima será de 1 / 4ns = 0.25Ghz = 250Mhz
-
Apartado c) Se trata de un contador de 8 bits que se incrementa de 1 en 1. Pero, a diferencia del ejercicio anterior (5), es un contador que podemos controlar. Si la señal cnt está a 1, entonces cuenta (siempre cuando llega el flanco de subida del reloj), pero si está a 0 el registro mantiene su estado y no cambia
El enunciado nos dice que la señal cnt vale 0 inicialmente y que se mantiene así hasta la mitad del tercer ciclo, momento en el que se pone a 1. En los ciclos 1, 2 y 3 como cnt está a 0, el contador permanece a 0. Durante la mitad del tercer ciclo cnt se pone a 1, por lo que al llegar el flanco de subida del cuarto ciclo el contador se incrementa en 1 unidad, pasando de 0 a 1. Como en el ciclo 4 la señal cnt se pone a 0, el contador permanecerá a 1 el resto de ciclos
-
Apartado d) La señal de control del contador está durante 3 ciclos a cero y durante 1 activado. Este comportamiento se repite. El periodo total de repetición es de 4 ciclos de reloj. El periodo del reloj es el calculado en el apartado b: 4ns. Como el periodo es de 4 ciclos, el tiempo entre actualizaciones del contador es de 4 * 4ns = 16ns. El contador se incrementa en una unidad cada 16ns, es decir, que funciona a una frecuencia de 1 / 16ns = 62.5Mhz
La frecuencia máxima a la que puede funcionar es de 250Mhz, pero a través de la señal de control cnt lo que se hace es que funcione a una frecuencia 4 veces menor. Es un ejemplo de cómo hacer que un contador funcione más lentamente
S10: El computador NanoRisc-V
Soluciones correspondientes a la Sesión 10: Computador NanoRisc-V
Ejercicio 1
-
Apartado a) El retardo del camino que hay desde la salida del registro hasta su entrada es de 5ns + 5ns = 10ns. Este será el periodo mínimo para garantizar que hay una señal estable a la entrada del registro. La frecuencia rerá 1 / 10ns = 0.1 Ghz = 100Mhz
-
Apartado b) El circuito está formado por un registro de 32 bits conectado en anillo a través de un sumador. Es decir, que lo que tenemos es un circuito que cuenta de 4 en 4. Si inicialmente tiene el valor 0x00400000, en los siguientes 4 ciclos de reloj tendrá los valores 0x00400004, 0x00400008, 0x0040000C y 0x00400010
-
Apartado c) El valor mínimo del periodo de reloj será el que garantice que los valores capturados en los registros sean estables. Si llega un flanco de subida antes de que estos valores sean estables entonces no funcionará correctamente
Al conectar la memoria Rom tenemos un nuevo camino que va desde el registro origianl hacia el nuevo regitro. Al regar un flanco, el nuevo valor tarda un tiempo de 5ns (retardo del primer registro) + 10ns (retardo de la memoria) = 15ns en llegar a la entrada del segundo registro. En ese momento ya es un valor estable
Por otro lado tenemos el camino anterior, que tiene un retardo de 10ns. Nos quedamos con el mayor de ambos: 15ns. Es la manera de garantizar que ambos registros leen valores estables. Por tanto, ahora, la máxima frecuencia de funcionamiento es de 1 / 15ns = 66.7 Mhz
Ejercicio 2
-
Apartado a): El nanoRisc-v está conectado en anillo con la memoria de código. La frecuencia máxima de funcionamiento vendrá dada por el camino con retardo máximo. La lectura de cualquier instrucción tarda 10ns, sin embargo su ejecución depende del tipo que sea. Nos quedamos con el caso peor: 70ns. Por tanto, el camino crítico tendrá un retardo de 10ns + 70ns = 80ns. Y la frecuencia máxima será de: 1 / 80ns = 12.5Mhz
-
Apartado b): Dado que se trata de un procesador monociclo, se ejecuta una instrucción en cada ciclo de reloj. Como en total hay 6 instrucciones y cada ciclo tarda 80ns, el tiempo total será de 6 * 80ns = 480ns
Ejercicio 3
-
Apartado a): Todas las instrucciones se encuentran almacenadas en la memoria de código, por lo que se necesitarán 10ns para su lectura. Una vez leídas, se ejecutan. El enunciado nos indica que la ejecución, dentro del procesador, de todas las instrucciones es de 20ns. Por tanto, el tiempo que dardan las instrucciones de tipo R es de 10ns + 20ns = 30ns
-
Apartado b): La instrucción beq no realiza acceso a la memoria de datos, por lo que tarda lo mismo que las instrucciones R: 10 + 20 = 30
-
Apartado c): Idem con la instrucción addi: tarda 30ns
-
Apartado d): La instrucción ld accede a la memoria de datos en lectura por lo que requiere un tiempo adicional de 30ns. Su tiempo total será de 10ns para la lectura de la instrucción, 20ns para la ejecución dentro del procesador y 30ns para la lectura del dato. En total tarda 10 + 20 + 30 = 60ns
-
Apartado e): La instrucción sd realiza una escritura en la memoria de datos, que lleva un tiempo de 40ns. El cálculo es similar al de la instrucción ld: 10ns + 20ns + 40ns = 70ns
-
Apartado f): El camino crítico de este circuito está determiando por el mayor de los retardos, que se corresponde con la instrucción de sd, con un retardo de 70ns. El resto de instrucciones tardan menos. Es nuestro caso peor
-
Apartado g): La frecuencia máxima está determinada por el camino crítico, que tiene un retardo de 70ns. Por tanto, Fmax = 1 / 70ns = 14.3Mhz (aprox)
-
Apartado h): Este procesador tarda 1 ciclo por instrucción (CPI=1). El programa es un contador en t0 que cuenta 0,1 y 2. Al llegar a 3 se termina. El bucle se ejecuta 3 veces, y cada pasada del bucle son 4 ciclos (tiene 4 instrucciones): 4x3 = 12 ciclos. Además, hay dos instrucciones de inicialización, por lo que hay que añadir 2 ciclos más. Y un ciclo adicional que se pierde en el último salto, cuando t0 es 3. En total tarda: 2 + 12 + 1 = 15 ciclos
-
Apartado i): El tiempo total que tarda el programa se obtiene multiplicando los 15 ciclos por el periodo de la frecuencia de reloj (70ns): 1050ns. Tarda aproximadamente 1ms
Sesión 11: Procesador NanoRisc-V monociclo
Soluciones a los ejercicios de la Sesión 11: NanoRisc-V monociclo (I)
Ejercicio 1
En el procesador monociclo se ejecuta una instrucción en cada ciclo de reloj. Al llegar un flanco de subida es cuando se captura el nuevo estado del procesador (Valor de PC y de los registros), se da por concluida la instrucción y se comienza con la siguiente
a) En el estado actual, al comenzar a ejecutar la nueva instrucción, tenemos que el PC vale 0x104. La instrucción que se va a cargar es por tanto la de la dirección 0x104, que según vemos en la memoria es: add x5, x5, x6
. Como el registro x5 vale 20 y el registro x6 1, el valor que tendrá x5 en el siguiente ciclo será de 20 + 1 = 21. Durante este ciclo se calcula el siguiente estado, que será PC = 0x108 y x5 = 21. Al llegar el flanco de subida del reloj, ese será el nuevo estado
b) El nuevo estado ahora es PC=0x108, X5 = 21 y x7 = 0. La instrucción a ejecutar es: beq x5, x7, 4
. Se compara x5 con x7 y si son iguales el PC se actualiza al valor PC + 8. Pero como son diferentes, el siguiente valor de PC será PC+4. Por tanto, al llegar el siguiente flanco el nuevo estado será: PC = 0x10C, X5=21, X6=1 y el resto de registros a 0
c) El valor del PC es ahora de 0x10C, por lo que se ejecuta la instrucción beq x0,x0,0
. Esta instrucción se cumple siempre, por lo que se asigna al PC el valor de PC+0. Es decir, que cuando llegue el siguiente flanco de subida el PC se queda con el mismo valor, y también los registros. Por tanto, ya no hay cambio de estado. El procesador permanece sin cambios hasta que se haga un reset
Ejercicio 2
a) Para calcular el retardo de la instrucción pedida tenemos que fijarnos en la ruta de datos y ver por qué elementos pasan los datos. También tenemos que conocer qué elementos hay en cada una de las fases:
-
Fetch: Es la fase de captura de la instrucción. La dirección sale del registro PC y llega a la memoria de instrucciones, que tiene un retardo de 400ps. Al cabo de ese tiempo ya está la instrucción lista. Retardo de fetch: 400ps
-
Decodificación: En esta fase se obtienen los valores de los registros operandos usados. La intrucción que llega de la memoria por el pin inst se descompone en sus diferentes campos. Como el retardo del componente de formato NO lo tenemos, supondremos que es despreciable y asumiremos un valor de 0. La instrucción tiene estos tres operandos:
- Registro destino (rd): 5
- Regisgtro fuente 1 (rs1): 0
- Valor inmediato: 20
Estos valores llegan al banco de registros, cuya lectura es combinacional y tiene un retardo dado de 200ps. Por tanto, el retardo en la decodificación es de 200ps
A partir de la fase de ejecución tenemos que conocer el valor de las señales de control, para saber las posiciones de los multiplexores. Esta información la vemos en la tabla de control. Como se trata de la instrucción addi, el valor de la señal de control AluSrc es 1
-
Ejecución: Es la fase que se lleva a cabo en la ALU. Le llega el operando x0 y el valor inmediato 20. La operación a realizar es la suma. Por tanto, al cabo de 120ps se tiene el resultado. Retardo de la fase de ejecución: 120ps. Como no nos dan los retardos de los multiplexores, asumiremos que son despreciables y les damos un valor de 0
-
Lectura de memoria: La instrucción addi NO accede a memoria por lo que el retardo de esta fase es 0
-
Escritura de estado: El resultado de la ALU llega a la entrada data del banco de registros. La señal RegWrite es 1 (se obtiene de la tabla de control). Esta fase se realiza cuando llega un flanco de reloj, por lo que forma parte del siguiente ciclo (la escritura se hace en paralelo con la lectura de la siguiente instrucción). El retardo de esta fase es 0 (0ps después de terminar el ciclo de ejecución los datos ya están estables y listos para su escritura. No hay que hacer cálculos adicionales)
b) El valor siguiente del PC se ha obtenido previamente, tras 100ps + 400ps desde la llegada del flanco del reloj. Se ha hecho en paralelo con la etapa de la decodificación. El camino crítico está en el estado de los registros, que en la instrucción addi se actualiza al final. Por tanto, para el cálculo del retardo tenemos en cuenta este camino peor. Sumando los retardos de todas las etapas tenemos el retardo de esta instrucción:
-
Retardo instrucción addi: Retardo Fech + Retardo Decodificación + Retardo Ejecución + Retardo write = 400ps + 200ps + 120ps = 720ps
Esto significa que, trasncurridos 720ps desde la llegada del último flanco de subida, los valores que se tienen dentro del procesador son estables. Y por tanto se pueden capturar con seguridad.
El valor estable del PC se obtiene transcurridos 400ps + 100ps = 500ps. El tiempo que se toma es el peor: 720ps
Ejercicio 3
a) Instrucción: add x5,x5,x6
Se trata de una instrucción de tipo R, que tiene sus operandos en 3 registros. Actuamos de la misma manera que en el ejercicio 2: nos fijamos en el camino que siguen los datos hasta que sean estables (y ya no cambien). En ese punto tendremos el retardo de la instrucción. De todos los caminos que se recorren en paralelo, nos quedamos con el más largo
-
Retardo de Fetch: Es el tiempo que se tarda en obtener el valor de la instrucción. Es igual que en el caso anterior: 400ps. Si nos fijamos, este retardo está dado SIEMPRE por el retardo de la memoria, y será el mismo para TODAS las instrucciones
-
Retardo de decodificación: Está determinado por el retardo en la lectura del banco de registros, que es de 200ps
-
Retardo de ejecución: Determinado por la Alu. Los operandos que llegan a la Alu son x5 y x6. El multiplexor de entrada, en este caso, está seleccionando el registro fuente 2 (AluSrc=0). El retardo de esta fase está dado por el de la Alu, que lo conocemos: 120ps
-
Retardo de lectura de memoria: NO hay acceso a memoria: 0
-
Retardo de escritura: Igual que antes: 0
-
Retardo total: 400ps + 200ps + 120ps = 720ps
b) Instrucción sub x7, x7, x8
. Se calcula de la misma manera.... Pero... vemos que se trata de una instrucción de tipo R también. Y los oeprandos atraviesan los mismos componentes, por lo que el retraso será igual que antes: 720ps
c) Instrucción and x9, x10, x11
. Es también una instrucción de tipo R. El retardo es el mismo: 720ps
Ejercicio 4
- a) Instrucción
ld x1, 0x100(x2)
La fase de fetch y de decodificación son iguales para TODAS las instruccones. Como los datos que me dan son iguales que los de los ejercicios anteriores, los retardos de estas fases son también iguales:
-
Retardo de Fetch: 400ps
-
Retardo de decodificación: 200ps
-
Retardo de ejecución: Los operandos usados son rd = 1, rs1 = 2, imm = 0x100. La ejecución es similar a la insgtrucción addi (ambas son instrucciones de tipo I). El retaro de ejecución es el de la Alu: 120ps
-
Retardo de acceso a memoria: La instrucción de load accede a la memoria de datos. El retardo de esta fase es igual al tiempo que tarda la memoria de datos en leer un dato: 350ps
-
Retardo de escritura: En el registro destino se escribe el dato leído de memoria. La señal MemToReg está a 1 por lo que llega a la entrada data del banco de registros es el valor leído de la memoria. La escritura se realiza cuando llega el flanco de subida. Los datos son estables en cuando se reciben de la memoria de datos, por lo que el tiempo de esta fase es también 0
-
Retardo de la instrucción: 400ps + 200ps + 120ps + 350ps = 1070
-
b) Instrucción:
ld x3, 0(x0)
. Al tratarse de una instrucción load, su rettraso es el mismo que la anterior. Los datos circulan por los mismos componentes, por lo que sus retardos será igual. Retardo de la instrucción: 1070
Ejercicio 5
-
a) Instrucción:
sd x1, 0x100(x2)
- Retardo Fetch: 400ps
- Retardo de decodificación: 200ps
- Retardo de ejecución: 120ps
- Retardo de lectura de memoria: No hay lectura: 0ps
- Retardo de escritura: Escritura síncrona: 0ps
- Retardo total: 400ps + 200ps + 120ps = 720ps
-
b) Instrucción:
sd x3, 0(x0)
. Igual que la instrucción anterior. Los datos atraviesan los mismos componentes. Por tanto el retardo es el mismo
Ejercicio 6
-
a) Instrucción:
beq x5, x6, 4
- Retardo Fetch: 400ps
- Retardo de decodificación: 200ps
- Retardo de ejecución: 120ps
- Retardo de lectura de memoria: No hay lectura: 0ps
- Retardo de escritura: La salida zero de la Alu se usa para calcular la dirección de salto. Por tanto, hasta que no se obtiene este valor no podemos tener un valor estable para PC. Por ello, en esta fase hay que añadir el retardo del sumador: 100ps
- Retardo total: 400ps + 200ps + 120ps + 100ps = 820ps
Ejercicio 7
Este ejercicio es una recopilación de los datos de los ejercicios 2,3,4,5 y 6:
- a)
Instrucción | Tiempo de ejecución |
---|---|
addi x5, x0, 20 |
720ps |
add x5, x5, x6 |
720ps |
ld x1, 0x100(x2) |
1070ps |
sd x1, 0x100(x2) |
720ps |
beq x5, x6, 4 |
820ps |
- b)
La frecuencia máxima está determinada por el camino crítico: es de mayor retardo. Se corresponde con la instrucción load, con un retardo de 1070ps. Por tanto, el periodo mínimo de reloj es de 1070ps. Y la máxima frecuencia es: Fmax = 1 / Tmin = 1 / 1070ps, que es aproximadamente igual a 934.6 Mhz
Ejercicio 8
-
a) La frecuencia máxima se calcula siempre para el caso peor. La instrucción más crítica es la de load, que realiza dos accesos a memoria, por tanto será esta la que defina el caso peor:
-
Retardo de load: Fetch(400ps) + decod(200ps) + Ejecución (120ps) + Mem(350ps)= 1070ps = 1.07ns
Por tanto, el periodo mínimo deberá ser igual a Tmin = 1.07ns. La frecuencia máxima es de 1/1.07ns = 934.6Mhz (aprox)
- b) No hay NINGUNA MEJORA del rendimiento, ya que no se mejora el caso peor, que sigue siendo el de la instrucción de load. Por tanto la frecuencia máxima de funcionamiento sigue siendo la misma que antes
Ejercicio 9
-
a): El caso peor es la intrucción de load que tiene el siguiente retraso: fetch(400ps) + decod(200ps) + exe(150ps) + Mem(450ps) = 1.2ns. La frecuencia máxima es de: 1/1.2ns = 833.3Mhz
-
b): Recalculamos los retardos para todas las etapas teniendo en cuanta los nuevos retardos:
- Fetch: Desde que llega el flanco de subida hasta que el valor del PC está disponible tranacurre un terardo de 20ps. A partir de ese momento ya se accede a memoria a leer la instrucción correcta. Retardo de Fetch: 400ps + 20ps
- Decod: Aquí no hay multiplexores: 200ps
- Exec: Multiplexor de acceso a la Alu más el retardo de la Alu: 5ps + 150ps
- Mem: 450ps
- Write: Hay un multiplexor: 5ps
- Retardo total: Fetch(400ps+ 20ps) + decod(200ps) + exe(5ps + 150ps) + mem(450ps) + WB(5ps) = 1230ps
- Frecuencia máxima: 813Mhz
Autores
- Katia Leal Algara
- Juan González-Gómez (Obijuan)