por
pobrecito hablador
el Lunes, 07 Junio de 2004, 20:47h
(#311238)
Muy buena explicación, pero te puntualizo un par de detalles.
...la relación de saltos/instrucción es de 1/6. En el PIV tenemos 20 etapas así que es fácil encontrarse con 3 o 4 saltos a la vez en el pipe.
El problema es aún más grave porque al ser un procesador superescalar se están emitiendo múltiples instrucciones por ciclo. Si por ejemplo se emiten 4 inst/ciclo tendríamos 4*4=16 saltos en el pipeline, con lo que la especulación es aún mayor.
Es más importante tener un predictor de saltos bueno que te evite perder instrucciones por especulación... o un controlador de prefetch que se vaya trayendo instrucciones antes de que se pidan para acelerar aún más el tiempo de acceso a la memoria.
Bueno, esto depende del código en concreto que se esté ejecutando. Pero en general poner una caché grande y rápida (lo máximo que se pueda, claro) suele ayudar bastante a mejorar el tiempo de cpu.
Re:¿qué es lo siguiente?
(Puntos:0)Muy buena explicación, pero te puntualizo un par de detalles.
...la relación de saltos/instrucción es de 1/6. En el PIV tenemos 20 etapas así que es fácil encontrarse con 3 o 4 saltos a la vez en el pipe.
El problema es aún más grave porque al ser un procesador superescalar se están emitiendo múltiples instrucciones por ciclo. Si por ejemplo se emiten 4 inst/ciclo tendríamos 4*4=16 saltos en el pipeline, con lo que la especulación es aún mayor.
Es más importante tener un predictor de saltos bueno que te evite perder instrucciones por especulación... o un controlador de prefetch que se vaya trayendo instrucciones antes de que se pidan para acelerar aún más el tiempo de acceso a la memoria.
Bueno, esto depende del código en concreto que se esté ejecutando. Pero en general poner una caché grande y rápida (lo máximo que se pueda, claro) suele ayudar bastante a mejorar el tiempo de cpu.