Decode en procesadores superescalares x86
Decode en procesadores superescalares x86
Este concepto me parece una completa locura.
La principal arquitectura de procesadores de escritorio hoy en día es x86, de tipo CISC. La filosofía CISC trata de buscar complejidad a través del hardware, creando miles de instrucciones complejas. Esto genera un problema a la hora de ejecutar el código, y es que haría mucho más compleja cualquier implementación del procesador.
Esta filosofía se topaba con el límite físico, haciendo demasiado complejas las implementaciones de mecanismos de optimización como Tomasulo. Así, hace ya décadas la filosofía cambió, pasando a dar complejidad al software y simplificando el repertorio de instrucciones a lo más básico. Se popularizaba la arquitectura RISC.
Pero había un problema, ya se había creado un imperio del software sobre la arquitectura anterior, y desarrollar un procesador que no fuera compatible con él era una sentencia de muerte.
Así en 1995 Intel comercializa el P6. Este procesador cambiaría por completo el funcionamiento de estos dispositivos. Aunque de cara al programador este procesador tenía una "interfaz" x86, internamente solo era capaz de ejecutar instrucciones RISC. Para ello contaba con un nuevo componente en su etapa Decode que traducía en tiempo real las instrucciones complejas a unas que si que era capaz de manejar. Teniendo incluso una memoria ROM con implementaciones que llegaban a cientos de instrucciones y literalmente programaban en RISC esas funcionalidades más complejas.
A día de hoy seguimos usando este sistema. Una interfaz extremadamente compleja para soportar la retrocompatibilidad con el monopolio del software, sobre un procesador que ha seguido avanzando abandonando una filosofía estancada ya antes del nuevo milenio.