stringtranslate.com

RISC-V

RISC-V [b] (pronunciado "risk-five" [2] : 1  ) es una arquitectura de conjunto de instrucciones (ISA) de estándar abierto basada en principios establecidos de computadoras de conjunto de instrucciones reducidas (RISC). El proyecto comenzó en 2010 en la Universidad de California, Berkeley , se transfirió a la Fundación RISC-V en 2015 y a RISC-V International, una entidad suiza sin fines de lucro, en noviembre de 2019. [5] [6] Al igual que varias otras ISA de RISC, por ejemplo, Amber (ARMv2) u OpenRISC , RISC-V se ofrece bajo licencias de código abierto libres de regalías . [7] Los documentos que definen la arquitectura del conjunto de instrucciones (ISA) RISC-V se ofrecen bajo una licencia Creative Commons o una licencia BSD .

El soporte principal para RISC-V se agregó al kernel Linux 5.17, en 2022, junto con su cadena de herramientas . [8] En julio de 2023, RISC-V, en su variante de 64 bits llamada riscv64, [9] se incluyó como una arquitectura oficial de la distribución Linux Debian , en su versión inestable . [10] El objetivo de este proyecto era "tener Debian listo para instalar y ejecutar en sistemas que implementen una variante de la ISA de RISC-V". [11]

Algunos miembros de RISC-V International, como SiFive , Andes Technology , Damo Academy de Alibaba , Raspberry Pi y Akeana, [12] [13] están ofreciendo o han anunciado sistemas comerciales en un chip (SoC) que incorporan uno o más núcleos de CPU compatibles con RISC-V. [14]

Descripción general

Como arquitectura RISC, la ISA RISC-V es una arquitectura de carga y almacenamiento . Sus instrucciones de punto flotante utilizan el estándar IEEE 754 de punto flotante. Las características notables de la ISA RISC-V incluyen: ubicaciones de campo de bits de instrucción elegidas para simplificar el uso de multiplexores en una CPU, [2] : 17  un diseño que es arquitectónicamente neutral, [ dudosodiscutir ] y una ubicación fija para el bit de signo de valores inmediatos para acelerar la extensión de signo . [2] : 17 

El conjunto de instrucciones está diseñado para una amplia gama de usos. El conjunto de instrucciones base tiene una longitud fija de instrucciones de 32 bits alineadas naturalmente, y la ISA admite extensiones de longitud variable donde cada instrucción puede tener cualquier número de paquetes de 16 bits de longitud. [2] : 7–10  Las extensiones admiten pequeños sistemas integrados , computadoras personales , supercomputadoras con procesadores vectoriales y computadoras paralelas a escala de almacén .

La especificación del conjunto de instrucciones define variantes de espacio de direcciones de 32 y 64 bits . La especificación incluye una descripción de una variante de espacio de direcciones plano de 128 bits , como una extrapolación de las variantes de 32 y 64 bits, pero el ISA de 128 bits permanece "sin congelar" intencionalmente, porque a partir de 2023 , todavía hay poca experiencia práctica con sistemas de memoria tan grandes. [2] : 41 

A diferencia de otros diseños académicos que normalmente están optimizados solo para simplificar la exposición, los diseñadores pretendían que el conjunto de instrucciones RISC-V fuera utilizable para computadoras prácticas. A partir de junio de 2019, la versión 2.2 de la ISA de espacio de usuario [15] y la versión 1.11 de la ISA privilegiada [3] están congeladas , lo que permite que continúe el desarrollo de software y hardware. La ISA de espacio de usuario, ahora rebautizada como ISA sin privilegios, se actualizó, ratificó y congelada como versión 20191213. [2] Una especificación de depuración externa está disponible como borrador, versión 0.13.2. [16]

Razón fundamental

Prototipo de procesador RISC-V, enero de 2013

El diseño de CPU requiere experiencia en diseño en varias especialidades: lógica digital electrónica , compiladores y sistemas operativos . Para cubrir los costos de un equipo de este tipo, los proveedores comerciales de propiedad intelectual (PI) de procesadores, como Arm Ltd. y MIPS Technologies , cobran regalías por el uso de sus diseños, patentes y derechos de autor . [17] [18] [19] También suelen exigir acuerdos de confidencialidad antes de publicar documentos que describan las ventajas detalladas de sus diseños. En muchos casos, nunca describen las razones de sus elecciones de diseño.

RISC-V se inició con el objetivo de crear una ISA práctica que fuera de código abierto, utilizable académicamente y que se pudiera implementar en cualquier diseño de hardware o software sin regalías. [2] : 1  [20] Además, se explican las razones que justifican cada decisión de diseño del proyecto, al menos en términos generales. Los autores de RISC-V son académicos que tienen una experiencia sustancial en diseño de computadoras, y la ISA de RISC-V es un desarrollo directo de una serie de proyectos académicos de diseño de computadoras, especialmente Berkeley RISC . RISC-V se originó en parte para ayudar a todos esos proyectos. [2] : 1  [20]

Para construir una gran comunidad continua de usuarios y, de ese modo, acumular diseños y software, los diseñadores de RISC-V ISA admiten intencionalmente una amplia variedad de casos de uso prácticos: implementaciones reales compactas, de alto rendimiento y de bajo consumo [2] : 1–2, 153–154  [21] sin sobrearquitecturar para una microarquitectura dada . [2] : 1  [22] [23] [24] Los requisitos de una gran base de contribuyentes son parte de la razón por la que RISC-V fue diseñado para abordar muchos usos posibles.

La principal afirmación de los diseñadores es que el conjunto de instrucciones es la interfaz clave de un ordenador, ya que se encuentra en la interfaz entre el hardware y el software. Si un buen conjunto de instrucciones fuera abierto y estuviera disponible para que lo usara todo el mundo, podría reducir drásticamente el coste del software al permitir una reutilización mucho mayor. También debería generar una mayor competencia entre los proveedores de hardware, que podrían dedicar más recursos al diseño y menos al soporte del software. [20]

Los diseñadores sostienen que los nuevos principios son cada vez más escasos en el diseño de conjuntos de instrucciones, ya que los diseños más exitosos de los últimos cuarenta años se han vuelto cada vez más similares. De los que fracasaron, la mayoría lo hicieron porque las empresas que los patrocinaban no tuvieron éxito financiero, no porque los conjuntos de instrucciones fueran técnicamente deficientes. Por lo tanto, un conjunto de instrucciones abierto bien diseñado y diseñado utilizando principios bien establecidos debería atraer el apoyo a largo plazo de muchos proveedores. [20]

RISC-V también fomenta el uso académico. La simplicidad del subconjunto entero permite ejercicios básicos para estudiantes y es una ISA lo suficientemente simple como para permitir que el software controle máquinas de investigación. La ISA de longitud variable proporciona espacio para extensiones del conjunto de instrucciones tanto para ejercicios de estudiantes como para investigación, [2] : 7  y el conjunto de instrucciones privilegiadas separadas permite la investigación en soporte de sistemas operativos sin rediseñar compiladores. [3] El paradigma de propiedad intelectual abierta de RISC-V permite que los diseños derivados se publiquen, reutilicen y modifiquen. [25]

Historia

El término RISC data de alrededor de 1980. [26] Antes de eso, había algún conocimiento (ver John Cocke ) de que las computadoras más simples pueden ser efectivas, pero los principios de diseño no estaban ampliamente descritos. Las computadoras simples y efectivas siempre han sido de interés académico y dieron como resultado el conjunto de instrucciones RISC DLX para la primera edición de Computer Architecture: A Quantitative Approach en 1990, de la que David Patterson fue coautor, y más tarde participó en el origen de RISC-V. DLX fue pensado para uso educativo; académicos y aficionados lo implementaron utilizando matrices de puertas programables en campo (FPGA), pero nunca estuvo realmente pensado para su implementación comercial. Las CPU ARM , versiones 2 y anteriores, tenían un conjunto de instrucciones de dominio público y aún son compatibles con GNU Compiler Collection (GCC), un compilador de software libre popular . Existen tres núcleos de código abierto para esta ISA, pero nunca se fabricaron. [27] [28] Los núcleos OpenRISC , OpenPOWER y OpenSPARC / LEON son ofrecidos por varios proveedores y tienen soporte principal para GCC y kernel Linux . [29] [30] [31]

Krste Asanović de la Universidad de California, Berkeley , tenía un requerimiento de investigación para un sistema informático de código abierto, y en 2010, decidió desarrollar y publicar uno en un "proyecto corto de tres meses durante el verano" con varios de sus estudiantes de posgrado. El plan era ayudar tanto a los usuarios académicos como a los industriales. [20] David Patterson de Berkeley se unió a la colaboración ya que fue el creador de Berkeley RISC, [26] y RISC-V es la quinta generación homónima de su larga serie de proyectos de investigación cooperativos basados ​​en RISC en la Universidad de California, Berkeley ( RISC-I y RISC-II publicados en 1981 por Patterson, quien se refiere [32] a la arquitectura SOAR [33] de 1984 como "RISC-III" y a la arquitectura SPUR [34] de 1988 como "RISC-IV"). En esta etapa, los estudiantes proporcionaron software inicial, simulaciones y diseños de CPU. [35]

El primer Raven1 llega a ST28nm en el Centro de Investigación Inalámbrica de Berkeley (BWRC), junio de 2012

Los autores de RISC-V y su institución obtuvieron originalmente los documentos ISA [36] y varios diseños de CPU bajo licencias BSD , que permiten que los trabajos derivados (como los diseños de chips RISC-V) sean abiertos y libres o cerrados y propietarios. La especificación ISA en sí (es decir, la codificación del conjunto de instrucciones) se publicó en 2011 como código abierto, [37] con todos los derechos reservados. El informe técnico real (una expresión de la especificación) se colocó posteriormente bajo una licencia Creative Commons para permitir mejoras por parte de colaboradores externos a través de la Fundación RISC-V y, más tarde, RISC-V International.

Se ha publicado una historia completa de RISC-V en el sitio web de RISC-V International. [38]

Fundación RISC-V y RISC-V Internacional

Los usuarios comerciales requieren que una ISA sea estable antes de poder usarla en un producto que puede durar muchos años. Para abordar este problema, en 2015 se formó la Fundación RISC-V para poseer, mantener y publicar la propiedad intelectual relacionada con la definición de RISC-V. [39] Los autores y propietarios originales han cedido sus derechos a la fundación. [ cita requerida ] La fundación está dirigida por la directora ejecutiva Calista Redmond , quien asumió el cargo en 2019 después de liderar proyectos de infraestructura abierta en IBM . [40] [ verificación fallida ]

Los miembros fundadores de RISC-V fueron: Andes, Antmicro, Bluespec, CEVA, Codasip, Cortus, Esperanto, Espressif, ETH Zurich, Google, IBM, ICT, IIT Madras, Lattice, lowRISC, Microchip, MIT (Csail), Qualcomm, Rambus, Rumble, SiFive, Syntacore y Technolution. [41]

En noviembre de 2019, la Fundación RISC-V anunció que se trasladaría a Suiza, citando preocupaciones sobre las regulaciones comerciales de Estados Unidos. [42] [43] A partir de marzo de 2020, la organización se denominó RISC-V International, una asociación empresarial suiza sin fines de lucro. [44]

A partir de 2019 , RISC-V International publica libremente los documentos que definen RISC-V y permite el uso sin restricciones de la ISA para el diseño de software y hardware. Sin embargo, solo los miembros de RISC-V International pueden votar para aprobar cambios, y solo las organizaciones miembro usan el logotipo de compatibilidad registrado . [45]

Premios

Diseño

Base y extensiones de ISA

RISC-V tiene un diseño modular, que consta de partes de base alternativas, con extensiones opcionales añadidas. La base ISA y sus extensiones se desarrollan en un esfuerzo colectivo entre la industria, la comunidad de investigación y las instituciones educativas. La base especifica instrucciones (y su codificación), flujo de control, registros (y sus tamaños), memoria y direccionamiento, manipulación de lógica (es decir, números enteros) y elementos auxiliares. La base por sí sola puede implementar una computadora de propósito general simplificada, con soporte de software completo, incluido un compilador de propósito general.

Las extensiones estándar están especificadas para funcionar con todas las bases estándar y entre sí sin conflictos.

Muchas computadoras RISC-V podrían implementar la extensión de instrucciones comprimidas para reducir el consumo de energía, el tamaño del código y el uso de memoria. [2] : 97–99  También hay planes futuros para soportar hipervisores y virtualización . [3]

