- Los procesadores CISC tienen instrucciones complejas
- Estas instrucciones se dividen en una serie de pasos más pequeños
- Estos pasos se ejecutan en serie en diferentes partes del procesador (forman algo similar a una línea de ensamble)
- Ante un branch (un if) no se puede anticipar cual va a ser la siguiente instrucción que hay que meter en el pipeline
- Detener todo el pipeline hasta saber que instrucción va a ejecutarse destruye cualquier mejora en la performance que el pipeline pueda ofrecer
- Intentar predecir que camino va a tomar el branch es una mejor opción
- Al errarle al camino hay que reconstruir pipeline, es mucho más lento
Los procesadores RISC igual tienen pipeline, las instrucciones sin embargo son mucho más simples y el pipeline suele ser muy pequeño.
Un gran problema es que los procesadores al correr ciertos pasos de una instrucción y retroceder causan efectos secundarios, el estado del sistema queda alterado y atacantes pueden observar ese estado y leer valores que en teoría no deberían poder leer (SPECTRE).