stringtranslate.com

OpenRISC

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

La primera descripción arquitectónica (y hasta 2019 , la única) es para 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 OpenRISC 1200 de esta especificación fue diseñada por Damjan Lampret en 2000, escrita en el lenguaje de descripción de hardware Verilog (HDL). [5] La implementación posterior mor1kx, que tiene algunas ventajas en comparación con OR 1200, [6] fue diseñada por Julius Baxter y también está escrita en Verilog. Además, existen simuladores de software [7] que implementan la especificación OR1k.

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

Se desarrolló una implementación de un sistema de referencia en un chip (SoC) basado en OpenRISC 1200, denominado Sistema en chip de plataforma de referencia OpenRISC (ORPSoC). Varios grupos han demostrado que ORPSoC y otros diseños basados ​​en OR1200 funcionan en matrices de puertas programables en campo (FPGAs), [8] [9] y se han producido varios derivados comerciales.

Los diseños de 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 razonablemente simple que recuerda a MIPS y 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, siendo la principal diferencia el ancho de los registros (32 o 64 bits) y el diseño de la tabla de páginas. La especificación OpenRISC incluye todas las características comunes a los procesadores de escritorio y servidor modernos: un modo supervisor y un sistema de memoria virtual, control opcional de lectura, escritura y ejecución para páginas de memoria e instrucciones para la sincronización y el manejo de interrupciones entre varios procesadores.

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

Implementaciones

Prototipo de OpenRISC en la placa de desarrollo FPGA Flextronics (Flex), que ejecuta uClinux

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

En 2018, OpenRISC 1000 se consideró estable, por lo que ORSoC (propietario de OpenCores) comenzó un proyecto de financiación colectiva para construir un circuito integrado específico para aplicaciones (ASIC) rentable para obtener un mejor rendimiento. ORSoC enfrentó críticas por esto de parte de la comunidad. [ cita requerida ] El proyecto no alcanzó la meta.

Hasta 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 el BA12, BA14 y BA22 de Beyond Semiconductor. Dynalith Systems proporciona la placa de prototipos FPGA iNCITE , que puede ejecutar tanto OpenRISC 1000 como BA12. Flextronics (Flex) y Jennic Limited fabricaron el OpenRISC como parte de un circuito integrado específico de la aplicación (ASIC). Samsung utiliza el OpenRISC 1000 en sus sistemas en chips DTV (SDP83 B-Series, SDP92 C-Series, SDP1001/SDP1002 D-Series, SDP1103/SDP1106 E-Series). [11] Se informa que 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, ahora 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 implementó 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 Technische Universität München han utilizado OpenRISC en la investigación sobre arquitecturas de procesadores multinúcleo . [18] El Open Source Hardware User Group (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 ejecuta Linux con soporte para X Window System y Wayland . [23]

Soporte de cadena de herramientas

La comunidad OpenRISC ha portado la cadena de herramientas GNU a OpenRISC para soportar el desarrollo en los lenguajes de programación C y C++ . Utilizando esta cadena de herramientas, las bibliotecas newlib , uClibc , musl (a partir de la versión 1.1.4) y glibc han sido trasladadas al procesador. Dynalith proporciona OpenIDEA, un entorno de desarrollo integrado (IDE) gráfico basado en esta cadena de herramientas. A principios de 2012 se inició un proyecto para trasladar LLVM a la arquitectura OpenRISC 1000. [24]

GCC 9 lanzado con soporte OpenRISC. [25]

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

Compatibilidad con sistemas operativos

Soporte para Linux

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

Compatibilidad con RTOS

Varios sistemas operativos en tiempo real (RTOS) se han portado a OpenRISC, incluidos NuttX , RTEMS , FreeRTOS y eCos .

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 funcionan en 32 bits/64 bits" . Consultado el 28 de marzo de 2021 .
  3. ^ "Extensiones Vector/DSP (SIMD) que funcionan 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). «Un núcleo de procesador de 32 bits gratuito 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 integrados basado en FPGAs de software y hardware" (PDF) . De Nayer Instituut . 1.0. Archivado desde el original (PDF) el 2006-11-27 . Consultado el 2009-03-03 .
  9. ^ Li, Xiang; Zuo, Lin. Plataforma integrada de código abierto basada en OpenRISC y DE2-70 (Masters). KTH Royal Institute of Technology (KTH), Suecia. Archivado desde el 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 VIDEO → TV → DTV → ETC → OR1200.zip
  12. ^ Página wiki de la comunidad del proyecto Linux-sunxi sobre el controlador AR100. Recuperado el 20 de julio de 2013.
  13. ^ Flujo de referencia UVM, sitio web de Accellera (sin fecha).
  14. ^ 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. ^ "Gran avance sueco en el espacio con un satélite de la NASA con electrónica de ÅAC Microtec". ÅAC Microtec (nota de prensa). 11 de octubre de 2012. Archivado desde el 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 .[ enlace roto ] URL alternativa
  17. ^ "Dipl.-Ing. Dipl.-Wirt.-Ing. Stefan Wallentowitz". 2009–2013. Archivado desde el original el 13 de abril de 2013.
  18. ^ Wallentowitz, Stefan; Wild, Thomas; Herkersdorf, Andreas. "Multicore Architecture and Programming Model Co-Optimization (MAPCO)" (PDF) (Póster de investigación en la Sexta Escuela Internacional de Verano sobre Arquitectura de Computadores Avanzados y Compilación para Sistemas Embebidos y de Alto Rendimiento (ACACES), 11-17 de julio de 2010). Terrassa (Barcelona), España. Archivado desde el original (PDF) el 10 de febrero de 2013 . Consultado el 29 de octubre de 2018 .
  19. ^ Chips (Lógica programable, conservación de datos con FPGAs, OpenCores y OpenRISC 1000). Reunión OSHUG n.° 9, Skills Matter, 116-120 Goswell Road, Londres, 21 de abril de 2011.
  20. ^ Practical System-on-Chip (Programa tu propio SoC FPGA de código abierto). Reunión OSHUG nº 17, Centro de 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 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 . 2018-04-06 . Consultado el 2019-03-21 .
  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. Archivado desde el original el 8 de julio de 2012. Consultado el 17 de octubre de 2011 .
  27. ^ "Linux 3.1". Nuevos en el kernel . Consultado el 17 de octubre de 2011 .
  28. ^ Registro de cambios de QEMU 1.2

Enlaces externos