Junto con la extensión de supervisor, S, un conjunto de instrucciones RVGC, que incluye uno de los conjuntos de instrucciones base RV, la colección G de extensiones (que incluye "I", lo que significa que la base no está incorporada) y la extensión C, define todas las instrucciones necesarias para soportar convenientemente un sistema operativo de propósito general . [2] : 129, 154 

  1. ^ Se espera que las partes congeladas tengan su conjunto final de características y reciban solo aclaraciones antes de ser ratificadas.

Para nombrar las combinaciones de funciones que se pueden implementar, se define una nomenclatura para especificarlas en el Capítulo 27 de la Especificación ISA sin privilegios ratificada actual. Primero se especifica la base del conjunto de instrucciones, la codificación para RISC-V, el ancho de bits del registro y la variante; por ejemplo, RV64I o RV32E . Luego siguen letras que especifican extensiones implementadas, en el orden de la tabla anterior. Cada letra puede ir seguida de una opción mayor seguida opcionalmente de "p" y un número de opción menor. El valor predeterminado es 0 si no hay un número de versión menor y 1.0 si no hay ningún número de versión. Por lo tanto, RV64IMAFD puede escribirse como RV64I1p0M1p0A1p0F1p0D1p0 o simplemente como RV64I1M1A1F1D1 . Se pueden usar guiones bajos entre extensiones para facilitar la lectura, por ejemplo RV32I2_M2_A2 .

Un diagrama del conjunto de instrucciones modulares de la variante RV32IMAC, que muestra todas las instrucciones en la ISA de enteros base y las extensiones para la multiplicación y división de enteros, instrucciones atómicas e instrucciones comprimidas.
Conjunto de instrucciones modular de la variante RV32IMAC . Se trata de una CPU de 32 bits con la ISA de enteros base ( RV32I ) y las extensiones ISA para multiplicación y división de enteros ( RV32M ), instrucciones atómicas ( RV32A ) e instrucciones comprimidas ( RV32C ).

Los cálculos básicos, de números enteros extendidos y de punto flotante, con primitivas de sincronización para computación multinúcleo, se consideran necesarios para la computación de propósito general, y por eso tenemos la abreviatura "G".

Una computadora pequeña de 32 bits para un sistema integrado podría ser RV32EC . Una computadora grande de 64 bits podría ser RV64GC , es decir, RV64IMAFDCZicsr_Zifencei .

Con el crecimiento en el número de extensiones, el estándar ahora permite que las extensiones se denominen con una sola "Z" seguida de un nombre alfabético y un número de versión opcional. Por ejemplo, Zifencei nombra la extensión de obtención de instrucciones. Zifencei2 y Zifencei2p0 nombran la versión 2.0 de la misma. La primera letra después de la "Z" por convención indica la categoría de extensión alfabética más relacionada, IMAFDQLCBJTPVN . Por lo tanto, la extensión Zam para átomos desalineados se relaciona con la extensión estándar "A". A diferencia de las extensiones de un solo carácter, las extensiones Z deben separarse con guiones bajos, agruparse por categoría y luego alfabéticamente dentro de cada categoría. Por ejemplo, Zicsr_Zifencei_Zam .

Las extensiones específicas del nivel de privilegios de supervisor se nombran de la misma manera, utilizando "S" como prefijo. Las extensiones específicas del nivel de hipervisor se nombran utilizando "H" como prefijo. Las extensiones de nivel de máquina tienen como prefijo las tres letras "Zxm". Las extensiones de conjunto de instrucciones de nivel de supervisor, hipervisor y máquina reciben el nombre de extensiones con menos privilegios.

Los desarrolladores de RISC-V pueden crear sus propias extensiones de conjuntos de instrucciones no estándar. Estas siguen la convención de nombres "Z", pero con "X" como prefijo. Deben especificarse después de todas las extensiones estándar y, si se enumeran varias extensiones no estándar, deben enumerarse en orden alfabético.

Perfiles y plataformas

Se están discutiendo perfiles y plataformas para las listas de elección estándar de ISA.

... Esta flexibilidad se puede utilizar para optimizar en gran medida un diseño especializado al incluir solo el conjunto exacto de características ISA requeridas para una aplicación, pero la misma flexibilidad también conduce a una explosión combinatoria en posibles opciones ISA. Los perfiles especifican un conjunto común mucho más pequeño de opciones ISA que capturan el mayor valor para la mayoría de los usuarios y que, por lo tanto, permiten a la comunidad de software concentrar los recursos en la construcción de un rico ecosistema de software. [50]

La especificación de plataforma define un conjunto de plataformas que especifican los requisitos de interoperabilidad entre software y hardware. La política de plataforma define los distintos términos utilizados en esta especificación de plataforma. La política de plataforma también proporciona los detalles necesarios sobre el alcance, la cobertura, la denominación, el control de versiones, la estructura, el ciclo de vida y las reivindicaciones de compatibilidad para la especificación de plataforma. [51]

Conjuntos de registros

RISC-V tiene 32 registros enteros (o 16 en la variante incorporada), [2] : 13, 33  y cuando se implementa la extensión de punto flotante, 32 registros de punto flotante adicionales . [2] : 63  A excepción de las instrucciones de acceso a memoria, las instrucciones solo abordan registros .

El primer registro entero es un registro cero y el resto son registros de uso general. Un almacenamiento en el registro cero no tiene ningún efecto y una lectura siempre proporciona 0. El uso del registro cero como marcador de posición permite obtener un conjunto de instrucciones más simple.

Existen registros de control y de estado, pero los programas en modo usuario solo pueden acceder a aquellos que se utilizan para la medición del rendimiento y la gestión de punto flotante.

No existen instrucciones para guardar y restaurar múltiples registros. Se pensaba que eran innecesarias, demasiado complejas y quizás demasiado lentas. [25]

Acceso a la memoria

Al igual que muchos diseños RISC, RISC-V es una arquitectura de carga-almacenamiento : las instrucciones se dirigen únicamente a los registros, mientras que las instrucciones de carga y almacenamiento transmiten datos hacia y desde la memoria.

La mayoría de las instrucciones de carga y almacenamiento incluyen un desplazamiento de 12 bits y dos identificadores de registro. Un registro es el registro base. El otro registro es el destino (para una carga) o la fuente (para un almacenamiento).

El desplazamiento se suma a un registro base para obtener la dirección. [2] : 24  La formación de la dirección como un registro base más el desplazamiento permite que instrucciones individuales accedan a las estructuras de datos. Por ejemplo, si el registro base apunta a la parte superior de una pila, instrucciones individuales pueden acceder a las variables locales de una subrutina en la pila. Del mismo modo, las instrucciones de carga y almacenamiento pueden acceder a una estructura de estilo de registro o a un dispositivo de E/S mapeado en memoria. El uso del registro cero constante como dirección base permite que instrucciones individuales accedan a la memoria cerca de la dirección cero.

La memoria se direcciona como bytes de 8 bits, con instrucciones en orden little-endian , [2] : 9–10  y con datos en el orden de bytes definido por la interfaz del entorno de ejecución en el que se ejecuta el código. [2] : 3, 9–10,  Se puede acceder a 24 palabras, hasta el tamaño del registro, con las instrucciones de carga y almacenamiento.

RISC-V se especificó originalmente como little-endian para parecerse a otras computadoras conocidas y exitosas, por ejemplo, x86 . [2] : 9–10  Esto también reduce la complejidad de una CPU y cuesta un poco menos porque lee todos los tamaños de palabras en el mismo orden. Por ejemplo, el conjunto de instrucciones RISC-V decodifica comenzando en el byte de dirección más baja de la instrucción. Las variantes big-endian y bi-endian se definieron para admitir bases de código heredadas que asumen big-endianness. [2] : 9–10  La ISA privilegiada define bits en los registros mstatus y mstatush que indican y, opcionalmente, controlan si los accesos a la memoria en modo M, modo S y modo U que no sean búsquedas de instrucciones son little-endian o big-endian; esos bits pueden ser de solo lectura, en cuyo caso el endianness de la implementación está cableado, o pueden ser escribibles. [3] : 23–24 

Una interfaz de entorno de ejecución puede permitir que las direcciones de memoria a las que se accede no estén alineadas con su ancho de palabra, pero los accesos a direcciones alineadas pueden ser más rápidos; por ejemplo, las CPU simples pueden implementar accesos no alineados con una emulación de software lenta impulsada por una interrupción por falla de alineación . [2] : 3, 24–25 

Al igual que muchos conjuntos de instrucciones RISC (y algunos conjuntos de instrucciones de computadoras con conjuntos de instrucciones complejos (CISC), como x86 e IBM System/360 y sus sucesores hasta z/Architecture ), RISC-V carece de modos de dirección que escriban en los registros. Por ejemplo, no se incrementa automáticamente. [2] : 24 

RISC-V administra los sistemas de memoria que se comparten entre CPU o subprocesos al garantizar que un subproceso de ejecución siempre vea sus operaciones de memoria en el orden programado. Pero entre subprocesos y dispositivos de E/S, RISC-V se simplifica: no garantiza el orden de las operaciones de memoria, excepto mediante instrucciones específicas, como fence.

Una fenceinstrucción garantiza que los resultados de las operaciones predecesoras sean visibles para las operaciones sucesoras de otros subprocesos o dispositivos de E/S. fencePuede garantizar el orden de las combinaciones de operaciones de E/S de memoria y mapeadas en memoria. Por ejemplo, puede separar las operaciones de lectura y escritura de memoria, sin afectar las operaciones de E/S. O bien, si un sistema puede operar dispositivos de E/S en paralelo con la memoria, fenceno los obliga a esperarse entre sí. Una CPU con un subproceso puede decodificar fencecomo nop.

Algunas CPU RISC (como MIPS , PowerPC , DLX y RISC-I de Berkeley) colocan 16 bits de desplazamiento en las cargas y los almacenamientos. Establecen los 16 bits superiores mediante una instrucción de carga de palabra superior . Esto permite que los valores de la mitad superior de la palabra se establezcan fácilmente, sin cambiar bits. Sin embargo, la mayoría del uso de la instrucción de la mitad superior de la palabra crea constantes de 32 bits, como direcciones. RISC-V utiliza una combinación similar a SPARC de desplazamientos de 12 bits e instrucciones de configuración de palabra superior de 20 bits . El desplazamiento más pequeño de 12 bits ayuda a compactar las instrucciones de carga y almacenamiento de 32 bits a seleccionar dos de los 32 registros y aún así tener suficientes bits para admitir la codificación de instrucciones de longitud variable de RISC-V. [2] : 16 

Inmediato

RISC-V maneja constantes y direcciones de 32 bits con instrucciones que configuran los 20 bits superiores de un registro de 32 bits. La carga inmediata superior carga lui20 bits en los bits 31 a 12. Luego, una segunda instrucción como addipuede configurar los 12 bits inferiores. Se pueden formar números o direcciones pequeños utilizando el registro cero en lugar de lui.

Este método se amplía para permitir código independiente de la posición añadiendo una instrucción auipcque genera 20 bits de dirección superior añadiendo un desplazamiento al contador del programa y almacenando el resultado en un registro base. Esto permite que un programa genere direcciones de 32 bits relativas al contador del programa.

El registro base se puede utilizar a menudo tal como está con los desplazamientos de 12 bits de las cargas y los almacenamientos. Si es necesario, addise pueden establecer los 12 bits inferiores de un registro. En las ISA de 64 y 128 bits, se luipuede auipcextender el signo del resultado para obtener la dirección más grande. [2] : 37 

Algunas CPU rápidas pueden interpretar combinaciones de instrucciones como instrucciones fusionadas individuales , luio auipcson buenos candidatos para fusionarse con jalr, addi, cargan o almacenan.

Llamadas a subrutinas, saltos y ramificaciones

La llamada a subrutina de RISC-V jal(saltar y enlazar) coloca su dirección de retorno en un registro. Esto es más rápido en muchos diseños de computadoras, porque ahorra un acceso a la memoria en comparación con los sistemas que insertan una dirección de retorno directamente en una pila en la memoria. jaltiene un desplazamiento de 20 bits con signo ( complemento a dos ). El desplazamiento se multiplica por 2 y luego se suma al PC (contador de programa) para generar una dirección relativa a una instrucción de 32 bits. Si la dirección resultante no está alineada con 32 bits (es decir, es divisible por 4), la CPU puede forzar una excepción . [2] : 20–23, Sección 2.5 

Las CPU RISC-V saltan a direcciones calculadas mediante una instrucción de salto y enlace de registro . jalres jalrsimilar a jal, pero obtiene su dirección de destino agregando un desplazamiento de 12 bits a un registro base. (En contraste, jalagrega un desplazamiento más grande de 20 bits a la PC).

