OpenRISC

OpenRISC
Desarrollador núcleos abiertos
Profundidad de bits 32, 64
Arquitectura RISC
codificación SK fijo (32 bits)
¿abierto? Sí, LPL
Registros
Total 16 o 32 GPR

OpenRISC  es un microprocesador de arquitectura RISC de fuente abierta en el lenguaje de descripción de hardware Verilog . El proyecto fue creado por la comunidad OpenCores y distribuido bajo la licencia GNU LGPL . OpenRISC se implementa en hardware y se produce con éxito en forma de circuitos integrados y FPGA .

Una única versión de la arquitectura, OpenRISC 1000 (o 1k), describe una familia de procesadores de 32 y 64 bits con extensiones opcionales: soporte para cálculos en números de punto flotante y soporte para operaciones vectoriales. [una]

El equipo de desarrollo de OpenCores publicó la primera implementación, OpenRISC 1200 , escrita en lenguaje Verilog . La parte de hardware del proyecto está licenciada bajo la LGPL, los modelos y el firmware están bajo la GPL. La implementación del sistema en chip con OpenRISC 1200 se llama ORPSoC ( OpenRISC Reference Platform System-on-Chip ). El rendimiento del ORPSoC y otras variantes del OR1200 se ha demostrado en FPGA . [2] [3]

La cadena de herramientas de GNU está portada a OpenRISC y es compatible con varios lenguajes de programación , así como con Linux y μClinux .

OpenRISC ha sido compatible con el kernel de Linux desde la versión 3.1.

Sistema de mando

El conjunto de instrucciones (ORBIS32) es una variante simple de RISC, similar a MIPS , y utiliza instrucciones de tres operandos de longitud fija (32 bits). Trabajar con la memoria solo es posible con la ayuda de las operaciones de carga y almacenamiento. Están disponibles 16 o 32 registros de propósito general. Las versiones de instrucciones de 64 y 32 bits son similares en muchos aspectos, las principales diferencias son: aumentar el tamaño del registro a 64 bits y cambiar el formato de la tabla de páginas.

Las especificaciones de OpenRISC también incluyen características modernas: modo supervisor, memoria virtual, la capacidad de establecer derechos de lectura/modificación/ejecución para cada página de memoria, instrucciones atómicas, manejo de excepciones entre procesadores.

ORFP32X - Extensión de coma flotante (IEEE-754)

A partir de octubre de 2011, existen algunas ambigüedades en la especificación del modo de 64 bits.

Se puede implementar soporte opcional para operaciones SIMD .

Implementaciones

La mayoría de las veces se implementa en FPGA (se recomienda FPGA que contenga más de 40 mil 4-LUT).

Los miembros del proyecto OpenCores iban a lanzar un chip personalizado (ASIC) compatible con OpenRISC 1000 para obtener más rendimiento. [4] En 2011, comenzó la recaudación de fondos. [5]

Opciones comerciales

ORSoC ofrece opciones ORC32-1208, Beyond Semiconductor  - BA12, BA14, BA22.

Flextronics International y Jennic Limited utilizaron el núcleo OpenRISC como parte de sus propios ASIC. Samsung utiliza OpenRISC 1000 en DTV SoC (SDP83 B-Series, SDP92 C-Series, SDP1001/SDP1002 D-Series, SDP1103/SDP1106 E-Series). [6]

Allwinner Technology utilizó OpenRISC en el controlador AR100, que forma parte del SoC A31 (el procesador principal del sistema es ARM). [7]

Cadence Design Systems utiliza OpenRISC como arquitectura de referencia en la documentación (por ejemplo, para el flujo de referencia de UVM [8] ) .

La computadora experimental de nanosatélites TechEdSat , creada en la NASA usando OpenRISC, fue lanzada en la ISS en julio de 2012. [9] [10]

Aplicaciones científicas y no comerciales

La Universidad Técnica de Múnich utiliza OpenRISC en la investigación multinúcleo (director: Stefan Wallentowitz ). [once]

En 2013 se presentó el proyecto jor1k, un emulador de OpenRISC 1000 escrito en JavaScript capaz de ejecutar Linux y el Sistema X Window o Wayland . [12]

