Núcleos: cuestión de licencias… – Parte 1/2

Si creías que las licencias era solo cuestión de software, la verdad es que te equivocas. Están en todos lados, también en el hardware. Y este artículo lo destinaré a explicar todo sobre los tipos de CPUs existentes desde el punto de vista de las licencias, o más concretamente sobre las licencias de sus núcleos o cores.

Si alguna vez has escuchado términos como cores IP, softcore, licenciamiento de núcleos, núcleos abiertos, etc., aquí te aclaro qué es cada uno de esos términos para que comprendas mejor cómo actúa la industria de la electrónica y de los semiconductores. Que como podrás comprobar, no dista tanto de la del software…

Softcore vs hardcore

softcore fpga

No solo existen los cores o núcleos de procesadores físicos, también existen otra versión «blanda» de estos, y son bastante más habituales de lo que piensas:

Softcore

Este tipo de procesador es un núcleo que se distribuye completamente mediante síntesis lógica. Pueden tener licencias variadas, desde la LGPL de GNU, pasando por la BSD, e incluso otras. Aunque no le veas ninguna utilidad a este tip de procesadores, al no ser físicos, sí que los tiene más allá del estudio de los mismos. Estos núcleos se pueden implementar de forma física mediante un ASIC, FPGA, y CPLD. Así se pueden conseguir productos básicos para multitud de usos.

Por ejemplo, con un FPGA y un programador, podrías crear uno o varios núcleos dentro del chip para su uso, e incluso combinarlos con otros elementos como memoria, controladores, etc., para crear un microcontrolador, o SoC completo… Algunos ejemplos muy conocidos pueden ser ARM Cortex-M1, MicroBlaze, PacoBlaze, PicoBlaze, la serie LEON (de la E.S.A. y basados en SPARC), OpenSPARC T1, ARC, OpenRISC, etc.

Si el núcleo soft es un core IP, entonces se suele ofrecer como RTL sintetizable. Esto es escrito en un lenguaje de descripción de hardware como puede ser VHDL o Verilog. Ese código fuente describe lo que hace el núcleo o hardware que se ha diseñado como si fuese un programa. Grabando un FPGA con él obtendrás un circuito físico que hace precisamente lo que se especifica en él.

Otras veces se pueden ofrecer como listas de acceso genéricas a nivel de puerta o netlist, es decir, una representación del álgebra booleana de la función lógica de este dispositivo implementado como puertas genéricas o celdas estándar. El archivo netlist es como una receta de cómo se deberían ensamblar las celdas par crear el circuito.

La ventaja frente a la RTL es que una netlist ofrece una cierta protección contra ingeniería inversa, por lo que suele ser el método preferido de los núcleos cerrados que están protegidos.

En el caso de tener una licencia abierta, podrías modificarlo, generar un fork, redistribuirlo, al igual que haces con el software. Pero tanto en el caso de ser IP como abierto, no ofrecen garantía ni soporte para los diseños modificados.

Hardcore

Son los que se implementan directamente en un chip, como los de Intel, AMD, VIA/Centaur, Qualcomm, etc. Es decir, en estos no se tiene un flujo de diseño síntesis, colocación y enrutamiento, sino que se da directamente el producto terminado y listo para usar.

No obstante, según la forma de licenciarlos, se pueden también distribuir de forma similar a los softcore para que sean otros quienes los implementen físicamente. En este caso, no pueden modificarse, son rígidos (puede haber excepciones en las que se pueden modificar de forma leve). Por ejemplo, los cores IP ARM los usan muchos diseñadores para sus procesadores, pero no son modificados.

La ventaja de estos procesadores es que ofrecen garantía, y también una mejor previsibilidad del rendimiento que tendrán.

Cuando un tercer adquiere uno de estos núcleos, se obtienen las reglas de diseño que se pueden entregar a la foundry para que lo pueda fabricar. Por lo general, se hacen para un tipo de fundición concreta o proceso concreto, ya que no se pueden transformar fácilmente para adaptarlos a otro nodo diferente o tecnología de fabricación diferente.

En otros casos, se podrían licenciar para su uso en FPGAs o en ASICs…

Más información – Modelos IDM / Foundry / Fabless

Más información – Diseño de CPU 1 / Diseño de CPU 2

Licencias

Lagarto, chip español RISC-V

Independientemente si es soft o hard, cada núcleo se distribuye bajo una licencia. Al igual que ocurre con el software, pueden ser abiertas, libres, o propietarias. Estas licencias tratan de proteger la autoría o propiedad intelectual del diseño lógico, las celdas o circuitos integrados.

No debes confundir entre estos tres términos, ya que son diferentes:

  • Core IP (SIP o Silicon Intellectual Property): en este caso, un diseñador puede licenciar su core IP a un tercero, es decir, un núcleo de su propiedad intelectual para que otra empresa pueda usarlo. Sería el caso de lo que sucede con los núcleos IP de ARM, o el caso de AMD con sus núcleos Zen para crear los chips chinos Hygon. En este caso, la empresa tercera solo tendría la posibilidad de usar el núcleo IP y fabricar chips con él bajo su marca, pero habrá unas cláusulas que le impedirán hacer otras cosas. En la actualidad, el mayor licenciador de núcleos es ARM Holdings con más del 40% de este mercado SIP, seguido de Synopsys Inc. con casi un 14%, Imagination Technologies con un 9% (autor de las GPUs PowerVR), y Cadence Design System con el 5%… Por ejemplo, seguro que has visto muchos SoCs con núcleos de este tipo en los productos de Mediatek Helio, Qualcomm Snapdragon, HiSilicon Kirin, Samsung Exynos, etc.
  • Sublicencia ISA (propietaria): en este caso, un diseñador podría obtener permisos para usar una ISA cerrada. Es decir, la posibilidad de crear sus propias implementaciones (microarquitectura) para poder ejecutar el repertorio completo o parcial de instrucciones de dicha ISA. Esto es lo que ocurre con VIA/Centaur o AMD con respecto a Intel, aunque x86 es de Intel, AMD (también VIA/Centaur) tiene este tipo de licencia que le permite crear chips basados en ella de forma legal. Como anécdota decir que hace tiempo hubo clones no autorizados soviéticos, en este caso fabricaban chips que usaban un repertorio de instrucciones, pero sin licencia. Por ejemplo, SPARC es una ISA que se licencia para otros más allá de los propios de Sun Microsystems (ahora Oracle), como es el caso de los chips Fujitsu, Elbrus, etc.
  • Licencia ISA abierta: algunas ISAs son cerradas como el caso de la IA-32 (x86-32), IA-64, y la AMD64 (x86-64 o EM64T), ARM, SPARC, etc. Otras son abiertas, como POWER ISA, RISC-V, etc. Por tanto, en este último caso, terceros pueden crear microarquitecturas basadas en esa ISA. Para más información, puedes consultar este otro artículo que escribí y que te puede aclarar más las diferencias. Sea abierta o cerrada, cuando se obtiene esta licencia para usar una ISA, no se aporta una microarquitectura como en el caso de un núcleo IP, sino que será el tercero el encargado de crear su propia implementación. Un ejemplo práctico sería los aceleradores del proyecto europeo EPI, basados en RISC-V.

Isaac

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

Deja una respuesta

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