Microarquitectura: cómo se diseña una CPU – Parte 1

Un microprocesador o CPU (Control Processing Unit) es un circuito electrónico capaz de ejecutar las instrucciones de software. Eso lo consigue gracias a una serie de unidades funcionales que integra y que son capaces de acceder a la memoria principal para traer los datos e instrucciones necesarios, decodificarlos, y que la unidad de control envíe las señales al resto de unidades funcionales de ejecución para que sepan lo que deben hacer con los datos (sumar, restar, multiplicar, desplazar,…) para obtener el resultado.

Todo eso está claro, ¿verdad? Pero para que sea posible se necesita primero definir una ISA, es decir, un repertorio de instrucciones y los datos que puede manejar. Una vez se cuenta con la ISA, el siguiente paso es implementar una microarquitectura que sea capaz de procesar todas las instrucciones de esa ISA. Después se crea la circuitería necesaria para llevar esa microarquitectura al silicio. Y tras un largo periodo de tests y samples, se comienza a fabricar el chip.

Previo

Lo primero es tener en cuenta el mercado o para qué estará destinado. No es lo mismo diseñar un procesador destinado a embebidos, o equipos de bajo consumo, ni un softcore, a uno destinado a HPC. Ni siquiera un procesador de alto rendimiento para PC es igual a uno destinado a HPC, ya que éstos últimos suelen estar pensados para trabajar con más procesadores y se potencia su E/S y otros factores necesarios para dicha aplicación.

Si no se va a hacer uso de una ISA ya implementada, también se debería crear ésta. El tipo puede ser RISC, CISC, etc., como ya vimos en un artículo previo sobre las ISA. Esto también dependerá de la aplicación que le vayas a dar, aunque últimamente se están imponiendo los RISC para casi todo, pero aún se siguen diseñando otros tipos de ISA para fines específicos. Por ejemplo, IBM sigue desarrollando una CISC z/Architecture para sus mainframes.

También se deberían marcar los objetivos que se quiere conseguir en cuanto a frecuencia a alcanzar, consumo, IPS, etc. ¿Por qué? Pues muy sencillo, al «arreglar» una cosa se puede «estropear» otra. Tratar de incrementar una magnitud podría hacer que se perjudique a otras. Los ingenieros tienen que lidiar con esto y buscar los mejores remedios para alcanzar un buen compromiso.

El 5 a un 10% de los recursos y del tiempo, del proceso total de creación, es diversión, ya que se innova y se crea algo novedoso. Pero el resto es trabajo aburrido realizando pruebas y más pruebas (simulaciones y tests) para comprobar que no hay problemas. ¿Por qué tanto tiempo y recursos para eso? Bueno, ya contaré en algún momento algunas anécdotas de lo que les ha ocurrido a empresas que han tenido errores de diseño… pero puedes intuir que no es algo barato.

Etapas de diseño de una CPU

Diseño de una CPU - Rampa del silicio

Las etapas esenciales por las que pasa una CPU son:

  • Se comienza a crear el plan de diseño para alcanzar los objetivos (rendimiento, costes, tiempo,…). Primero se comienza por diseñar la arquitectura de la máquina, si no lo está ya. Después la ISA y después diseñar la microarquitectura (diagrama de flujo que determinar cómo se tratarán las instrucciones y unidades funcionales que tendrá) para implementar esa ISA y pasarla al silicio.
  • Siguiente paso es la lógica, donde se divide la microarquitectura en unidades funcionales y éstas en fragmentos más pequeños. De esa forma, cada grupo de ingenieros se puede dedicar a una de esas partes y tratar el comportamiento lógico de cada uno de ellos. Mucho más sencillo que tratarlo todo en conjunto, especialmente si se trata de un microprocesador avanzado.
  • Ahora es cuando se lleva ese diseño a la electrónica, determinando los dispositivos electrónicos necesarios (fundamentalmente transistores) y sus interconexiones. Aquí también se deben corregir los problemas que se puedan dar. Una vez está todo OK, se generan las máscaras de las distintas capas a partir del layout resultante. Esto entra dentro de las etapas de diseño físico y más concretamente la etapa final llamada tapeout.
  • Tras el tapeout llega la «rampa del silicio». Se comienzan a fabricar los llamados engineering samples, es decir, las primeras muestras en silicio para probar si funcionan adecuadamente y las simulaciones estaban en lo correcto. Si es necesario, se lleva un trabajo conjunto con la factoría para adaptar los procesos de fabricación al diseño. Normalmente, si es un IDM, la colaboración se hace desde una etapa más temprana, pero si es una fabless, la colaboración con la foundry llega después.
  • Una vez los samples funcionan adecuadamente y son dignos de lanzar al mercado, se da la orden a la foundry para que comience a producirlos de forma masiva. Durante la fabricación se pueden detectar algunos problemas menores que no afectan al funcionamiento pero que se pueden corregir modificando pequeñas cosas (véase stepping).

Algunos diseños suelen durar hasta 3, o 5 años en algunos casos, te puedes hacer una idea de la complejidad. Y actualmente hay muchos ingenieros involucrados, no es como antes en los primeros diseños que solo había 15 o 20. Ciertas microarquitecturas complejas se comienzan a diseñar mientras se está comercializando el producto de una microarquitectura anterior. Por ejemplo, Sandy Bridge de Intel comenzó a diseñarse en 2006, pero no fue hasta 2009 cuando se mostraron algunas muestras en ciertos eventos y en 2011 se comienza su comercialización.

Otro ejemplo es AMD Zen, que comenzó a trazarse en 2012, en cambio, las primeras unidades basadas en esta arquitectura han aparecido años después. Mientras en ese año AMD aún seguía comercializando sus productos derivados de Bulldozer, pero habría que esperar a 2017 para ver los primeros Ryzen y EPYC.

Ir a la Parte 2 de Cómo se diseña una CPU

Isaac

Apasionado de la computación y la tecnología en general. Siempre intentando desaprender para apreHender.

Deja un comentario

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

A %d blogueros les gusta esto:

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar