Articulo de referencia

OpenRISC

{{cite web|url=https://openrisc.io/architecture#published-versions|title=Published versions|access-date=2021-03-28}} "},"design":{"wt":"[[Reduced instruction set computer|RISC]]...

OpenRISC es un proyecto para desarrollar una serie de unidades centrales de procesamiento (CPU) de código abierto basadas en hardware, utilizando principios de arquitectura de conjunto de instrucciones reducido (RISC). Incluye una arquitectura de conjunto de instrucciones (ISA) con licencia de código abierto . Es el proyecto insignia original de la comunidad OpenCores .

El primero (y a partir de 2019La descripción arquitectónica (solo) corresponde al OpenRISC 1000 ("OR1k"), que describe una familia de procesadores de 32 y 64 bits con soporte opcional para aritmética de punto flotante y procesamiento vectorial . [ 4 ] La implementación de esta especificación para el OpenRISC 1200 fue diseñada por Damjan Lampret en 2000 y escrita en el lenguaje de descripción de hardware (HDL) Verilog . [ 5 ] La posterior implementación mor1kx, que presenta algunas ventajas respecto al OR 1200, [ 6 ] fue diseñada por Julius Baxter y también está escrita en Verilog. Existen además simuladores de software [ 7 ] que implementan la especificación OR1k.

El diseño del hardware se publicó bajo la Licencia Pública General Reducida de GNU (LGPL), mientras que los modelos y el firmware se publicaron bajo la Licencia Pública General de GNU (GPL).

Se desarrolló una implementación de sistema en chip (SoC) de referencia basada en OpenRISC 1200, denominada OpenRISC Reference Platform System-on-Chip (ORPSoC). Varios grupos han demostrado el funcionamiento de ORPSoC y otros diseños basados ​​en OR1200 en matrices de puertas programables en campo (FPGA), [ 8 ] [ 9 ] y se han producido varios derivados comerciales.

Los diseños SoC posteriores, también basados ​​en una implementación de CPU OpenRisc 1000, son minSoC, OpTiMSoC y MiSoC. [ 10 ]

Conjunto de instrucciones

El conjunto de instrucciones es una arquitectura RISC tradicional bastante sencilla, similar a MIPS, que utiliza una arquitectura de carga y almacenamiento de 3 operandos, con 16 o 32 registros de propósito general y una longitud de instrucción fija de 32 bits. El conjunto de instrucciones es prácticamente idéntico entre las versiones de 32 y 64 bits de la especificación; la principal diferencia radica en el ancho de los registros (32 o 64 bits) y la disposición de la tabla de páginas. La especificación OpenRISC incluye todas las características comunes a los procesadores modernos de escritorio y servidor: un modo supervisor y un sistema de memoria virtual, control opcional de lectura, escritura y ejecución para las páginas de memoria, e instrucciones para la sincronización y el manejo de interrupciones entre múltiples procesadores.

Otra característica destacable es un amplio conjunto de instrucciones SIMD ( de instrucción única y datos múltiples ) destinadas al procesamiento de señales digitales .

Implementaciones

Prototipo de OpenRISC en una placa de desarrollo FPGA de Flextronics (Flex), ejecutando uClinux.

La mayoría de las implementaciones se realizan en matrices de puertas programables en campo (FPGA), lo que permite iterar sobre el diseño a costa del rendimiento.

Para 2018, el OpenRISC 1000 se consideraba estable, por lo que ORSoC (propietaria de OpenCores) inició un proyecto de financiación colectiva para construir un circuito integrado de aplicación específica (ASIC) rentable que mejorara su rendimiento. ORSoC recibió críticas por parte de la comunidad al respecto. El proyecto no alcanzó su objetivo.

A partir de mayo de 2024 No se había producido ningún ASIC de código abierto.

Implementaciones comerciales

Varias organizaciones comerciales han desarrollado derivados de la arquitectura OpenRISC 1000, incluyendo el ORC32-1208 de ORSoC y los BA12, BA14 y BA22 de Beyond Semiconductor. Dynalith Systems proporciona la placa de prototipado FPGA iNCITE , que puede ejecutar tanto OpenRISC 1000 como BA12. Flextronics (Flex) y Jennic Limited fabricaron OpenRISC como parte de un circuito integrado de aplicación específica (ASIC). Samsung utiliza OpenRISC 1000 en sus sistemas en chip DTV (SDP83 Serie B, SDP92 Serie C, SDP1001/SDP1002 Serie D, SDP1103/SDP1106 Serie E). [ 11 ] Allwinner Technology utiliza un núcleo OpenRISC en su controlador de potencia AR100, que forma parte del SoC A31 basado en ARM. [ 12 ]

Cadence Design Systems ha comenzado a utilizar OpenRISC como arquitectura de referencia para documentar los flujos de la cadena de herramientas (por ejemplo, el flujo de referencia UVM, que ahora se ha aportado a Accellera ). [ 13 ]

TechEdSat , la primera computadora Linux basada en la arquitectura OpenRISC de la NASA , se lanzó en julio de 2012 y se desplegó en octubre de 2012 en la Estación Espacial Internacional con hardware proporcionado, construido y probado por ÅAC Microtec y ÅAC Microtec North America. [ 14 ] [ 15 ] [ 16 ]

Uso académico y no comercial

Al ser de código abierto, OpenRISC ha demostrado ser popular en círculos académicos y de aficionados. Por ejemplo, Stefan Wallentowitz [ 17 ] y su equipo en el Instituto de Sistemas Integrados de la Universidad Técnica de Múnich han utilizado OpenRISC en la investigación de arquitecturas de procesadores multinúcleo . [ 18 ] El Grupo de Usuarios de Hardware de Código Abierto ( OSHUG ) en el Reino Unido ha realizado en dos ocasiones [ 19 ] [ 20 ] sesiones sobre OpenRISC, mientras que el aficionado Sven-Åke Andersson ha escrito un blog completo sobre OpenRISC para principiantes, [ 21 ] que atrajo el interés de Electronic Engineering Times ( EE Times ). [ 22 ] Sebastian Macke ha implementado jor1k, un emulador de OpenRISC 1000 en JavaScript , que se ejecuta en Linux con soporte para X Window System y Wayland . [ 23 ]

Soporte de la cadena de herramientas

La comunidad OpenRISC ha adaptado el conjunto de herramientas GNU a OpenRISC para admitir el desarrollo en los lenguajes de programación C y C++ . Mediante este conjunto de herramientas, las bibliotecas newlib , uClibc , musl (a partir de la versión 1.1.4) y glibc se han adaptado al procesador. Dynalith proporciona OpenIDEA, un entorno de desarrollo integrado (IDE) gráfico basado en este conjunto de herramientas. Un proyecto para adaptar LLVM a la arquitectura OpenRISC 1000 comenzó a principios de 2012. [ 24 ]

GCC 9 se lanzó con soporte para OpenRISC. [ 25 ]

El proyecto OR1K proporciona un simulador de conjunto de instrucciones , or1ksim. La implementación principal, el OR1200, es un modelo a nivel de transferencia de registros (RTL) en Verilog HDL, a partir del cual se puede construir un modelo con precisión de ciclo basado en SystemC en ORPSoC. También está disponible un modelo de alta velocidad del OpenRISC 1200 a través de la iniciativa Open Virtual Platforms (OVP) (véase OVPsim ), creada por Imperas.

Soporte del sistema operativo

Soporte para Linux

El kernel principal de Linux obtuvo soporte para OpenRISC en la versión 3.1. [ 26 ] La implementación integrada en esta versión es la familia OpenRISC 1000 de 32 bits (or1k). [ 27 ] Anteriormente conocida como arquitectura OpenRISC 1000, ha sido reemplazada por la versión principal.

Compatibilidad con RTOS

Se han adaptado varios sistemas operativos en tiempo real (RTOS) a OpenRISC, entre ellos NuttX , RTEMS , FreeRTOS , eCos y Zephyr .

Soporte de QEMU

Desde la versión 1.2, QEMU admite la emulación de plataformas OpenRISC. [ 28 ]

Véase también

Referencias

  1. "Versiones publicadas" . Consultado el 28 de marzo de 2021 .
  2. "Extensiones de punto flotante que operan en 32 bits/64 bits" . Consultado el 28 de marzo de 2021 .
  3. "Extensiones vectoriales/DSP (SIMD) que operan con datos de 8, 16, 32 y 64 bits" . Consultado el 28 de marzo de 2021 .
  4. "Arquitectura - OpenRISC" . OpenRisc.io . Consultado el 17 de abril de 2021 .
  5. Clarke, Peter (28 de febrero de 2000). "Núcleo de procesador gratuito de 32 bits llega a la red" . Electronic Engineering Times ( EE Times ) . San Francisco , California, Estados Unidos: AspenCore Media . Consultado el 21 de marzo de 2019 .
  6. "Implementaciones - OpenRISC" . OpenRisc.io . Consultado el 17 de abril de 2021 .
  7. "Implementaciones - OpenRISC" . OpenRisc.io . Consultado el 17 de abril de 2021 .
  8. Pelgrims, Patrick; Tierens, Tom; Driessens, Dries (2004). "Tutorial básico de hardware de sistema OpenRISC personalizado: diseño de sistemas embebidos basado en FPGA de software y hardware" (PDF) . De Nayer Instituut . 1.0. Archivado del original (PDF) el 27 de noviembre de 2006. Consultado el 3 de marzo de 2009 .
  9. Li, Xiang; Zuo, Lin. Plataforma integrada de código abierto basada en OpenRISC y DE2-70 (Máster). Instituto Real de Tecnología KTH (KTH), Suecia. Archivado del original el 6 de octubre de 2011., programa SoC
  10. "Sistema en chip - OpenRISC" . OpenRisc.io . Consultado el 17 de abril de 2021 .
  11. Centro de lanzamiento de código abierto de Samsung , siga los enlaces → TV y vídeo → TV → DTV → ETC → OR1200.zip
  12. Página wiki de la comunidad del proyecto Linux-sunxi sobre el controlador AR100 . Consultada el 20 de julio de 2013.
  13. Flujo de referencia UVM archivado el 26/11/2011 en Wayback Machine , sitio web de Accellera (sin fecha).
  14. Mensaje publicado en las listas de correo de OpenRISC en lists.openrisc.net el 8 de abril de 2012 por Fredrick Bruhn, director ejecutivo de ÅAC Microtec.
  15. "Avance sueco en el espacio en un satélite de la NASA con electrónica de ÅAC Microtec" . ÅAC Microtec (Comunicado de prensa). 11 de octubre de 2012. Archivado del original el 18 de enero de 2014. Consultado el 17 de marzo de 2018 .
  16. ^ "Svenskt genombrott i rymden på NASA-satellit med elektronik från ÅAC Microtec" [ Avance sueco en el espacio en un satélite de la NASA con electrónica de ÅAC Microtec ] (Presione soltar) (en sueco). 2012-10-11 . Consultado el 16 de marzo de 2018 a través de Mynewsdesk .URL alternativa
  17. "Dipl.-Ing. Dipl.-Wirt.-Ing. Stefan Wallentowitz" . 2009–2013. Archivado del original el 13 de abril de 2013.
  18. Wallentowitz, Stefan; Wild, Thomas; Herkersdorf, Andreas. "Cooptimización de la arquitectura multinúcleo y el modelo de programación (MAPCO)" (PDF) (Póster de investigación en la Sexta Escuela Internacional de Verano sobre Arquitectura y Compilación de Computadoras Avanzadas para Sistemas Embebidos y de Alto Rendimiento (ACACES), 11-17 de julio de 2010). Terrassa (Barcelona), España. Archivado del original (PDF) el 10 de febrero de 2013. Recuperado el 29 de octubre de 2018 .
  19. Chips (lógica programable, conservación de datos informáticos con FPGA, OpenCores y OpenRISC 1000) . Reunión n.º 9 de OSHUG, Skills Matter, 116-120 Goswell Road, Londres, 21 de abril de 2011.
  20. Sistema en chip práctico (Programa tu propio SoC FPGA de código abierto) . Reunión n.º 17 de OSHUG, Centro para la Colaboración Creativa, 16 Acton Street, Londres, 29 de marzo de 2012.
  21. Procesador de software OpenRISC 1200. Archivado el 13 de mayo de 2012 en Wayback Machine . Entrada de blog de Sven-Åke Andersson, 2 de marzo de 2012.
  22. Maxfield, Clive (3 de mayo de 2012). "Comparación de cuatro núcleos de procesadores de software de 32 bits" . Electronic Engineering Times ( EE Times ) . San Francisco , California, Estados Unidos: AspenCore Media . Consultado el 21 de marzo de 2019 .
  23. El emulador OpenRISC en JavaScript puede ejecutar Wayland.
  24. "llvm-or1k" . GitHub . 6 de abril de 2018. Consultado el 21 de marzo de 2019 .
  25. "Registro de cambios de GCC 9" . GNU . Consultado el 15 de junio de 2022 .
  26. "git.kernel.org - linux/kernel/git/torvalds/linux-2.6.git/tree - arch/openrisc/" . git.kernel.org . Consultado el 17-10-2011 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  27. "Linux 3.1" . Kernel Newbies . Consultado el 17 de octubre de 2011 .
  28. Registro de cambios de QEMU 1.2
  • Sitio web oficial
  • Licencias de núcleos semiconductores de código abierto, 25 Harvard Journal of Law & Technology 131 (2011) Artículo que analiza la ley, la tecnología y el negocio de los núcleos semiconductores de código abierto.
  • Beyond Semiconductor es una empresa comercial de semiconductores sin fábrica propia fundada por los desarrolladores de OpenRISC.
  • Sitio web de la empresa Dynalith Systems .
  • Sitio web de la empresa Imperas .
  • Sitio web de la empresa Flex
  • Sitio web de la empresa Jennic
  • Artículo de Eetimes
  • Tutorial de OpenRISC
  • jor1k en GitHub , emulador OpenRISC 1000 en JavaScript