jalrEl formato de bits de es como las cargas y los almacenamientos relativos a registros. Al igual que ellos, jalrse puede utilizar con las instrucciones que establecen los 20 bits superiores de un registro base para realizar ramificaciones de 32 bits, ya sea a una dirección absoluta (usando lui) o relativa a PC (usando auipcpara código independiente de la posición). (El uso de una dirección base cero constante permite llamadas de instrucción única a una dirección positiva o negativa fija pequeña (el desplazamiento).

RISC-V recicla jaly jalrobtiene saltos incondicionales relativos a PC de 20 bits y saltos incondicionales basados ​​en registros de 12 bits. Los saltos simplemente hacen que el registro de enlace sea 0, de modo que no se guarda ninguna dirección de retorno. [2] : 20–23, Sección 2.5 

RISC-V también recicla jalrpara regresar desde una subrutina: para hacer esto, jalrel registro base de se establece para que sea el registro de enlace guardado por jalo jalr. jalrEl desplazamiento de es cero y el registro de enlace es cero, de modo que no hay desplazamiento y no se guarda ninguna dirección de retorno.

Al igual que muchos diseños RISC, en una llamada de subrutina, un compilador RISC-V debe usar instrucciones individuales para guardar registros en la pila al inicio y luego restaurarlos desde la pila al salir. RISC-V no tiene instrucciones para guardar o restaurar múltiples registros. Se pensaba que esto hacía que la CPU fuera demasiado compleja y posiblemente lenta. [52] Esto puede ocupar más espacio de código. Los diseñadores planearon reducir el tamaño del código con rutinas de biblioteca para guardar y restaurar registros. [53]

RISC-V no tiene registro de código de condición ni bit de acarreo . Los diseñadores creían que los códigos de condición hacen que las CPU rápidas sean más complejas al forzar interacciones entre instrucciones en diferentes etapas de ejecución. Esta elección hace que la aritmética de precisión múltiple sea más compleja. Además, algunas tareas numéricas necesitan más energía. Como resultado, no se admite la predicción (la ejecución condicional de instrucciones). Los diseñadores afirman que los diseños de CPU muy rápidos y fuera de orden hacen la predicción de todos modos, haciendo la rama de comparación y el código condicional en paralelo, y luego descartando los efectos de la ruta no utilizada. También afirman que incluso en CPU más simples, la predicción es menos valiosa que la predicción de rama , que puede evitar la mayoría de los bloqueos asociados con las ramas condicionales. El código sin predicación es más grande, con más ramas, pero también afirman que un conjunto de instrucciones comprimido (como el conjunto C de RISC-V ) resuelve ese problema en la mayoría de los casos. [25] [ verificación fallida ]

En cambio, RISC-V tiene ramas cortas que realizan comparaciones: igual, no igual, menor que, menor que sin signo, mayor o igual que y mayor o igual sin signo. Se implementan diez operaciones de comparación de ramas con solo seis instrucciones, invirtiendo el orden de los operandos en el ensamblador . Por ejemplo, la rama si es mayor que se puede realizar con menor que con un orden invertido de operandos. [2] : 20–23, Sección 2.5 

Las ramas de comparación tienen un rango con signo de doce bits y saltan en relación con el PC. [2] : 20–23, Sección 2.5 

A diferencia de algunas arquitecturas RISC, RISC-V no incluye una ranura de retardo de bifurcación , una posición después de una instrucción de bifurcación que se puede llenar con una instrucción que se ejecuta independientemente de si se toma o no la bifurcación. [2] : 20–23, Sección 2.5  RISC-V omite una ranura de retardo de bifurcación porque complica las CPU multiciclo, las CPU superescalares y las tuberías largas. Los predictores de bifurcaciones dinámicas han tenido suficiente éxito como para reducir la necesidad de bifurcaciones retrasadas. [25]

En el primer encuentro con una bifurcación, las CPU RISC-V deben asumir que se tomará una bifurcación relativa negativa (es decir, el bit de signo del desplazamiento es "1"). [2] : 20–23, Sección 2.5  Esto supone que una bifurcación hacia atrás es un bucle y proporciona una dirección predeterminada para que las CPU con canalización simple puedan completar su canalización de instrucciones. Aparte de esto, RISC-V no requiere predicción de bifurcaciones , pero las implementaciones principales pueden agregarla. RV32I reserva un espacio de instrucciones "HINT" que actualmente no contiene ninguna sugerencia sobre bifurcaciones; [2] : 28–29, Sección 2.9  RV64I hace lo mismo. [2] : 38–39, Sección 5.4 

Conjuntos aritméticos y lógicos

RISC-V segrega las matemáticas en un conjunto mínimo de instrucciones de números enteros (conjunto I ) con suma, resta, desplazamiento, lógica bit a bit y ramas de comparación. Estas pueden simular la mayoría de los otros conjuntos de instrucciones RISC-V con software. (Las instrucciones atómicas son una excepción notable). Las instrucciones de números enteros RISC-V carecen de las operaciones de conteo de ceros a la izquierda y de campo de bits que normalmente se usan para acelerar el punto flotante de software en un procesador de números enteros puros. Sin embargo, aunque nominalmente están en la extensión de manipulación de bits, las extensiones ratificadas Zbb, Zba y Zbs contienen más instrucciones de números enteros, incluida una instrucción de conteo de ceros a la izquierda.

Las instrucciones de multiplicación de números enteros (conjunto M ) incluyen multiplicación y división con y sin signo. Se incluyen multiplicaciones y divisiones de números enteros de doble precisión, como multiplicaciones y divisiones que producen la palabra alta del resultado. El documento ISA recomienda que los implementadores de CPU y compiladores fusionen una secuencia estandarizada de instrucciones de multiplicación y división altas y bajas en una sola operación, si es posible. [2] : 43–45 

Las instrucciones de punto flotante (conjunto F ) incluyen aritmética de precisión simple y también ramas de comparación similares a la aritmética de números enteros. Requiere un conjunto adicional de 32 registros de punto flotante. Estos son independientes de los registros de números enteros. Las instrucciones de punto flotante de doble precisión (conjunto D ) generalmente suponen que los registros de punto flotante son de 64 bits (es decir, de doble ancho), y el subconjunto F está coordinado con el conjunto D. También se define una ISA de punto flotante de 128 bits de precisión cuádruple ( Q ). [2] : 63–82  Las computadoras RISC-V sin punto flotante pueden usar una biblioteca de software de punto flotante.

RISC-V no causa excepciones en errores aritméticos, incluyendo desbordamiento , [2] : 17–20  subdesbordamiento, subnormal y división por cero. [2] : 44–45  En cambio, tanto la aritmética de enteros como la de punto flotante producen valores predeterminados razonables, y las instrucciones de punto flotante establecen bits de estado. [2] : 66  La división por cero puede ser descubierta por una rama después de la división. [2] : 44–45  Los bits de estado pueden ser probados por un sistema operativo o una interrupción periódica.

Operaciones de memoria atómica

RISC-V admite computadoras que comparten memoria entre múltiples CPU y subprocesos . El modelo de consistencia de memoria estándar de RISC-V es la consistencia de liberación . Es decir, las cargas y los almacenamientos generalmente se pueden reordenar, pero algunas cargas se pueden designar como operaciones de adquisición que deben preceder a los accesos de memoria posteriores, y algunos almacenamientos se pueden designar como operaciones de liberación que deben seguir a los accesos de memoria anteriores. [2] : 83–94 

El conjunto de instrucciones base incluye un soporte mínimo en forma de una fenceinstrucción para hacer cumplir el orden de la memoria. [2] : 26–27  Aunque esto es suficiente ( fence r, rwproporciona adquisición y fence rw, wproporciona liberación ), las operaciones combinadas pueden ser más eficientes. [2] : Capítulo 8 

La extensión de operación de memoria atómica admite dos tipos de operaciones de memoria atómica para la coherencia de la liberación. En primer lugar, proporciona instrucciones de uso general reservadas de carga lr y de almacenamiento condicional sclr . realiza una carga e intenta reservar esa dirección para su hilo. scSe realizará un almacenamiento condicional posterior a la dirección reservada solo si la reserva no se interrumpe por un almacenamiento intermedio de otra fuente. Si el almacenamiento tiene éxito, se coloca un cero en un registro. Si falla, un valor distinto de cero indica que el software debe volver a intentar la operación. En cualquier caso, se libera la reserva. [2] : Capítulo 8 

El segundo grupo de instrucciones atómicas realiza secuencias de lectura-modificación-escritura : una carga (que opcionalmente es una carga-adquisición) a un registro de destino, luego una operación entre el valor cargado y un registro de origen, luego un almacenamiento del resultado (que opcionalmente puede ser un almacenamiento-liberación). Hacer que las barreras de memoria sean opcionales permite combinar las operaciones. Las operaciones opcionales se habilitan mediante bits de adquisición y liberación que están presentes en cada instrucción atómica. RISC-V define nueve operaciones posibles: swap (utilizar el valor del registro de origen directamente); add; and, or y or exclusivo a nivel de bit; y mínimo y máximo con y sin signo. [2] : Capítulo 8 

Un diseño de sistema puede optimizar estas operaciones combinadas más que lry sc. Por ejemplo, si el registro de destino para un intercambio es la constante cero, se puede omitir la carga. Si el valor almacenado no se ha modificado desde la carga, se puede omitir el almacenamiento. [15] : 44 

El IBM System/370 y sus sucesores, incluidos z/Architecture y x86 , implementan una instrucción compare-and-swap ( ), que prueba y actualiza condicionalmente una ubicación en la memoria: si la ubicación contiene un valor antiguo esperado, lo reemplaza con un nuevo valor dado; luego devuelve una indicación de si realizó el cambio. Sin embargo, generalmente se realiza una instrucción simple de tipo carga antes de la para obtener el valor antiguo. El problema clásico es que si un hilo lee (carga) un valor A , calcula un nuevo valor C y luego usa ( ) para reemplazar A con C , no tiene forma de saber si la actividad concurrente en otro hilo ha reemplazado A con algún otro valor B y luego restauró el A en el medio. En algunos algoritmos (por ejemplo, aquellos en los que los valores en la memoria son punteros a bloques asignados dinámicamente), este problema ABA puede conducir a resultados incorrectos. La solución más común emplea una instrucción de doble ancho para actualizar tanto el puntero como un contador adyacente; Desafortunadamente, este tipo de instrucción requiere un formato de instrucción especial para especificar múltiples registros, realiza varias lecturas y escrituras y puede tener una operación de bus compleja. [2] : 48–49 cascascascascas

La alternativa lr/ sces más eficiente. Normalmente requiere sólo una carga de memoria, y es deseable minimizar las operaciones de memoria lentas. También es exacta: controla todos los accesos a la celda de memoria, en lugar de sólo asegurar un patrón de bits. Sin embargo, a diferencia de cas, puede permitir livelock , en el que dos o más hilos hacen que las instrucciones de cada uno fallen repetidamente. RISC-V garantiza el progreso hacia adelante (sin livelock) si el código sigue reglas sobre el tiempo y la secuencia de instrucciones: 1) Debe utilizar sólo el subconjunto I. 2) Para evitar errores de caché repetitivos, el código (incluido el bucle de reintentos) no debe ocupar más de 16 instrucciones consecutivas. 3) No debe incluir instrucciones de sistema o de valla, o ramas hacia atrás tomadas entre y lr. sc4) La rama hacia atrás al bucle de reintentos debe ser a la secuencia original. [2] : 48–49 

La especificación proporciona un ejemplo de cómo utilizar las instrucciones atómicas de lectura-modificación-escritura para bloquear una estructura de datos. [2] : 54 

Subconjunto comprimido

El estándar RISC-V ISA especifica que todas las instrucciones son de 32 bits. Esto hace que la implementación sea particularmente sencilla, pero al igual que otros procesadores RISC con codificación de instrucciones de 32 bits, da como resultado un tamaño de código mayor que en conjuntos de instrucciones con instrucciones de longitud variable. [2] : 99  [52]

Para compensar, las instrucciones de 32 bits de RISC-V son en realidad de 30 bits; 34 del espacio del código de operación se reserva para un conjunto de instrucciones comprimidas de longitud variable opcional (pero recomendado) , RVC, que incluye instrucciones de 16 bits. Al igual que en ARM Thumb y MIPS16 , las instrucciones comprimidas son simplemente codificaciones alternativas para un subconjunto de las instrucciones más grandes. A diferencia de los conjuntos comprimidos ARM o MIPS, el espacio se reservó desde el principio, por lo que no hay un modo operativo separado. Las instrucciones estándar y comprimidas se pueden mezclar libremente. [2] : 97  [52] (La letra de extensión es C .) [2] : 97 

Debido a que (como Thumb-1 y MIPS16) las instrucciones comprimidas son simplemente codificaciones alternativas (alias) para un subconjunto seleccionado de instrucciones más grandes, la compresión se puede implementar en el ensamblador y no es esencial que el compilador siquiera lo sepa.

En 2011 se probó un prototipo de RVC. [52] El código del prototipo era un 20% más pequeño que un código comprimido MIPS y de PC x86 , y un 2% más grande que el código ARM Thumb-2 . [52] También redujo sustancialmente tanto la memoria caché necesaria como el uso estimado de energía del sistema de memoria. [52]

El investigador pretendía reducir el tamaño binario del código para ordenadores pequeños, especialmente sistemas informáticos embebidos . El prototipo incluía 33 de las instrucciones más utilizadas, recodificadas como formatos compactos de 16 bits utilizando códigos de operación previamente reservados para el conjunto comprimido. [52] La compresión se realizó en el ensamblador , sin cambios en el compilador. Las instrucciones comprimidas omitieron campos que a menudo son cero, utilizaron valores inmediatos pequeños o accedieron a subconjuntos (16 u 8) de los registros. addies muy común y a menudo comprimible. [52]

Gran parte de la diferencia de tamaño en comparación con el conjunto Thumb de ARM se produjo porque RISC-V y el prototipo no tienen instrucciones para guardar y restaurar múltiples registros. En su lugar, el compilador generó instrucciones convencionales que acceden a la pila. El ensamblador RVC del prototipo a menudo las convertía a formas comprimidas que tenían la mitad del tamaño. Sin embargo, esto todavía ocupaba más espacio de código que las instrucciones ARM que guardan y restauran múltiples registros. El investigador propuso modificar el compilador para llamar a rutinas de biblioteca para guardar y restaurar registros. Estas rutinas tenderían a permanecer en una caché de código y, por lo tanto, se ejecutarían rápidamente, aunque probablemente no tan rápido como una instrucción de guardar múltiples registros. [52]

El RVC estándar requiere el uso ocasional de instrucciones de 32 bits. Se han completado varias propuestas de RVC no estándar, que no requieren instrucciones de 32 bits y se dice que tienen densidades más altas que el RVC estándar. [54] [55] Otra propuesta se basa en estas y afirma que también utiliza un rango de codificación menor. [56]

Subconjunto incrustado

Un conjunto de instrucciones para las CPU integradas más pequeñas (conjunto E) se reduce de otras maneras: solo se admiten 16 de los 32 registros enteros. [2] : Capítulo 4  Se pueden utilizar todas las extensiones actuales; se está considerando una extensión de punto flotante para utilizar los registros enteros para valores de punto flotante. El conjunto de instrucciones privilegiadas solo admite el modo de máquina, el modo de usuario y los esquemas de memoria que utilizan la reubicación de direcciones de base y límite. [3]

Se ha discutido la posibilidad de crear un perfil de microcontrolador para RISC-V, con el fin de facilitar el desarrollo de sistemas profundamente integrados. El objetivo es ofrecer un soporte más rápido y sencillo en lenguaje C para interrupciones, modos de seguridad simplificados y una interfaz binaria de aplicación POSIX simplificada. [57]

Los corresponsales también han propuesto ISA RV16E de 16 bits más pequeñas y no estándar : varias propuestas serias utilizarían las instrucciones C de 16 bits con registros de 8 × 16 bits. [55] [54] Una broma del Día de los Inocentes propuso una disposición muy práctica: utilizar registros enteros de 16 × 16 bits, con las ISA EIMC estándar (incluidas las instrucciones de 32 bits). La broma era utilizar la conmutación de bancos cuando una CPU de 32 bits sería claramente superior con el espacio de direcciones más grande. [58]

Conjunto de instrucciones privilegiadas

La ISA de RISC-V incluye una especificación de conjunto de instrucciones privilegiadas independiente, que describe principalmente tres niveles de privilegio más un modo de hipervisor ortogonal. A partir de diciembre de 2021 , la versión 1.12 está ratificada por RISC-V International. [3]

La versión 1.12 de la especificación admite varios tipos de sistemas informáticos:

  1. Sistemas que solo tienen modo máquina , quizás para sistemas integrados simples,
  2. Sistemas con modo máquina (para un supervisor simple ) y modo usuario para implementar sistemas integrados relativamente seguros.
  3. Sistemas con modo máquina, modo supervisor (para sistema operativo) y modos de usuario para sistemas operativos típicos.

Estos corresponden aproximadamente a sistemas con hasta cuatro anillos de privilegios y seguridad, como máximo: máquina, hipervisor, supervisor y usuario. También se espera que cada capa tenga una fina capa de software de soporte estandarizado que se comunique con una capa más privilegiada, o hardware. [3]

El ISA también incluye un modo de hipervisor que es ortogonal a los modos de usuario y supervisor. [59] La característica básica es un bit de configuración que permite que el código de nivel de supervisor acceda a los registros del hipervisor o causa una interrupción en los accesos. Este bit permite que el modo de supervisor maneje directamente el hardware que necesita un hipervisor. Esto simplifica la implementación de hipervisores que están alojados en un sistema operativo. Este es un modo popular para ejecutar computadoras a escala de almacén. Para admitir hipervisores no alojados, el bit puede hacer que estos accesos interrumpan a un hipervisor. El diseño también simplifica la anidación de hipervisores, en la que un hipervisor se ejecuta debajo de un hipervisor y, si es necesario, permite que el núcleo use las características del hipervisor dentro de su propio código de núcleo. Como resultado, la forma de hipervisor del ISA admite cinco modos: máquina, supervisor, usuario, supervisor bajo hipervisor y usuario bajo supervisor.

La especificación del conjunto de instrucciones privilegiadas define explícitamente los subprocesos de hardware o harts . Los subprocesos de hardware múltiples son una práctica común en computadoras con más capacidad. Cuando un subproceso se detiene, esperando memoria, otros pueden continuar. Los subprocesos de hardware pueden ayudar a hacer un mejor uso de la gran cantidad de registros y unidades de ejecución en CPU rápidas fuera de servicio. Finalmente, los subprocesos de hardware pueden ser una forma simple y poderosa de manejar interrupciones : no se requiere guardar ni restaurar registros, simplemente ejecutar un subproceso de hardware diferente. Sin embargo, el único subproceso de hardware requerido en una computadora RISC-V es el subproceso cero. [3]

Las interrupciones y las excepciones se manejan juntas. Las excepciones son causadas por la ejecución de instrucciones, incluidas instrucciones ilegales y llamadas al sistema, mientras que las interrupciones son causadas por eventos externos. Las definiciones de registros de control y estado existentes admiten las excepciones de error y memoria de RISC-V, y una pequeña cantidad de interrupciones, generalmente a través de un "interruptor local de núcleo avanzado" (ACLINT). [60] Para sistemas con más interrupciones, la especificación también define un controlador de interrupciones a nivel de plataforma (PLIC) para coordinar una gran cantidad de interrupciones entre múltiples procesadores. Las interrupciones siempre comienzan en el nivel de máquina con privilegios más altos, y los registros de control de cada nivel tienen bits de reenvío explícitos para enrutar las interrupciones al código con menos privilegios. Por ejemplo, el hipervisor no necesita incluir software que se ejecute en cada interrupción para reenviar una interrupción a un sistema operativo. En cambio, en la configuración, puede establecer bits para reenviar la interrupción. [3]

La especificación admite varios sistemas de memoria. El sistema físico solo es adecuado para los sistemas integrados más simples. También hay cuatro sistemas de memoria virtual de estilo UNIX para la memoria almacenada en caché en sistemas de almacenamiento masivo. Los sistemas de memoria virtual admiten MMU con cuatro tamaños, con direcciones de 32, 39, 48 y 57 bits. Todos los sistemas de memoria virtual admiten páginas de 4 KiB, árboles de tablas de páginas de varios niveles y utilizan algoritmos muy similares para recorrer los árboles de tablas de páginas. Todos están diseñados para recorrer tablas de páginas por hardware o software. Para reducir opcionalmente el costo de los recorridos por tablas de páginas, las páginas de gran tamaño pueden ser páginas hoja en niveles superiores del árbol de tablas de páginas de un sistema. SV32 solo se admite en implementaciones de 32 bits, tiene un árbol de tablas de páginas de dos capas y admite superpáginas de 4 MiB. SV39 tiene una tabla de páginas de tres niveles y admite superpáginas de 2 MiB y gigapáginas de 1 GiB. SV48 es necesario para admitir SV39. También tiene una tabla de páginas de 4 niveles y admite superpáginas de 2 MiB, gigapáginas de 1 GiB y terapáginas de 512 GiB. SV57 tiene una tabla de páginas de 5 niveles y admite superpáginas de 2 MiB, gigapáginas de 1 GiB, terapáginas de 512 GiB y petapáginas de 256 TiB. Las superpáginas se alinean en los límites de página para el siguiente tamaño de página más bajo. [3]

Manipulación de bits

Algunas extensiones de manipulación de bits de la ISA fueron ratificadas en noviembre de 2021 (Zba, Zbb, Zbc, Zbs). [47] Las extensiones Zba, Zbb y Zbs son posiblemente extensiones de las instrucciones de enteros I estándar: Zba contiene instrucciones para acelerar el cálculo de las direcciones de los elementos de la matriz en matrices de tipos de datos de tamaño 2, 4 u 8 bytes (sh1add, sh2add, sh3add), y para procesadores de 64 (y 128) bits cuando se indexan con enteros sin signo (add.uw, sh1add.uw, sh2add.uw, sh3add.uw y slli.uw). Las instrucciones Zbb contienen operaciones para contar los bits 0 iniciales y finales o todos los bits 1 en un registro completo y operaciones de 32 palabras (clz, clzw, ctz, ctzw, cpop, cpopw), reversión del orden de bytes (rev8), instrucciones lógicas con negación de la segunda entrada (andn, orn, xnor), extensión de signo y cero (sext.b, sext.h, zext.h) que no se pudieron proporcionar como casos especiales de otras instrucciones (andi, addiw, add.wu), mínimo y máximo de números enteros (con y sin signo), rotación (izquierda y derecha) de bits en un registro y palabras de 32 bits (rori, roriw, ror, rorw, rol, rolw), y una operación "o combinar" byte por byte que permite la detección de un byte cero en un registro completo, útil para manejar funciones de cadenas terminadas en nulo estilo C. La extensión Zbs permite configurar, obtener, borrar y alternar bits individuales en un registro por su índice (bseti, bset, bexti, bext, bclri, bclr, binvi, binv).

La extensión Zbc tiene instrucciones para la "multiplicación sin acarreo", que realiza la multiplicación de polinomios sobre el campo de Galois GF(2) (clmul, clmulh, clmulr). Estas son útiles para criptografía y comprobaciones CRC de la integridad de los datos.

Si se hace bien, un subconjunto de manipulación de bits más especializado puede ayudar a las operaciones criptográficas, gráficas y matemáticas. Otras instrucciones que se han analizado incluyen instrucciones para desplazar en unos, una inversión de bits generalizada, permutaciones aleatorias y de barra cruzada, colocación de campos de bits, extracción y depósito de paquetes de dos palabras, bytes o medias palabras en un registro, instrucciones CRC, operaciones de matriz de bits (solo RV64), mezcla condicional, movimiento condicional, desplazamientos de embudo. Los criterios de inclusión documentados en el borrador fueron el cumplimiento de las filosofías RISC-V y los formatos ISA, mejoras sustanciales en la densidad o velocidad del código (es decir, al menos una reducción de 3 por 1 en las instrucciones) y aplicaciones sustanciales en el mundo real, incluido el soporte de compiladores preexistente. La versión 0.93 de la extensión de manipulación de bits incluye esas instrucciones; [61] algunas de ellas están ahora en la versión 1.0.1 de la extensión de criptografía de instrucciones de fuente escalares y de entropía . [49]

SIMD empaquetado

Las instrucciones SIMD empaquetadas son ampliamente utilizadas por las CPU comerciales para acelerar de forma económica el procesamiento de señales digitales y multimedia . [25] Para sistemas RISC-V simples y de costo reducido, la especificación ISA base propuso utilizar los bits de los registros de punto flotante para realizar aritmética de subpalabras de instrucción única, múltiples datos ( SIMD ) en paralelo.

En 2017, un proveedor publicó una propuesta más detallada en la lista de correo, y esta puede citarse como la versión 0.1. [62] A partir de 2019 , la eficiencia de esta ISA propuesta varía de 2x a 5x una CPU base para una variedad de códecs DSP. [63] La propuesta carecía de formatos de instrucciones y una asignación de licencia a RISC-V International, pero fue revisada por la lista de correo. [62] Algunas partes impopulares de esta propuesta fueron que agregó un código de condición, el primero en un diseño RISC-V, registros adyacentes vinculados (también una novedad) y tiene un contador de bucle que puede ser difícil de implementar en algunas microarquitecturas.

Conjunto de vectores

El conjunto de instrucciones de procesamiento vectorial propuesto puede hacer que el conjunto SIMD empaquetado quede obsoleto. Los diseñadores esperan tener suficiente flexibilidad para que una CPU pueda implementar instrucciones vectoriales en los registros de un procesador estándar. Esto permitiría implementaciones mínimas con un rendimiento similar al de una ISA multimedia, como la mencionada anteriormente. Sin embargo, un verdadero coprocesador vectorial podría ejecutar el mismo código con un rendimiento superior. [64]

A partir del 19 de septiembre de 2021 , la extensión vectorial se encuentra en la versión 1.0. [65] Es un diseño conservador y flexible de un procesador vectorial de precisión mixta de propósito general, adecuado para ejecutar núcleos de cómputo . El código se podría trasladar fácilmente a CPU con diferentes longitudes de vector, idealmente sin recompilación. [64]

Por el contrario, las extensiones SIMD de vector corto son menos convenientes. Se utilizan en x86 , ARM y PA-RISC . En ellas, un cambio en el ancho de palabra obliga a un cambio en el conjunto de instrucciones para expandir los registros vectoriales (en el caso de x86, de registros MMX de 64 bits a extensiones Streaming SIMD (SSE) de 128 bits, a extensiones de vector avanzadas (AVX) de 256 bits y AVX-512 ). El resultado es un conjunto de instrucciones en crecimiento y la necesidad de trasladar el código funcional a las nuevas instrucciones.

En la ISA vectorial RISC-V, en lugar de fijar la longitud del vector en la arquitectura, están disponibles las instrucciones ( vsetvli, vsetivli, y vsetvl) que toman un tamaño solicitado y establecen la longitud del vector al mínimo del límite de hardware y el tamaño solicitado. Por lo tanto, la propuesta RISC-V se parece más a un diseño de vector largo de Cray o a la Extensión de Vector Escalable de ARM. Es decir, cada vector en hasta 32 vectores tiene la misma longitud. [65] : 25 

La aplicación especifica el ancho total del vector que requiere, y el procesador determina la longitud del vector que puede proporcionar con los recursos disponibles en el chip. Esto toma la forma de una instrucción ( vsetcfg) con cuatro operandos inmediatos, que especifican el número de registros vectoriales de cada ancho disponible que se necesitan. El total no debe ser mayor que el límite direccionable de 32, pero puede ser menor si la aplicación no los requiere todos. La longitud del vector está limitada por el almacenamiento disponible en el chip dividido por el número de bytes de almacenamiento necesarios para cada entrada. (También pueden existir límites de hardware adicionales, lo que a su vez puede permitir implementaciones de estilo SIMD). [64]

Fuera de los bucles vectoriales, la aplicación puede poner a cero el número de registros vectoriales solicitados, ahorrándole al sistema operativo el trabajo de preservarlos en los cambios de contexto . [64]

La longitud del vector no sólo es variable arquitectónicamente, sino que también está diseñada para variar en tiempo de ejecución. Para lograr esta flexibilidad, es probable que el conjunto de instrucciones utilice rutas de datos de ancho variable y operaciones de tipo variable utilizando sobrecarga polimórfica. [64] El plan es que esto pueda reducir el tamaño y la complejidad de la ISA y el compilador. [64]

Los procesadores vectoriales experimentales recientes con rutas de datos de ancho variable también muestran aumentos rentables en operaciones por segundo (velocidad), área (menor costo) y vatio (mayor duración de la batería). [66]

A diferencia de una unidad de procesamiento de gráficos moderna típica , no hay planes para proporcionar hardware especial para soportar la predicción de bifurcaciones . En su lugar, se utilizará una predicción basada en compiladores de menor costo. [64] [67]

Sistema de depuración externo

Existe una especificación preliminar para el depurador asistido por hardware de RISC-V . El depurador utilizará un sistema de transporte como Joint Test Action Group ( JTAG ) o Universal Serial Bus ( USB ) para acceder a los registros de depuración. Una interfaz de depuración de hardware estándar puede admitir una interfaz abstracta estandarizada o la alimentación de instrucciones . [68] [69]

A partir de enero de 2017 , la forma exacta de la interfaz abstracta sigue sin definirse, pero las propuestas incluyen un sistema mapeado en memoria con direcciones estandarizadas para los registros de dispositivos de depuración o un registro de comando y un registro de datos accesibles al sistema de comunicación. [68] Los corresponsales afirman que sistemas similares son utilizados por la interfaz de modo de depuración en segundo plano (BDM) de Freescale para algunas CPU, ARM , OpenRISC y LEON de Aeroflex . [68]

En la alimentación de instrucciones , la CPU procesará una excepción de depuración para ejecutar instrucciones individuales escritas en un registro. Esto se puede complementar con un registro de paso de datos y un módulo para acceder directamente a la memoria. La alimentación de instrucciones permite al depurador acceder a la computadora exactamente como lo haría el software. También minimiza los cambios en la CPU y se adapta a muchos tipos de CPU. Se dijo que esto era especialmente apto para RISC-V porque está diseñado explícitamente para muchos tipos de computadoras. El registro de paso de datos permite a un depurador escribir un bucle de movimiento de datos en la RAM y luego ejecutar el bucle para mover datos dentro o fuera de la computadora a una velocidad cercana a la velocidad máxima del canal de datos del sistema de depuración. [68] Los corresponsales dicen que MIPS Technologies MIPS , Intel Quark , Xtensa de Tensilica y la interfaz de modo de depuración en segundo plano (BDM) de las CPU Freescale Power ISA utilizan sistemas similares . [68]

Un proveedor propuso un subsistema de rastreo de hardware para estandarización, donó un diseño conforme e inició una revisión. [70] [71] La propuesta es para un módulo de hardware que puede rastrear la ejecución de código en la mayoría de las CPU RISC-V. Para reducir la tasa de datos y permitir rutas más simples o menos costosas para los datos de rastreo, la propuesta no genera datos de rastreo que se puedan calcular a partir de una imagen binaria del código. Envía solo datos que indican rutas "no inferibles" a través del programa, como qué ramas condicionales se toman. Para reducir las tasas de datos, no se rastrean las ramas que se pueden calcular, como las ramas incondicionales. La interfaz propuesta entre el módulo y la unidad de control es una señal lógica para cada tipo de instrucción no inferible. Las direcciones y otros datos se deben proporcionar en un bus especializado conectado a fuentes de datos apropiadas en una CPU. La estructura de datos enviada a una unidad de rastreo externa es una serie de mensajes cortos con los datos necesarios. Los detalles del canal de datos no se describen intencionalmente en la propuesta, porque es probable que varios tengan sentido.

Implementaciones

La organización RISC-V mantiene una lista de implementaciones de CPU y SoC RISC-V. [72] Debido a las guerras comerciales y posibles sanciones que impedirían a China acceder a ISA patentadas, a partir de 2023 el país planeaba cambiar la mayoría de sus arquitecturas de CPU y MCU a núcleos RISC-V. [73]

En 2023, la Unión Europea tenía previsto proporcionar 270 millones de euros en el marco de un denominado Acuerdo Marco de Asociación (FPA) a una única empresa que fuera capaz y estuviera dispuesta a llevar a cabo un proyecto de desarrollo de CPU RISC-V destinado a supercomputadoras, servidores y centros de datos. [74] El objetivo de la Unión Europea era independizarse de los acontecimientos políticos de otros países y "fortalecer su soberanía digital y establecer estándares, en lugar de seguir los de otros". [75]

Existente

Las implementaciones propietarias existentes incluyen:

En desarrollo

Código abierto

Hardware del usuario final

DeepComputing de Hong Kong anunció el lanzamiento el 13 de abril de 2023 de la "primera computadora portátil del mundo con procesador RISC-V"; la computadora portátil, llamada "ROMA", se entregó a sus primeros clientes en agosto de 2023 [160] y venía preinstalada con el sistema operativo chino openKylin Linux. [161] El modelo básico del dispositivo, disponible en Alibaba , todavía era caro, aproximadamente US$1500 [162] considerando que estaba alimentado por la no muy rápida [163] CPU "XuanTie C910" de Alibaba (DAMO).

Una actualización en junio de 2024 duplicó el número de núcleos a 8 núcleos y aumentó la velocidad del reloj a 2 GHz (desde 1,5 GHz), al tiempo que redujo el precio a 1000 dólares estadounidenses. [164] Una colaboración con Canonical [165] significó que el ROMA II vino preinstalado con la principal distribución internacional de Linux Ubuntu . [166]

Software

Un problema normal para un nuevo conjunto de instrucciones es la falta de diseños de CPU y de software, lo que limita su usabilidad y reduce su adopción. [20] Además de contar ya con una gran cantidad de diseños de hardware de CPU, RISC-V también está respaldado por cadenas de herramientas, sistemas operativos (por ejemplo, Linux ), middleware [ vague ] y software de diseño.

Las herramientas de software RISC-V disponibles incluyen una cadena de herramientas GNU Compiler Collection (GCC) (con GDB , el depurador), una cadena de herramientas LLVM , el simulador OVPsim (y biblioteca de modelos de procesadores rápidos RISC-V), el simulador Spike y un simulador en QEMU (RV32GC/RV64GC). JEP 422: Linux/RISC-V Port ya está integrado en el repositorio principal OpenJDK . Las compilaciones Java 21+ Temurin OpenJDK para RISC-V están disponibles en Adoptium .

Existe soporte para sistemas operativos como el núcleo Linux , FreeBSD , NetBSD y OpenBSD , pero las instrucciones en modo supervisor no estaban estandarizadas antes de la versión 1.11 de la especificación ISA privilegiada, [3] por lo que este soporte es provisional. La adaptación preliminar de FreeBSD a la arquitectura RISC-V se publicó en febrero de 2016 y se incluyó en FreeBSD 11.0. [167] [116]

Los puertos de las distribuciones Linux Debian [168] [169] y Fedora [170] , y un puerto de Haiku [171] se están estabilizando (todos solo admiten RISC-V de 64 bits , sin planes de admitir la versión de 32 bits). En junio de 2024, la empresa de Hong Kong DeepComputing anunció la disponibilidad comercial de la primera computadora portátil RISC-V del mundo que ejecuta el popular sistema operativo Linux Ubuntu en su forma estándar ("listo para usar"). [14] "Como RISC-V se está convirtiendo en una ISA competitiva en múltiples mercados, portar Ubuntu a RISC-V para convertirse en el SO [sistema operativo] de referencia para los primeros usuarios fue una elección natural", declaró el desarrollador de Ubuntu Canonical en junio de 2024. [172]

Existe un puerto de Das U-Boot . [173] La especificación UEFI v2.7 ha definido el enlace RISC-V y los ingenieros de HPE han realizado un puerto TianoCore [174] y se espera que se publique en el canal ascendente. Hay un puerto preliminar del microkernel seL4 . [175] [176] Hex Five lanzó la primera pila de IoT segura para RISC-V con soporte FreeRTOS . [177] También se portó xv6 , una reimplementación moderna de Sexta Edición Unix en ANSI C utilizada con fines pedagógicos en MIT . Pharos RTOS se ha portado a RISC-V de 64 bits [178] (incluida la protección de tiempo y memoria). Consulte también Comparación de sistemas operativos en tiempo real .

Existe un simulador para ejecutar un sistema Linux RISC-V en un navegador web usando JavaScript . [179] [180] [181]

QEMU admite la ejecución (mediante traducción binaria ) de sistemas RISC-V de 32 y 64 bits (por ejemplo, Linux) con muchos dispositivos emulados o virtualizados (serie, paralelo, USB, red, almacenamiento, reloj de tiempo real, watchdog, audio), así como la ejecución de binarios RISC-V de Linux (traduciendo llamadas al sistema al núcleo del host). Admite emulación multinúcleo (SMP). [182]

El simulador Creator es portátil y permite al usuario aprender varios lenguajes ensambladores de diferentes procesadores (Creator tiene ejemplos con una implementación de instrucciones RISC-V y MIPS32). [183] ​​[184] [185] [186] [187]

Se han aplicado varios lenguajes para crear núcleos IP RISC-V, incluido un lenguaje de descripción de hardware basado en Scala , Chisel , [188] que puede reducir los diseños a Verilog para su uso en dispositivos, y el lenguaje de descripción de procesador CodAL que se ha utilizado para describir núcleos de procesador RISC-V y generar HDK ( RTL , testbench y UVM ) y SDK correspondientes. [189] El Grupo de trabajo de cumplimiento internacional RISC-V tiene un repositorio en GitHub para RV32IMC. [190]

Herramientas de desarrollo

Véase también

