Conoce cómo se diseñan las CPUs y GPUs de tu PC etapa por etapa

Todo en esta vida sigue una metodología, en especial de cara a desarrollar nuevos productos. La cual consiste en una serie de protocolos con el objetivo de llegar a un resultado claro en el menor tiempo preciso. El diseño de CPUs no es ajeno a esto y es por ello que os vamos a describir las diferentes etapas que se siguen a la hora de diseñar una CPU.

Si cogemos una CPU de unos años atrás y lo compramos con uno nuevo a simple vista nos parecerán iguales, pero no es así, la mayor complejidad de los diseños más nuevos requieren unas horas de trabajo mucho más grandes y con ello un personal cualificado en mayor cantidad. Es cierto que cada nuevo nodo de fabricación permite colocar más transistores, pero esto también supone más trabajo y dado que los tiempos de desarrollo no perdonan es necesario que el diseño de los nuevos diseños sigan una serie de etapas ordenadas.

Todo empieza escogiendo el nodo de fabricación

Obleas Intel

La primera etapa no la hacen los ingenieros, sino que es realizada por las directivas, quienes negocian contratos multimillonarios con las diferentes fundiciones y hacen las diferentes predicciones de cara al nivel de producción y los costes.

Las especificaciones y los costes del nodo de fabricación le marcarán a los arquitectos cuál será el área que van a disponer para crear el chip, el presupuesto en número de transistores y los tiempos de desarrollo con los que disponen para crear los nuevos diseños de CPUs.

Lo siguiente es la realización de un esquema

Floorplan

El Floorplanning no es más que un esquema donde indicamos los elementos básicos generales que componen una CPU para ordenarlos en un espacio. Con elementos generales no estamos hablando de poner un núcleo de la CPU aquí, la caché aquí, la GPU allá, etc.

Sino con ello nos referimos a elementos mucho más básicos como pueden ser circuitos combinacionales como un multiplexor, puertas lógicas de distinto tipo, ALUs, búferes de memoria, etc. Esto se hace así por el hecho que el los lenguajes de descripción del hardware requieren que se especifique la interconexión entre los diferentes elementos y es por eso esencial coger papel y lápiz, una enorme hoja de papel para ir interconectando los diferentes elementos en un esquema.

El primer diagrama que se crea no es el definitivo, pero sirve para organizar los diferentes módulos de una CPU en dos tipos de bloques:

  • Los primeros se les llaman bloques fijos, en ellos se incluyen los elementos que no van a sufrir variaciones en el diseño y se van a mantener estáticos en cuanto a su área,  por el hecho que su naturaleza lo permite.
  • Los bloques versátiles en cambio son las partes que se van a cambiar, en especial porque la interacción con otras partes del chip así lo pide o simplemente por el hecho que no saben aún qué diseño se va a implementar en la versión final.

Si en el diseño Floorplanning del procesador hay suficiente espacio como para mejorar algunos elementos se busca integrar soluciones más avanzadas de esas partes, las cuales se encuentran en desarrollo en paralelo y que veremos en la siguiente sección.

3ª de las etapas de diseño de una CPU: definición de la ISA

Etapas diseño procesador ISA

La siguiente etapa es la definición del set de registros e instrucciones que se va a utilizar, en el caso de las CPUs donde estos se heredan de generación en generación puede parece que es fácil la implementación, pero el añadido de nuevas instrucciones y registros trae consigo la reorganización de algo que por sí mismo ya es lo suficientemente complejo.

En las GPUs es distinto, no ejecutan programas y cada nueva generación supone poder cambiar la naturaleza de la ISA de sus unidades shader de forma más versátil. Por lo que si es necesario eliminar instrucciones se puede hacer, pero en una CPU no, eliminar una instrucción o un registro es romper la compatibilidad con el software.

Son las partes encargadas de procesar datos las que suelen ser de tamaño variable en el diseño de cualquier tipo de procesador y las que terminan pasando por esta etapa de diseño. En cambio, los elementos de función fija no reciben estos cambios.

4ª de las etapas de diseño de una CPU: testeo en FPGAs

FPGA-3

No, no hemos llegado a la etapa final, pero es necesario probar que el diseño es funcional, para ello se suelen utilizar unas placas de FPGAs conectadas entre sí en una enorme matriz. Cada uno de los FPGA ha sido programado o más bien configurado para comportarse como un elemento del diseño global de la CPU o la GPU que estamos diseñando.

La idea aquí no es conseguir la máxima velocidad, sino comprobar a cámara lenta que el diseño es funcional. Por lo que vamos a tener latencias mucho más altas y velocidades mucho más bajas que el procesador final, pero lo que nos interesa es que todos los elementos funcionen.

5ª de las etapas de diseño de una CPU: E/S, energía y reloj

Diseño CPU enrutado

La cuarta etapa consiste ya en la creación del chip es crear el chip final, pero nos encontramos con el problema de entrada de que hay que diseñar la distribución de energía en el circuito por un lado y por el otro la de las señales de reloj, de las cuales algunas derivarán de un reloj maestro que se irá subdividiendo y otras tendrán su propio reloj.

Lo que se hace es coger la planificación de piso que hemos visto en la anterior sección y rodearla en un cuadrado o rectángulo dividido en cuadrantes. En el exterior de los cuadrantes se le asignas una función energética o de E/S concreta. Es aquí donde el perímetro de un chip se diseña y por se marca la colocación de las diferentes interfaces de comunicación con los periféricos y la memoria.

Es en esta etapa donde toda la documentación respecto a la distribución de la energía eléctrica, también es donde se comprueba si el diseño de los diferentes elementos permite alcanzar las velocidades de reloj que se esperaban alcanzar.

Verificación del procesador

stepping procesador test

Después del diseño viene la verificación del mismo. En la cual el diseño ya terminado se valida por un equipo totalmente distinto, el cual busca los fallos de diseño a nivel físico que este pueda tener. El conocimiento del equipo de validación es totalmente distinto al de diseño.

El motivo de ello es que tocan ramas muy distintas y el equipo de validación está más centrado en detectar y corregir errores que se dan en la implementación física de una CPU y no en la arquitectura del mismo, la cual no cambian en origen. Un equivalente al mundo de la construcción sería el de un grupo de obreros y contratistas que realizan el prototipo de una casa o un edificio y detectan los errores que afectan al rendimiento del diseño final y que no son visibles en la simulación.