SPYDER : A SURE (SUperscalar and REconfigurable) processor Christian Iseli, Eduardo Sanchez (LSL-EPFL) Los procesadores usuales de proposito general tienen tres inconvenientes: - Un conjunto fijo de operaciones basicas como adicion y sustraccion. Usualmente estas operaciones son el minimo comun denominador del conjunto completo de operaciones que uno podria usar para resolver un problema. Todas las operaciones que no hacen parte de este conjunto de operaciones fijo deben implementarse como una secuencia de operaciones del conjunto base, y por tanto requeriran varios ciclos de reloj para realizarse. Estas operaciones no estandares podrian lograrse en un solo ciclo de reloj si el hardware dedicado estuviera disponible o se hiciera disponible reconfigurando la unidad de ejecucion. - Los tamanhos de los datos con los cuales el procesador opera son fijos. Con una unidad de ejecucion reconfigurable es posible utilizar cualquier tamanho de datos. - Solo pueden ejecutar una sola operacion por unidad de ejecucion por ciclo de reloj. A pesar de que muchos procesadores superescalares salen al mercado, ninguno puede ejecutar mas de una instruccion por unidad de ejecucion por ciclo de reloj. Si se empaquetan en una misma palabra del procesador varios data-elements en una simple unidad de ejecucion reconfigurable, se podrian procesar simultaneamente estos datos en un solo ciclo de reloj. Esto demanda una arquitectura VLIW : Very large Instruction Word, donde cada instruccion comanda todos los recursos del procesador en paralelo. SPYDER es un procesador con 3 unidades de ejecucion concurrentes y datos compartidos. La funcionalidad, recursos y tamanhos de los datos de las unidades de ejecucion estan implementados con chips FPGA de Xilinx y son reconfigurables por el usuario para satisfacer los requerimientos de la aplicacion que se encuentra corriendo en el mismo. La meta final es producir un compilador que deduzca le mejor configuracion de las unidades de ejecucion para cada aplicacion compilada, y generar tanto dichas configuraciones como el codigo para las aplicaciones.