Notas

  1. ^ Se admiten variantes no estándar que permiten el uso de caracteres grandes y bi-endian; las instrucciones siempre son little-endian. [2] : vi, 9–10 
  2. ^ La designación V (número romano '5') representa a RISC-V como la arquitectura de computadora de conjunto de instrucciones reducidas (RISC) de quinta generación que se desarrolló en la Universidad de California, Berkeley desde 1981. [4]

Referencias

  1. ^ Asanović, Krste ; Patterson, David A. (6 de agosto de 2014). Los conjuntos de instrucciones deberían ser libres: el caso de RISC-V (PDF) . Departamento de Ingeniería Eléctrica y Computacional, Universidad de California, Berkeley. UCB/EECS-2014-146.
  2. ^ abcdefghijklmnopqrstu vwxyz aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc Waterman, Andrew; Asanović, Krste , eds. (diciembre de 2019). "El manual del conjunto de instrucciones RISC-V, volumen I: ISA a nivel de usuario, versión del documento 20191213" (PDF) . Fundación RISC-V . Consultado el 5 de noviembre de 2021 .
  3. ^ abcdefghijkl Waterman, Andrew; Asanović, Krste (3 de diciembre de 2021). "El manual del conjunto de instrucciones RISC-V, volumen II: arquitectura privilegiada, versión del documento 20211203" (PDF) . RISC-V International . Consultado el 5 de noviembre de 2021 .
  4. ^ Urquhart, Roddy (29 de marzo de 2021). "¿Qué significa RISC-V? Una breve historia de la ISA abierta". Sistemas y diseño: opinión . Ingeniería de semiconductores.
  5. ^ "Acerca de RISC-V". RISC-V Internacional.
  6. ^ "RISC-V trasladará su sede a Suiza en medio de preocupaciones por la guerra comercial". EE Times Europe. 28 de noviembre de 2019.
  7. ^ "Preguntas frecuentes (FAQ) – RISC-V International" . Consultado el 20 de agosto de 2024 .
  8. ^ "Linux 5.17 agrega soporte para "la primera plataforma RISC-V utilizable y de bajo costo" | Michael Larabel, Phoronix – RISC-V International". 2022 . Consultado el 20 de agosto de 2024 .
  9. ^ "RISC-V - Wiki de Debian". wiki.debian.org . Consultado el 13 de agosto de 2024 .
  10. ^ "riscv64 es ahora una arquitectura oficial". lists.debian.org . Consultado el 13 de agosto de 2024 .
  11. ^ "RISC-V - Wiki de Debian". wiki.debian.org . Consultado el 13 de agosto de 2024 .
  12. ^ Anton Shilov (20 de marzo de 2024). "Alibaba afirma que lanzará un procesador RISC-V de nivel de servidor este año". Tom's Hardware . Consultado el 19 de agosto de 2024 .
  13. ^ Connatser, Matthew (13 de agosto de 2024). "Akeana presenta diseños de CPU RISC-V con un presupuesto de 100 millones de dólares y anhela una pugna de brazos". The Register . Consultado el 19 de agosto de 2024 .
  14. ^ ab Connatser, Matthew. "La primera computadora portátil RISC-V del mundo con Ubuntu precargado ofrece inteligencia artificial y un chip octa-core". The Register . Consultado el 19 de agosto de 2024 .
  15. ^ ab Waterman, Andrew; Asanović, Krste (7 de mayo de 2017). "The RISC-V Instruction Set Manual, Volume I: Base User-Level ISA version 2.2" (PDF) . RISC-V International . Consultado el 5 de noviembre de 2021 .
  16. ^ Newsome, Tim; Wachs, Megan (22 de marzo de 2019). «RISC-V External Debug Support Version 0.13.2 d5029366d59e8563c08b6b9435f82573b603e48e» (PDF) . RISC-V International . Consultado el 7 de noviembre de 2021 .
  17. ^ Demerjian, Chuck (7 de agosto de 2013). "Una mirada detallada a cómo ARM otorga licencias para chips: Parte 1". SemiAccurate.
  18. ^ Demerjian, Chuck (8 de agosto de 2013). "Cómo ARM licencia su propiedad intelectual para producción: Parte 2". SemiAccurate.
  19. ^ "Wave Computing cierra su iniciativa MIPS Open con efecto inmediato y sin previo aviso". 15 de noviembre de 2019.
  20. ^ abcdef Asanović, Krste . "Los conjuntos de instrucciones deberían ser gratuitos" (PDF) . UC Berkeley Technical Reports . Regentes de la Universidad de California . Consultado el 15 de noviembre de 2016 .
  21. ^ "Generador de núcleo de cohete". RISC-V . Regentes de la Universidad de California. Archivado desde el original el 6 de octubre de 2014 . Consultado el 1 de octubre de 2014 .
  22. ^ ab Celio, Christopher; Love, Eric. "riscv-sodor: microarquitecturas educativas para risc-v isa". GitHub . Regentes de la Universidad de California . Consultado el 25 de octubre de 2019 .
  23. ^ ab "Programa del procesador SHAKTI". Instituto Indio de Tecnología de Madrás . Consultado el 3 de septiembre de 2019 .
  24. ^ Celio, Christopher. «CS 152 Laboratory Exercise 3» (PDF) . UC Berkeley . Regentes de la Universidad de California. Archivado desde el original (PDF) el 12 de febrero de 2015. Consultado el 12 de febrero de 2015 .
  25. ^ abcde Waterman, Andrew; Asanović, Krste (31 de mayo de 2016). "The RISC-V Instruction Set Manual, Volume I: Base User-Level ISA version 2.1" (PDF) . Universidad de California, Berkeley. EECS-2016-118 . Consultado el 5 de noviembre de 2021 .
  26. ^ ab Patterson, David A. ; Ditzel, David R. (octubre de 1980). "El caso de la computadora con conjunto de instrucciones reducido". ACM SIGARCH Computer Architecture News . 8 (6): 25. doi :10.1145/641914.641917. S2CID  12034303.
  27. ^ "Núcleo compatible con ARM Amber". OpenCores . Consultado el 26 de agosto de 2014 .
  28. ^ "ARM4U". OpenCores . Consultado el 26 de agosto de 2014 .
  29. ^ "Arquitecturas de CPU: la documentación del núcleo de Linux". docs.kernel.org . Consultado el 20 de agosto de 2024 .
  30. ^ Aleksandar Kostovic (12 de julio de 2021). «Libre-SOC lanza el primer chip OpenPOWER que no es de IBM en una década». Tom's Hardware . Consultado el 20 de agosto de 2024 .
  31. ^ Nguyen, Phuc-Vinh; Tran, Thi-Thu-Trang; Diep, Phuoc-Loc; Le, Duc-Hung (septiembre de 2018). "Implementación de un ASIC de bajo consumo de un procesador OpenSPARC T1 multinúcleo en un proceso CMOS de 90 nm". 12.º Simposio internacional IEEE de 2018 sobre sistemas multinúcleo/de muchos núcleos integrados en chip (MCSoC) . IEEE. págs. 95–100. doi :10.1109/MCSoC2018.2018.00027. ISBN . 978-1-5386-6689-0.
  32. ^ Chen, Tony; Patterson, David (24 de enero de 2016). Geneología RISC-V (informe técnico). Universidad de California en Berkeley. UCB/EECS-2016-6.
  33. ^ Samples, Alan Dain; Klein, Mike; Foley, Pete (1985). Arquitectura SOAR (informe técnico). Universidad de California, Berkeley. UCB/CSD-85-226.
  34. ^ Hill, Mark Donald; et al. (Susan J. Eggers, James Richard Larus, George S. Taylor, Glenn D. Adams, Bidyut Kumar Bose, Garth A. Gibson, Paul Mark Hansen, John Keller, Shing I. Kong, Corinna Grace Lee, Daebum Lee, JM Pendleton, Scott Allen Ritchie, David A. Wood, Benjamin G. Zorn, Paul N. Hilfinger, DA Hodges, Randy H. Katz, John K. Ousterhout y David A. Patterson ) (diciembre de 1985). SPUR: Una estación de trabajo multiprocesador VLSI (informe técnico). Universidad de California, Berkeley. UCB/CSD-86-273.
  35. ^ "Colaboradores". riscv.org . Regentes de la Universidad de California. Archivado desde el original el 7 de septiembre de 2018 . Consultado el 25 de agosto de 2014 .
  36. ^ Asanović, Krste . "The RISC-V Instruction Set Manual, Volume I: Base User-Level ISA" (PDF) . UC Berkeley Technical Reports . Regents of the University of California . Consultado el 13 de mayo de 2011 .
  37. ^ Hruska, Joel (21 de agosto de 2014). "RISC vuelve a triunfar: la nueva arquitectura RISC-V espera luchar contra ARM y x86 al ser totalmente de código abierto". ExtremeTech .
  38. ^ "Historia de RISC-V" . Consultado el 28 de enero de 2023 .
  39. ^ "Un nuevo modelo para los microprocesadores desafía a los gigantes de la industria". The Economist . 3 de octubre de 2019. ISSN  0013-0613 . Consultado el 10 de noviembre de 2019 .
  40. ^ "Conferencia de automatización del diseño". dac.com . Consultado el 6 de febrero de 2021 .
  41. ^ "Miembros". RISC-V International . Consultado el 1 de agosto de 2023 .
  42. ^ "Un grupo de tecnología de chips con sede en Estados Unidos se muda a Suiza por temor a restricciones comerciales". Reuters . 26 de noviembre de 2019 . Consultado el 26 de noviembre de 2019 .
  43. ^ Cheung, Sunny (15 de diciembre de 2023). "Examinando la gran estrategia de China para RISC-V". China Brief . Jamestown Foundation . Consultado el 18 de diciembre de 2023 .
  44. ^ "Historia de RISC-V - RISC-V International". RISC-V International . Consultado el 14 de mayo de 2020 .
  45. ^ "Directrices de marca – RISC-V International" . Consultado el 23 de junio de 2024 .
  46. ^ "The Linley Group Announces Winners of Annual Analysts' Choice Awards" (Nota de prensa). The Linley Group. 12 de enero de 2017. Consultado el 21 de enero de 2018 .
  47. ^ ab "Extensiones ISA para manipulación de bits" (PDF) . RISC-V International. Noviembre de 2021.
  48. ^ "Extensión vectorial". RISC-V International. Noviembre de 2021.
  49. ^ ab "RISC-V Cryptography Extensions Volume I Scalar & Entropy Source Instructions" (PDF) . GitHub . 18 de febrero de 2022 . Consultado el 28 de enero de 2023 .
  50. ^ "Perfiles RISC-V". Discusión . 2022.
  51. ^ Subcomité horizontal de la plataforma RISC-V (diciembre de 2021). "Especificación de la plataforma RISC-V" (PDF) . Versión 0.3-borrador.
  52. ^ abcdefghi Waterman, Andrew (13 de mayo de 2011). Mejorar la eficiencia energética y reducir el tamaño del código con RISC-V Compressed. UC Berkeley: Regentes de la Universidad de California. p. 32. Consultado el 25 de agosto de 2014 .
  53. ^ Waterman, Andrew; et al. "El manual del conjunto de instrucciones comprimidas RISC-V versión 1.9 (borrador)" (PDF) . RISC-V . Consultado el 18 de julio de 2016 .
  54. ^ ab Brussee, Rogier. "Un RVC de 16 bits completo". Grupos de Google . Fundación RISC-V . Consultado el 18 de julio de 2019 .
  55. ^ ab Brussee, Rogier. "Propuesta: Xcondensed, [a] ... Compact ... 16 bit standalone G-ISA". Servidor de correo RISC-V ISA . Grupos de Google . Consultado el 10 de noviembre de 2016 .
  56. ^ Phung, Xan. "Xcondensed mejorado". Grupos de Google . Fundación RISC-V . Consultado el 18 de julio de 2019 .
  57. ^ Ionescu, Liviu. "El perfil del microcontrolador RISC-V". GitHub . Consultado el 5 de abril de 2018 .
  58. ^ Barros, Cesar (1 de abril de 2018). "Propuesta: RV16E". RISC-V ISA Developers (Lista de correo) . Consultado el 2 de abril de 2018 .
  59. ^ Bonzini, Paolo; Waterman, Andrew. "Propuesta de virtualización sin modo H". RISC-V ISA Developers (lista de correo) . Consultado el 24 de febrero de 2017 .
  60. ^ "riscv-aclint/riscv-aclint.adoc at main · riscv/riscv-aclint". GitHub . Consultado el 2 de enero de 2024 .
  61. ^ Wolf, Claire, ed. (10 de enero de 2021). «Documento de extensión RISC-V Bitmanip versión 0.93» (PDF) . GitHub . Fundación RISC-V . Consultado el 9 de marzo de 2021 .
  62. ^ ab "Resumen de instrucciones para una propuesta ISA "P"". Grupos de Google . ANDES Technologies . Consultado el 13 de enero de 2020 .
  63. ^ Su, Charlie (30 de junio de 2018). "Soluciones RISC-V integrales para AIoT" (PDF) . Contenido de RISC-V . Fundación RISC-V . Consultado el 28 de enero de 2023 .
  64. ^ abcdefg Schmidt, Colin; Ou, Albert; Lee, Yunsup; Asanović, Krste . "Propuesta de extensión vectorial RISC-V" (PDF) . RISC-V . Regentes de la Universidad de California . Consultado el 14 de marzo de 2016 .
  65. ^ ab "Lanzamiento de Vector Extension 1.0, congelado para revisión pública · riscv/Riscv-v-spec". GitHub .
  66. ^ Ou, Albert; Nguyen, Quan; Lee, Yunsup; Asanović, Krste . "Un caso para los MVP: procesadores vectoriales de precisión mixta" (PDF) . UC Berkeley EECS . Regentes de la Universidad de California. Archivado desde el original (PDF) el 15 de marzo de 2016. Consultado el 14 de marzo de 2016 .
  67. ^ Lee, Yunsup; Grover, Vinod; Krashinsky, Ronny; Stephenson, Mark; Keckler, Stephen W.; Asanović, Krste . "Explorando el espacio de diseño de la gestión de divergencias SPMD en arquitecturas de datos paralelos" (PDF) . Sitio EECS de Berkeley . Regentes de la Universidad de California. Archivado desde el original (PDF) el 15 de marzo de 2016. Consultado el 14 de marzo de 2016 .
  68. ^ abcde Bradbury, Alex; Wallentowitz, Stefan. "RISC-V Run Control Debug". Documentos de Google . Fundación RISC-V . Consultado el 20 de enero de 2017 .
  69. ^ Newsome, Tim. "RISC-V Debug Group > poll results". Grupos de Google, RISC-V Debug Group . Fundación RISC-V . Consultado el 20 de enero de 2017 .
  70. ^ McGooganus. «riscv-trace-spec». GitHub . Consultado el 13 de enero de 2020 .
  71. ^ Dahad, Nitin (7 de diciembre de 2019). "UltraSoC enfrenta el desafío de compatibilidad con RISC-V donando un codificador de trazas". EE Times . Aspencore . Consultado el 13 de enero de 2020 .
  72. ^ "Descripción general de los núcleos y SoC de RISC-V". RISC-V. 25 de septiembre de 2019. Consultado el 5 de octubre de 2019 .
  73. ^ "China apuesta por un futuro RISC-V". 8 de enero de 2024. Consultado el 7 de mayo de 2024 .
  74. ^ "270 millones de euros para CPU y tecnología: EuroHPC para RISC-V-Technik". heise en línea (en alemán). 21 de diciembre de 2022 . Consultado el 13 de agosto de 2024 .
  75. ^ "Una Europa adaptada a la era digital - Comisión Europea". commission.europa.eu . 19 de febrero de 2020 . Consultado el 13 de agosto de 2024 .
  76. ^ "D1" . Consultado el 30 de septiembre de 2021 .
  77. ^ abc «Miembros de RISC-V International». RISC-V International . Consultado el 22 de enero de 2021 .
  78. ^ "En el CES2022, Bouffalo muestra su solución Matter llave en mano". www.eetimes.com . 17 de enero de 2022 . Consultado el 20 de enero de 2022 .
  79. ^ "CloudBEAR" . Consultado el 16 de octubre de 2018 .
  80. ^ riscv/riscv-cores-list, RISC-V, 6 de febrero de 2021 , consultado el 9 de febrero de 2021
  81. ^ "Codasip anuncia núcleos de procesador RISC-V que ofrecen capacidades multinúcleo y SIMD". www.newelectronics.co.uk . Archivado desde el original el 23 de diciembre de 2020 . Consultado el 9 de febrero de 2021 .
  82. ^ "Codasip se une a la Fundación RISC-V y anuncia la disponibilidad de la propiedad intelectual del procesador Codix compatible con RISC-V". Diseño y reutilización . Consultado el 9 de septiembre de 2024 .
  83. ^ "3.6.2 Coprocesador de consumo ultrabajo". Hoja de datos de la familia ESP32-S2 V1.1 (PDF) . Espressif Systems. 2020 . Consultado el 9 de junio de 2020 .
  84. ^ "Hoja de datos de la familia ESP32-C3 V0.4" (PDF) . Espressif Systems. 2020 . Consultado el 27 de diciembre de 2020 .
    • "Presentación del ESP32-C3". Espressif (Nota de prensa). 27 de noviembre de 2020.
  85. ^ Manners, David (8 de junio de 2021). "Fraunhofer otorga licencias para núcleos RISC tolerantes a fallos para aplicaciones críticas para la seguridad". Electronics Weekly . Consultado el 13 de abril de 2022 .
  86. ^ "GigaDevice presenta la serie GD32V con núcleo RISC-V en un nuevo microcontrolador de propósito general de 32 bits". www.gigadevice.com . 23 de agosto de 2019. Archivado desde el original el 29 de agosto de 2019 . Consultado el 29 de agosto de 2019 .
  87. ^ "Placa de desarrollo Sipeed Longan Nano - RISC-V GD32VF103CBT6" www.seeedstudio.com . Consultado el 29 de agosto de 2019 .
  88. ^ Kleidermacher, Dave; Seed, Jesse; Barbello, Brandon (27 de octubre de 2021). «Pixel 6: estableciendo un nuevo estándar para la seguridad móvil». Blog de seguridad de Google . Archivado desde el original el 27 de octubre de 2021. Consultado el 12 de febrero de 2023 .
  89. ^ "GreenWaves GAP8 es un procesador IoT RISC-V de bajo consumo optimizado para aplicaciones de inteligencia artificial". CNXSoft: Embedded Systems News . 27 de febrero de 2018. Consultado el 4 de marzo de 2018 .
  90. ^ Yoshida, Junko (26 de febrero de 2018). "AI Comes to Sensing Devices". EE Times . Consultado el 10 de julio de 2018 .
  91. ^ "GreenWaves Technologies anuncia la disponibilidad del kit de desarrollo de software GAP8 y la placa de desarrollo GAPuino" (Comunicado de prensa). 22 de mayo de 2018.
  92. ^ "CPU IMG RTXM-2200". Imagination . Consultado el 30 de septiembre de 2023 .
  93. ^ Leibson, Steven (9 de enero de 2023). "MIPS lanza su primer núcleo de procesador RISC-V: es un gran avance". EEJournal .
  94. ^ Robinson, Dan (11 de mayo de 2022). "MIPS revela los primeros chips RISC-V que llegarán en el cuarto trimestre de 2022". The Register .
  95. ^ Shilov, Anton (9 de diciembre de 2020). "Seagate desarrolla sus propios núcleos RISC-V para controladores de almacenamiento". Tom's Hardware .
  96. ^ "HiFive1". SiFive . Archivado desde el original el 26 de febrero de 2017 . Consultado el 10 de julio de 2018 .
  97. ^ SiFive. «Hi-Five1: kit de desarrollo compatible con Arduino de código abierto». Crowd Supply . Consultado el 2 de diciembre de 2016 .
  98. ^ "CPU SoC FU540". SiFive . Archivado desde el original el 5 de octubre de 2018 . Consultado el 24 de octubre de 2018 .
  99. ^ Horwitz, Josh (23 de marzo de 2023). "El gigante chino de las búsquedas Baidu invierte en la startup de tecnología de chips RISC-V StarFive". Reuters .
  100. ^ Sharwood, Simon (27 de marzo de 2023). "El gigante web chino Baidu respalda RISC-V para el centro de datos". The Register .
  101. ^ "Syntacore" . Consultado el 11 de diciembre de 2018 .
  102. ^ ab "SCR1 es un núcleo MCU RISC-V de código abierto de alta calidad en Verilog". GitHub . Syntacore . Consultado el 13 de enero de 2020 .
  103. ^ "Actas del taller RISC-V". 11 de diciembre de 2016. Consultado el 28 de enero de 2023 .
  104. ^ "Cabeza de chip WinChip (WCH)".
  105. ^ "CH32V003". WCH-IC . Consultado el 10 de julio de 2023 .
  106. ^ "the-10-cent-risc-v-processor-ch32v003". EEvblog . Consultado el 10 de julio de 2023 .
  107. ^ Manners, David (23 de noviembre de 2016). "Codasip y UltraSoC se combinan en RISC-V". Electronics Weekly . Metropolis International Group, Ltd . Consultado el 23 de noviembre de 2016 .
  108. ^ Desikan, Shubashree (6 de agosto de 2018). "IIT-Madras potencia un chip desi" . The Hindu . ISSN  0971-751X . Consultado el 25 de septiembre de 2020 .
  109. ^ ab "Conozca el chip microprocesador Atmanirbhar 'Moushik' de la India, diseñado para dispositivos IoT". WION . 24 de septiembre de 2020 . Consultado el 25 de septiembre de 2020 .
  110. ^ Dobberstein, Laura. "La CPU RISC-V casera de la India debuta en una placa de desarrollo barata". The Register . Consultado el 6 de marzo de 2024 .
  111. ^ Ashenden, Peter (9 de noviembre de 2016). "Re: [isa-dev] RISC V ISA para sistemas embebidos". Desarrolladores de RISC-V ISA (lista de correo) . Consultado el 10 de noviembre de 2016. En ASTC (www.astc-design.com), tenemos una implementación de RV32EC como un núcleo IP sintetizable destinado a pequeñas aplicaciones embebidas, como sensores inteligentes e IoT.
  112. ^ "C-DAC anuncia Tech Conclave 2019". The Times of India . Archivado desde el original el 17 de mayo de 2019. Consultado el 12 de abril de 2019 .
  113. ^ Sharwood, Simon (19 de agosto de 2020). «India selecciona RISC-V para concurso de autosuficiencia de semiconductores: use estos núcleos de cosecha propia para construir un kit». The Register . Consultado el 9 de julio de 2021 .
  114. ^ "MICROPROCESADORES VEGA". Procesador Vega - CDAC . 9 de julio de 2021. Archivado desde el original el 9 de julio de 2021 . Consultado el 9 de julio de 2021 .
  115. ^ "Procesador NOEL-V". Cobham Gaisler . Consultado el 14 de enero de 2020 .
  116. ^ ab "FreeBSD Foundation: Se ha confirmado el puerto inicial de la arquitectura RISC-V de FreeBSD". 4 de febrero de 2016.
  117. ^ "Esperanto sale del modo oculto y apunta a la IA con un monstruo RISC-V de 7 nm y 4096 núcleos". wikichip.org . Enero de 2018 . Consultado el 2 de enero de 2018 .
  118. ^ "Solución aceleradora de inteligencia artificial RISC-V ET-SoC-1 1092 en Esperanto en Hot Chips 33". 24 de agosto de 2021.
  119. ^ "Proyecto PULPino en GitHub". GitHub . Consultado el 2 de febrero de 2018 .
  120. ^ "Plataforma PULP". Plataforma PULP . Consultado el 2 de febrero de 2018 .
  121. ^ "Accelerator Stream". Iniciativa Europea de Procesadores (EPI) . Consultado el 22 de febrero de 2020 .
  122. ^ Redmond, Calista (28 de enero de 2023). "Cómo la Iniciativa Europea de Procesadores está aprovechando RISC-V para el futuro de la supercomputación". Noticias internacionales de RISC-V . RISC-V International.
  123. ^ Halfacree, Gareth (10 de junio de 2021). "Los expertos en RISC-V presentan un plan para llevar la arquitectura a la informática de alto rendimiento". The Register . Consultado el 9 de julio de 2021 .
  124. ^ "Proyecto de procesador de código abierto del IIT Madras". Rapid IO . IIT Madras. 26 de agosto de 2014. Archivado desde el original el 14 de septiembre de 2014 . Consultado el 13 de septiembre de 2014 .
  125. ^ "El IIT de Madrás desarrolla y pone en marcha el microprocesador MOUSHIK para dispositivos IoT". IIT Madrás . 24 de septiembre de 2020 . Consultado el 9 de julio de 2021 .
  126. ^ "sitio web lowRISC" . Consultado el 10 de mayo de 2015 .
  127. ^ Xie, Joe (julio de 2016). Historia de evaluación de NVIDIA RISC V. Cuarto taller de RISC-V . Youtube. Archivado desde el original el 13 de noviembre de 2021.
  128. ^ "RV64X: una GPU gratuita y de código abierto para RISC-V". EETimes . 27 de enero de 2021 . Consultado el 9 de febrero de 2021 .
  129. ^ Frumusanu, Andrei (30 de octubre de 2019). "SiFive anuncia el primer núcleo de CPU RISC-V OoO: el procesador IP de la serie U8". Anandtech .
  130. ^ Gwennap, Linley (13 de diciembre de 2021). "Ventana desarrolla chiplet RISC-V". Informe sobre microprocesadores .
  131. ^ Dahad, Nitin (6 de septiembre de 2021). "La startup de chiplets RISC-V recauda 38 millones de dólares y apunta a la computación en centros de datos". EE Times .
  132. ^ "研究布局". damo.alibaba.com . Consultado el 13 de agosto de 2024 .
  133. ^ "Tecnología para el futuro". damo.alibaba.com . Consultado el 13 de agosto de 2024 .
  134. ^ "La empresa china Alibaba está fabricando un procesador RISC-V de 16 núcleos y 2,5 GHz". www.techspot.com . 28 de julio de 2019 . Consultado el 30 de julio de 2019 .
  135. ^ "Alibaba publica cuatro núcleos RISC-V: XuanTie E902, E906, C906 y C910". 20 de octubre de 2021 . Consultado el 20 de octubre de 2021 .
  136. ^ "Examinando la gran estrategia de China para RISC-V". jamestown.org . Consultado el 13 de agosto de 2024 .
  137. ^ Anton Shilov (20 de marzo de 2024). "Alibaba afirma que lanzará un procesador RISC-V de nivel de servidor este año". Tom's Hardware . Consultado el 14 de septiembre de 2024 .
  138. ^ Asanović, Krste ; et al. "rocket-chip". GitHub . RISC-V International . Consultado el 11 de noviembre de 2016 .
  139. ^ Celio, Christopher. "riscv-boom". GitHub . Regentes de la Universidad de California . Consultado el 29 de marzo de 2020 .
  140. ^ Repositorio XiangShan en Github
  141. ^ Procesador RISC-V de 64 bits de código abierto XiangShan para competir con Arm Cortex-A76 - CNX Software
  142. ^ Halfacree, Gareth (6 de julio de 2021). "Los diseñadores de chips chinos esperan derrocar al Cortex-A76 de Arm con el diseño XiangShan RISC-V". The Register . Consultado el 13 de agosto de 2024 .
  143. ^ "Offengelegter RISC-V-Chip aus China soll an ARM Cortex-A76 heranreichen". c't Magazin (en alemán). 30 de junio de 2021 . Consultado el 13 de agosto de 2024 .
  144. ^ ab Brown, Eric (8 de diciembre de 2021). "Se estrenan dos núcleos RISC-V de 64 bits: StarFive Dubhe y CAS Nanhu". LinuxGizmos.com . Consultado el 13 de agosto de 2024 .
  145. ^ "Examinando la gran estrategia de China para RISC-V". jamestown.org . Consultado el 13 de agosto de 2024 .
  146. ^ Wolf, Claire. "PicoRV32: una CPU RISC-V optimizada en tamaño". GitHub . Consultado el 27 de febrero de 2020 .
  147. ^ "MIPT-MIPS: simulador de pre-silicio con precisión de ciclo de CPU RISC-V y MIPS". GitHub .
  148. ^ "Funciones de llamada al sistema MIPS disponibles en MARS". courses.missouristate.edu . Consultado el 28 de mayo de 2023 .
  149. ^ Kindgren, Olof. "SERV - La CPU serial RISC-V". GitHub . Consultado el 25 de septiembre de 2023 .
  150. ^ ab Kindgren, Olof (29 de diciembre de 2022). "SERV: 32-bit is the New 8-bit" (Video, 2:38) . YouTube . Fundación RISC-V . Consultado el 25 de septiembre de 2023 .
  151. ^ Halfacree, Gareth (14 de junio de 2022). "CoreScore Benchmark alcanza un nuevo récord con 10 000 núcleos RISC-V en un FPGA". fossi-foundation.org . FOSSi Foundation . Consultado el 25 de septiembre de 2023 .
  152. ^ Traber, Andreas; et al. "PULP: Parallel Ultra Low Power". ETH Zurich, Universidad de Bolonia . Consultado el 5 de agosto de 2016 .
  153. ^ Shilov, Anton. "Western Digital lanza dos nuevos núcleos SweRV RISC-V para microcontroladores". www.anandtech.com . Consultado el 9 de febrero de 2021 .
  154. ^ Shilov, Anton. "Western Digital revela el núcleo SweRV RISC-V y la iniciativa de coherencia de caché sobre Ethernet". www.anandtech.com . Consultado el 23 de mayo de 2019 .
  155. ^ "Western Digital lanza el código fuente principal de SweRV RISC-V". AB Open . 28 de enero de 2019. Archivado desde el original el 21 de mayo de 2019.
  156. ^ Cores-SweRV en GitHub
  157. ^ Nolting, Stephan (2022). "neorv32". GitHub . doi :10.5281/zenodo.7030070 . Consultado el 9 de septiembre de 2021 .
  158. ^ Wren, Luke (8 de agosto de 2024), Wren6991/Hazard3 , consultado el 8 de agosto de 2024
  159. ^ Upton, Eben (8 de agosto de 2024). «Raspberry Pi Pico 2, nuestra nueva placa de microcontrolador de 5 dólares, ya está a la venta» . Consultado el 8 de agosto de 2024 .
  160. ^ "Se entrega oficialmente la primera computadora portátil RISC-V del mundo: 8 GB de RAM y sistema operativo doméstico preinstalado". Gizmochina . 17 de agosto de 2023 . Consultado el 13 de septiembre de 2024 .
  161. ^ liubing (13 de abril de 2023). "¡ROMA se lanzó oficialmente!". DeepComputing . Consultado el 13 de septiembre de 2024 .
  162. ^ Ian Evenden (4 de octubre de 2022). «La primera computadora portátil del mundo con procesador RISC-V ya está disponible». Tom's Hardware . Consultado el 14 de septiembre de 2024 .
  163. ^ en línea, heise (13 de octubre de 2021). "Barra de almacenamiento Alibabas RISC-V-Prozessor XuanTie C910". c't Magazin (en alemán) . Consultado el 14 de septiembre de 2024 .
  164. ^ Jowi Morales (13 de junio de 2024). "La primera computadora portátil RISC-V del mundo recibe una gran actualización: DeepComputing duplicó el número de núcleos, aumentó los relojes a 2 GHz y agregó capacidades de inteligencia artificial". Tom's Hardware . Consultado el 14 de septiembre de 2024 .
  165. ^ canonical.com https://canonical.com/blog/worlds-first-risc-v-laptop-gets-a-massive-upgrade-and-equips-with-ubuntu . Consultado el 14 de septiembre de 2024 . {{cite web}}: Falta o está vacío |title=( ayuda )
  166. ^ anisha. "La primera computadora portátil RISC-V del mundo recibe una actualización MASIVA y está equipada con Ubuntu – RISC-V International" . Consultado el 14 de septiembre de 2024 .
  167. ^ "riscv - Wiki de FreeBSD". wiki.freebsd.org .
  168. ^ Montezelo, Manuel. "Portación de Debian GNU/Linux para RISC-V 64". Grupos de Google . Consultado el 19 de julio de 2018 .
  169. ^ "RISC-V - Wiki de Debian". wiki.debian.org . Consultado el 13 de agosto de 2024 .
  170. ^ "Arquitecturas/RISC-V". Wiki de Fedora . Red Hat . Consultado el 26 de septiembre de 2016 .
  171. ^ "Arrancando nuestras imágenes RISC-V". Proyecto Haiku . 7 de noviembre de 2021 . Consultado el 4 de marzo de 2023 .
  172. ^ "La primera computadora portátil RISC-V del mundo recibe una actualización masiva y se equipa con Ubuntu". canonical.com . 13 de junio de 2024 . Consultado el 19 de agosto de 2024 .
  173. ^ Begari, Padmarao. "El puerto U-Boot en RISC-V de 32 bits está disponible". Grupos de Google . Microsemi . Consultado el 15 de febrero de 2017 .
  174. ^ RiscVEdk2 en GitHub
  175. ^ Almatary, Hesham. "RISC-V, seL4". Documentación de seL4 . Organización de Investigación Científica e Industrial de la Commonwealth (CSIRO) . Consultado el 13 de julio de 2018 .
  176. ^ Almatary, Hesham. "heshamelmatary". GitHub . Consultado el 13 de julio de 2018 .
  177. ^ "MultiZone Secure IoT Stack, la primera pila segura de IoT para RISC-V". Hex Five Security . Hex Five Security, Inc. 22 de febrero de 2019 . Consultado el 3 de marzo de 2019 .
  178. ^ "Pharos". SourceForge . Consultado el 1 de abril de 2020 .
  179. ^ "ANGEL es un simulador de Javascript RISC-V ISA (RV64) que ejecuta riscv-linux con BusyBox". RISCV.org . Archivado desde el original el 11 de noviembre de 2018. Consultado el 17 de enero de 2019 .
  180. ^ Lee, Yunsup (5 de marzo de 2014). "¡Inicie RISC-V Linux en su navegador web!". RISC-V International . Consultado el 4 de septiembre de 2020 .
  181. ^ "ANGEL – RISC-V". riscv.org.s3-website-us-west-1.amazonaws.com . Archivado desde el original el 1 de diciembre de 2020 . Consultado el 4 de septiembre de 2020 .
  182. ^ "Documentación/Plataformas/RISCV". Wiki de QEMU . Consultado el 7 de mayo de 2020 .
  183. ^ Camarmas-Alonso, Diego; García-Carballeira, Félix; Del-Pozo-Punal, Elías; Mateos, Alejandro Calderón (29 de mayo de 2024). "CREADOR: Un entorno de desarrollo educativo integrado para la programación RISC-V". Acceso IEEE : 1–17. doi : 10.1109/ACCESS.2024.3406935 . ISSN  2169-3536.
  184. ^ Camarmas-Alonso, Diego; García-Carballeira, Félix; Del-Pozo-Puñal, Elías; Mateos, Alejandro Calderón (23 de julio de 2021). CREATOR: Simulador didáctico y genérico para la programación en ensamblador [ CREATOR: Simulador didáctico y genérico para programación en ensamblador ]. XXXI Jornadas de Paralelismo (JP20/21) (en español). Málaga. doi :10.5281/zenodo.5130302.
  185. ^ Camarmas-Alonso, Diego; Garcia-Carballeira, Felix; Del-Pozo-Punal, Elias; Mateos, Alejandro Calderon (octubre de 2021). Un nuevo simulador genérico para la enseñanza de la programación en ensamblador . 2021 XLVII Congreso Latinoamericano de Computación (CLEI) (en español). Cartago, Costa Rica: IEEE (publicado el 21 de diciembre de 2021). pp. 1–9. doi :10.1109/CLEI53233.2021.9640144. ISBN 978-1-6654-9503-5. S2CID  245387555 . Consultado el 2 de agosto de 2022 .
  186. ^ Ejemplo de CREATOR Web con RISC-V: https://creatorsim.github.io/creator/?example_set=default_rv&example=e12
  187. ^ Código fuente de CREATOR en GitHub: https://github.com/creatorsim/creator
  188. ^ "Chisel: construcción de hardware en un lenguaje integrado de Scala". UC Berkeley . Regentes de la Universidad de California . Consultado el 12 de febrero de 2015 .
  189. ^ "Codasip Studio". Codasip . Consultado el 19 de febrero de 2021 .
  190. ^ riscv/riscv-compliance, RISC-V, 12 de febrero de 2021 , consultado el 19 de febrero de 2021
  191. ^ "Depurador RISC-V". www.lauterbach.com Depurador TRACE32 para RISC-V .
  192. ^ "Lauterbach y SiFive brindan soporte TRACE32 para núcleos RISC-V de alto rendimiento". www.sifive.com .
  193. ^ "TRACE32 admite el seguimiento RISC-V de SiFive". www.lauterbach.com . Archivado desde el original el 2 de junio de 2022 . Consultado el 6 de marzo de 2021 .
  194. ^ "SEGGER agrega soporte para Coreplex IP de SiFive a su sonda de depuración J-Link líder en la industria" . Consultado el 19 de septiembre de 2017 .
  195. ^ "PR: SEGGER Embedded Studio soporta la arquitectura RISC-V" . Consultado el 23 de noviembre de 2017 .
  196. ^ "PR: SEGGER presenta RTOS, stacks, middleware para RISC-V" . Consultado el 8 de diciembre de 2017 .
  197. ^ Dahad, Nitin (23 de junio de 2020). "Siemens adquiere UltraSoC para la suite de productos SoC Lifecycle". EE Times . Consultado el 12 de julio de 2023 .

Lectura adicional

Enlaces externos