Herramientas de desarrollo

Compatible con GCC para C y C++, libc es newlib o uClibc . Dynalith proporciona OpenIDEA, un entorno de desarrollo . En 2012, se inició un proyecto para portar LLVM a OpenRISC 1000 [13] .

El proyecto OR1K proporciona el simulador or1ksim . La implementación principal, OR1200, se puede utilizar como modelo RTL. Hay un modelo SystemC ORPSoC con precisión de reloj.

Imperas vende el modelo OpenRISC 1200 de alta velocidad como Open Virtual Platforms .

Sistemas operativos

linux

Kernel de Linux desde la versión 3.1. [14] (procesadores de 32 bits OpenRISC 1000 - or1k). [quince]

RTOS

RTEMS , FreeRTOS , eCos .

QEMU

QEMU ha soportado la arquitectura desde la versión 1.2 [16] .

Véase también

Notas

  1. Damjan Lampret et al., "OpenRISC 1000 Architecture Manual", Rev 1.3, 15 de noviembre de 2007. Texto archivado el 18 de diciembre de 2016 en Wayback Machine .
  2. Patrick Pelgrims, Tom Tierens y Dries Driessens, "Tutorial de hardware de sistema OpenRISC personalizado básico: diseño de sistema integrado basado en FPGA suaves y duros", De Nayer Instituut, Hogeschool voor Wetenschap & Kunst, 2004. Disponible en líneaーカイブされたコピー . Consultado el 3 de marzo de 2009. Archivado desde el original el 27 de noviembre de 2006. 
  3. Xiang Li y Lin Zuo, "Plataforma integrada de código abierto basada en OpenRISC y DE2-70", tesis de maestría, programa SoC, KTH , Suecia. Disponible en línea [1] Archivado el 6 de octubre de 2011 en Wayback Machine .
  4. OpenCores - Convocatoria de donaciones de OpenRISC ASIC Archivado el 1 de mayo de 2011.
  5. Preguntas frecuentes sobre donaciones de OpenCores (enlace descendente) . Consultado el 20 de octubre de 2013. Archivado desde el original el 26 de abril de 2012. 
  6. Centro de lanzamiento de código abierto de Samsung Archivado el 24 de septiembre de 2013 en Wayback Machine , siga los enlaces → TV & VIDEO → TV → DTV → ETC → OR1200.zip
  7. Página wiki de la comunidad del proyecto Linux-sunxi en el controlador AR100 Archivado el 28 de abril de 2021 en Wayback Machine . Recuperado el 20 de julio de 2013.
  8. UVM Reference Flow Archivado el 26 de noviembre de 2011 en Wayback Machine , sitio web de Accellera (sin fecha).
  9. Publicar en las listas de correo de openrisc en Lists.opencores.org y Lists.openrisc.net el 8 de abril de 2012 por Fredrick Bruhn, CEO de ÅAC Microtec
  10. Comunicado de prensa del 11 de octubre de 2012, ÅAC Microtec AB.
  11. Cooptimización del modelo de programación y arquitectura multinúcleo (MAPCO)  (enlace no disponible) , Stefan Wallentowitz, Thomas Wild y Andreas Herkersdorf. Póster de investigación en la Sixth International Summer School on Advanced Computer Architecture and Compilation for High-Performance and Embedded Systems (ACACES), Terrassa (Barcelona), España, 11–17 de julio de 2010.
  12. El emulador de OpenRISC en JavaScript puede ejecutar Wayland . Consultado el 20 de octubre de 2013. Archivado desde el original el 19 de octubre de 2013.
  13. página wiki del proyecto Archivado el 14 de octubre de 2013.
  14. git.kernel.org-linux/kernel/git/torvalds/linux-2.6.git/tree-arch/openrisc/ . git.kernel.org. Recuperado: 17 de octubre de 2011.  (enlace no disponible)
  15. Linux 3.1 . Novatos del kernel. Consultado el 17 de octubre de 2011. Archivado desde el original el 18 de octubre de 2011.
  16. Registro de cambios de QEMU 1.2 . Consultado el 20 de octubre de 2013. Archivado desde el original el 21 de octubre de 2013.

Enlaces