stringtranslate.com

AbiertoRISC

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

La primera descripción arquitectónica (y solo a partir de 2019 ) es para OpenRISC 1000 ("OR1k"), y describe una familia de procesadores de 32 y 64 bits con soporte opcional de procesamiento vectorial y aritmética de punto flotante . [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 (HDL) Verilog . [5] La implementación posterior de mor1kx, que tiene algunas ventajas en comparación con el 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 (LGPL) de GNU, mientras que los modelos y el firmware se publicaron bajo la Licencia pública general GNU (GPL).

Se desarrolló una implementación de sistema de referencia en un chip (SoC) basada en OpenRISC 1200, denominada OpenRISC Reference Platform System-on-Chip (ORPSoC). Varios grupos han demostrado ORPSoC y otros diseños basados ​​en OR1200 que se ejecutan en conjuntos de puertas programables en campo (FPGA), [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 almacenamiento de carga 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 del registro (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 servidores 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 sincronizar y manejar interrupciones entre múltiples procesadores.

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

Implementaciones

OpenRISC prototipado en la placa de desarrollo FPGA Flextronics (Flex), ejecutando uClinux

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

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

En julio de 2022 , 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, incluido el ORC32-1208 de ORSoC y el BA12, BA14 y BA22 de Beyond Semiconductor. Dynalith Systems proporciona la placa de creación de prototipos 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 su sistema en chips DTV (SDP83 Serie B, SDP92 Serie C, SDP1001/SDP1002 Serie D, SDP1103/SDP1106 Serie E). [11] Se informa que Allwinner Technology utiliza un núcleo OpenRISC en su controlador de energía AR100, que forma parte del SoC basado en ARM A31. [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 contribuido a Accellera ). [13]

TechEdSat , la primera computadora Linux basada en 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 los 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 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 OpenRISC 1000 en JavaScript , ejecutando Linux con sistema X Window y soporte Wayland . [23]

Soporte de cadena de herramientas

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

GCC 9 lanzado con soporte OpenRISC. [25]

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

Soporte del sistema operativo

soporte linux

El kernel 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 (o 1k). [27] Anteriormente arquitectura OpenRISC 1000, ha sido reemplazada por el puerto principal.

Soporte RTOS

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

Soporte QEMU

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

Ver 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 vectoriales/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). "El núcleo de procesador de 32 bits gratuito llega a la red". Tiempos de ingeniería electrónica ( 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. ^ Peregrinos, Patrick; Tierens, Tom; Driessens, Dries (2004). "Tutorial básico de hardware del sistema OpenRISC personalizado: diseño de sistema integrado basado en FPGA blandas y duras" (PDF) . Instituto De Nayer . 1.0. Archivado desde el 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 (Masters). KTH Real Instituto de Tecnología (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 en el controlador AR100. Recuperado el 20 de julio de 2013.
  13. ^ Flujo de referencia UVM, sitio web de Accellera (sin fecha).
  14. ^ Publicación en las listas de correo de openrisc en listas.openrisc.net el 8 de abril de 2012 por Fredrick Bruhn, director ejecutivo de ÅAC Microtec
  15. ^ "Avance sueco en el espacio con un satélite de la NASA con electrónica de ÅAC Microtec". ÅAC Microtec (Presione soltar). 2012-10-11. 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 muerto ] 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; Salvaje, Tomás; Herkersdorf, Andreas. "Cooptimización del modelo de programación y arquitectura multinúcleo (MAPCO)" (PDF) (Póster de investigación en la Sexta Escuela Internacional de Verano sobre Arquitectura Informática Avanzada y Compilación para Sistemas Integrados 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 computadoras con FPGA, OpenCores y OpenRISC 1000). Reunión #9 de OSHUG, Skills Matter, 116-120 Goswell Road, Londres, 21 de abril de 2011.
  20. ^ Práctico System-on-Chip (Programe su propio SoC FPGA de código abierto). Reunió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 . Publicación 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 procesador de software de 32 bits". Tiempos de ingeniería electrónica ( 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 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. Archivado desde el original el 8 de julio de 2012 . Consultado el 17 de octubre de 2011 .
  27. ^ "Linux 3.1". Novatos del kernel . Consultado el 17 de octubre de 2011 .
  28. ^ Registro de cambios de QEMU 1.2

enlaces externos