El proyecto final de Arquitectura

Ayer tuve mi último examen de Análisis de Algoritmos, el correspondiente a la tarea 3 de Análisis de Algoritmos (en negritas, porque tengo que escribir acerca de ella, del examen y de la materia en general).

Al terminar le hablé a Alejandro, que estaba recluido en su casa (creo que sin bañarse) desde el viernes, y él me dijo que prefería estar en su casa chambeando. Dado que él fue el head developer por defecto del proyecto, presumí que nuestro deber era ir a apoyar; así que agarré a Alexander y fuimos a casa de Alejandro, llamándole a Iván y diciéndole que su misión si decidía aceptarla era ir también.

Lo que siguió fueron las veinte horas más pesadas que he tenido en el IIMAS, y ciertamente están en el top five de mi vida.

Estuvimos en casa de Alejandro con la firme idea de no salir hasta que saliera el proyecto o hasta que tuviéramos que ir al IIMAS a entregarlo, lo que ocurriese primero.

Varios obstáculos se interpusieron en el camino: primero, la chingadera no cabía. La Xilinx Spartan-3E que teníamos era el modelo más chafa (bueno, el segundo más chafa) de esa compañía, y nuestro proyecto era muy complejo: entonces las compuertas no alcanzaban. Los inges (principalmente Alejandro) estuvieron haciendo maromas con el código VHDL para optimizar todo lo optimizable, y viendo qué podían quitar.

Después, la FPU ya estaba, jalaba en el ModelSim, pero no servía cuando la quemábamos en la tarjeta. Tenía que ver con la frecuencia a la que jalaba la tarjeta, que era como el doble de lo que aguantaba el FPU… o algo así.

Y por último, cada quemada de todo el CPU nos tomaba cerca de 20 minutos… lo cual nos mataba el ritmo, porque no podíamos hacer nada mientras estaba compilando y quemando el CPU a la tarjeta.

Cerca de las 3 de la mañana, un gran pesimismo comenzó a apoderarse de nosotros: la cosa no quería quedar, y comenzamos a pensar en un plan B. En el peor de los casos, teníamos smiley para presentar.

Y entonces, a las 7:30 de la mañana, cada quién haciendo lo que podía con su parte (yo estaba terminando la documentación), todos madreados y ya sin muchas esperanzas, Alejandro de repente nos dijo “¡miren!”.

Y miramos.

Mandelbrot

Mandelbrot

Haciendo uso de todos los trucos del universo, y optimizando todo lo optimizable, el CPU cupo y funcionó en la tarjeta. Literalmente ocupamos todo el espacio de la tarjeta: incluso usamos una opción que tiene el XST de Xilins para utilizar los Block RAMs no utilizados en el proyecto como compuertas lógicas extras.

Uso de la tarjeta

Uso de la tarjeta

Ya de ahí todo fue de bajada; terminamos todo lo que había que terminar, y nos tomamos la foto del triunfo:

El triunfo

El triunfo

Lo chido de esa foto, es que de verdad estábamos eufóricos: el pinche procesador nos había costado un huevo y la mitad del otro, y ya casi habíamos perdido la esperanza cuando por fin funcionó.

Terminamos todo el procesador. Sólo excluimos las instrucciones lógicas (and, or, xor, shl y shr), porque no cabían. Era trivial implementarlas (las operaciones están soportadas a nivel de VHDL, y Xilinx para variar sí implementó esa parte del estándar VHDL); pero no teníamos ya compuertas. Nos quedaban como dos ORs. Y un AND.

Después fue preparar la presentación (que ya fue sencillo teniendo todo), nos fuimos al IIMAS, y fuimos el primer equipo en presentar su proyecto. Fue una presentación muy padre: fuimos el único equipo que hizo ensamblador y simulador, y pudimos enseñarle a Savage dos fractales y nuestro smiley. Además, de verdad estábamos emocionados con nuestro micro, porque nos había costado un chingo. Savage incluso nos felicitó; yo ni podía creerlo.

Ya después, cada quién fue a dormir a su casa.

No sé qué calificación vaya a tener al final en esta materia; en los exámenes me fue mal. Pero creo que no importa; a este proyecto le echamos todas las ganas del universo, y la verdad nos quedó muy padre.

Aunque yo le pondría 10 a mi equipo.

Un comentario sobre “El proyecto final de Arquitectura

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *