stringtranslate.com

RISC-V

RISC-V [b] (pronunciado "riesgo cinco" [2] : 1  ) es una arquitectura de conjunto de instrucciones (ISA) estándar abierta basada en principios establecidos de computadora con conjunto de instrucciones reducido (RISC). A diferencia de la mayoría de los otros diseños ISA, RISC-V se proporciona bajo licencias de código abierto libres de regalías . Muchas empresas ofrecen o han anunciado hardware RISC-V; Hay disponibles sistemas operativos de código abierto compatibles con RISC-V y el conjunto de instrucciones es compatible con varias cadenas de herramientas de software populares .

Como arquitectura RISC, RISC-V ISA es una arquitectura de almacenamiento de carga . Sus instrucciones de punto flotante utilizan punto flotante IEEE 754 . Las características notables de RISC-V ISA incluyen: ubicaciones de los campos 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, [ dudoso ] y una ubicación fija para el bit de signo de valores inmediatos para acelerar la extensión de señales . [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 alineadas naturalmente de 32 bits , y 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  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 "no congelado" intencionalmente, porque a partir de 2023 , hay muy poco práctico experiencia con sistemas de memoria tan grandes. [2] : 41 

A diferencia de otros diseños académicos que normalmente se optimizan sólo 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 [5] 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 congeló como versión 20191213. [2] Hay una especificación de depuración externa disponible como borrador, versión 0.13.2. [6]

El proyecto comenzó en 2010 en la Universidad de California, Berkeley. Actualmente hay miembros en más de 70 países que contribuyen y colaboran para definir las especificaciones abiertas de RISC-V. RISC-V International, la organización sin fines de lucro que gestiona RISC-V, tiene actualmente su sede en Suiza . [7] [8]

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 dicho equipo, los proveedores comerciales de propiedad intelectual (IP) del procesador, como Arm Ltd. y MIPS Technologies , cobran regalías por el uso de sus diseños, patentes y derechos de autor . [9] [10] [11] 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 los motivos 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 desplegable en cualquier diseño de hardware o software sin regalías. [2] : 1  [12] Además, se explican los fundamentos que justifican cada decisión de diseño del proyecto, al menos en términos amplios. Los autores de RISC-V son académicos que tienen una experiencia sustancial en diseño de computadoras, y RISC-V ISA 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 estos proyectos. [2] : 1  [12]

Para construir una comunidad grande y continua de usuarios y así acumular diseños y software, los diseñadores de RISC-V ISA admiten intencionalmente una amplia variedad de casos de uso práctico: implementaciones compactas, de rendimiento y de bajo consumo en el mundo real [2] : 1– 2, 153-154  [13] sin sobrearquitectura para una microarquitectura determinada . [2] : 1  [14] [15] [16] Los requisitos de una gran base de contribuyentes es parte de la razón por la cual RISC-V fue diseñado para abordar muchos usos posibles.

La afirmación principal de los diseñadores es que el conjunto de instrucciones es la interfaz clave en una computadora, ya que está situada en la interfaz entre el hardware y el software. Si un buen conjunto de instrucciones estuviera abierto y disponible para que todos lo usaran, entonces podría reducir drásticamente el costo del software al permitir una reutilización mucho mayor. También debería desencadenar una mayor competencia entre los proveedores de hardware, quienes luego podrán dedicar más recursos al diseño y menos al soporte de software. [12]

Los diseñadores sostienen que los nuevos principios se están volviendo raros 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 hizo porque sus empresas patrocinadoras no tuvieron éxito financiero, no porque los conjuntos de instrucciones fueran técnicamente deficientes. Por lo tanto, un conjunto de instrucciones abiertas bien diseñado utilizando principios bien establecidos debería atraer el apoyo a largo plazo de muchos proveedores. [12]

RISC-V también fomenta el uso académico. La simplicidad del subconjunto de números enteros permite ejercicios básicos para los estudiantes y es un ISA lo suficientemente simple como para permitir que el software controle las máquinas de investigación. El ISA de longitud variable proporciona espacio para extensiones de conjuntos de instrucciones tanto para ejercicios como para investigaciones de los estudiantes, [2] : 7  y el conjunto de instrucciones privilegiadas separadas permite la investigación sobre el soporte del sistema operativo sin rediseñar los compiladores. [3] El paradigma abierto de propiedad intelectual de RISC-V permite publicar, reutilizar y modificar diseños derivados. [17]

Historia

El término RISC data aproximadamente de 1980. [18] Antes de eso, había cierto conocimiento (ver John Cocke ) de que las computadoras más simples pueden ser efectivas, pero los principios de diseño no se describieron ampliamente. 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, del cual David Patterson fue coautor, y luego participó en el RISC- Originación V. DLX estaba destinado a 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 todavía son compatibles con GNU Compiler Collection (GCC), un popular compilador de software libre . Existen tres núcleos de código abierto para esta ISA, pero nunca se fabricaron. [19] [20] OpenRISC es un ISA de código abierto basado en DLX, con diseños RISC asociados, y es totalmente compatible con implementaciones de GCC y Linux , aunque también tiene pocas implementaciones comerciales.

Krste Asanović de la Universidad de California, Berkeley , tenía un requisito 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 a los usuarios académicos e industriales. [12] David Patterson de Berkeley se unió a la colaboración ya que fue el creador de Berkeley RISC , [18] y RISC-V es la quinta generación homónima de su larga serie de proyectos cooperativos de investigación basados ​​en RISC en la Universidad de California. Berkeley ( RISC-I y RISC-II publicados en 1981 por Patterson, quien se refiere [21] a la arquitectura SOAR [22] de 1984 como "RISC-III" y a la arquitectura SPUR [23] de 1988 como "RISC-IV" ). En esta etapa, los estudiantes proporcionaron software inicial, simulaciones y diseños de CPU. [24]

El primer Raven1 presentó ST28nm en el Berkeley Wireless Research Center (BWRC) en junio de 2012

Los autores de RISC-V y su institución obtuvieron originalmente los documentos ISA [25] 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, [26] 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 su mejora por parte de contribuyentes 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. [27]

Fundación RISC-V y RISC-V Internacional

Los usuarios comerciales necesitan que una ISA sea estable antes de poder utilizarla en un producto que pueda 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. [28] Los autores y propietarios originales han cedido sus derechos a la fundación. [ cita necesaria ] 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 . [29] [ 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. [30]

En noviembre de 2019, la Fundación RISC-V anunció que se trasladaría a Suiza , citando preocupaciones sobre las regulaciones comerciales estadounidenses. [31] [32] En marzo de 2020, la organización pasó a denominarse RISC-V International, una asociación empresarial suiza sin fines de lucro. [33]

A partir de 2019 , RISC-V International publica libremente los documentos que definen RISC-V y permite el uso ilimitado de ISA para el diseño de software y hardware. Sin embargo, sólo los miembros de RISC-V International pueden votar para aprobar los cambios, y sólo las organizaciones miembros utilizan el logotipo de compatibilidad de marca registrada . [34] [ verificación fallida ]

Premios

Diseño

Base y extensiones ISA

RISC-V tiene un diseño modular, que consta de piezas base alternativas, con extensiones opcionales adicionales. La base ISA y sus extensiones se desarrollan en un esfuerzo colectivo entre la industria, la comunidad investigadora 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 lógica (es decir, de números enteros) y accesorios. 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 pueden 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 admitir hipervisores y virtualización . [3]

Junto con la extensión supervisora, 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á integrada) y la extensión C, define todas las instrucciones necesarias para soportar cómodamente un sistema operativo de propósito general . [2] : 129, 154 

  1. ^ Se espera que las piezas congeladas tengan sus características finales establecidas y reciban solo aclaraciones antes de ser ratificadas.

Para controlar las combinaciones de funciones que pueden implementarse, se define una nomenclatura para especificarlas en el Capítulo 27 de la actual Especificación ISA sin privilegios ratificada. 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 cartas que especifican las extensiones implementadas, en el orden de la tabla anterior. Cada letra puede ir seguida de una letra mayor, opcionalmente seguida de una "p" y un número de opción menor. El valor predeterminado es 0 si falta un número de versión menor y 1,0 si falta todo el número de versión. Por lo tanto, RV64IMAFD puede escribirse como RV64I1p0M1p0A1p0F1p0D1p0 o más simplemente como RV64I1M1A1F1D1 . Se pueden utilizar guiones bajos entre extensiones para facilitar la lectura, por ejemplo RV32I2_M2_A2 .

Un diagrama del conjunto de instrucciones modular de la variante RV32IMAC, que muestra todas las instrucciones en el entero base ISA y las extensiones para multiplicación y división de enteros, instrucciones atómicas e instrucciones comprimidas.
El conjunto de instrucciones modular de la variante RV32IMAC . Esta es una CPU de 32 bits con ISA entero 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, 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 lo tanto, tenemos la abreviatura "G".

Una pequeña computadora 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 prevé que las extensiones se nombren 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 búsqueda de instrucciones. Zifencei2 y Zifencei2p0 nombran la versión 2.0 del mismo. La primera letra que sigue a la "Z" por convención indica la categoría de extensión alfabética más estrechamente relacionada, IMAFDQLCBJTPVN . Así, 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 estar separadas por guiones bajos, agrupadas por categoría y luego alfabéticamente dentro de cada categoría. Por ejemplo, Zicsr_Zifencei_Zam .

Las extensiones específicas del nivel de privilegio de supervisor se nombran de la misma manera usando "S" como prefijo. Las extensiones específicas del nivel de hipervisor se denominan utilizando "H" como prefijo. Las extensiones a nivel de máquina tienen el prefijo "Zxm". Las extensiones de conjunto de instrucciones a 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. Siguen la convención de nomenclatura "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 debatiendo 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 de 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 recursos en la construcción de un ecosistema de software rico. [39]

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 diversos términos utilizados en esta especificación de plataforma. La política de la plataforma también proporciona los detalles necesarios con respecto al alcance, la cobertura, la denominación, el control de versiones, la estructura, el ciclo de vida y las afirmaciones de compatibilidad para la especificación de la plataforma. [40]

Registrar conjuntos

RISC-V tiene 32 registros enteros (o 16 en la variante integrada), [2] : 13, 33  y cuando se implementa la extensión de punto flotante, 32 registros de punto flotante adicionales . [2] : 63  Excepto por las instrucciones de acceso a la memoria, las instrucciones solo dirigen los 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 simplifica el conjunto de instrucciones.

Existen registros de control y estado, pero los programas en modo de usuario sólo pueden acceder a aquellos utilizados 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. [17]

Acceso a la memoria

Como muchos diseños RISC, RISC-V es una arquitectura de carga y almacenamiento : las instrucciones solo dirigen registros, con instrucciones de carga y almacenamiento que 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 el origen (para una tienda).

El desplazamiento se agrega a un registro base para obtener la dirección. [2] : 24  Formar la dirección como un registro base más un 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, las instrucciones individuales pueden acceder a las variables locales de una subrutina en la pila. Asimismo, 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 aborda como bytes de 8 bits, con las instrucciones en orden little-endian , [2] : 9–10  y con los datos en el orden de bytes definido por la interfaz del entorno de ejecución en el que se ejecuta el código. [2] : Se puede acceder a 3, 9–10, 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 con la dirección más baja de la instrucción. Se definieron variantes big-endian y bi-endian para admitir bases de código heredadas que asumen big-endian. [2] : 9–10  El ISA privilegiado 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, distintos de la recuperación de instrucciones, son little-endian o big -endian; esos bits pueden ser de sólo lectura, en cuyo caso el endianismo de la implementación está cableado o se puede escribir. [3] : 23–24 

Una interfaz del entorno de ejecución puede permitir que las direcciones de memoria a las que se accede no estén alineadas con el ancho de su 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 

Como muchos conjuntos de instrucciones RISC (y algunos conjuntos de instrucciones de computadora con conjuntos de instrucciones complejos (CISC), como x86 e IBM System/360 y sus sucesores a través de 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 gestiona sistemas de memoria que se comparten entre CPU o subprocesos garantizando 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 está simplificado: 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 asignadas en memoria y en memoria. Por ejemplo, puede separar las operaciones de lectura y escritura de la memoria, sin afectar las operaciones de E/S. O, si un sistema puede operar dispositivos de E/S en paralelo con la memoria, fenceno los obliga a esperarse unos a otros. Una CPU con un subproceso puede decodificarse fencecomo nop.

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

Inmediatos

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

Este método se amplía para permitir código independiente de la posición agregando una instrucción auipcque genera 20 bits de dirección superiores agregando 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 a menudo se puede utilizar tal cual con los desplazamientos de 12 bits de las cargas y almacenes. Si es necesario, addipuede configurar los 12 bits inferiores de un registro. En ISA de 64 y 128 bits, luiextienda auipccon signo el resultado para obtener la dirección más grande. [2] : 37 

Algunas CPU rápidas pueden interpretar combinaciones de instrucciones como instrucciones fusionadas únicas . luio auipcson buenos candidatos para fusionarse con jalr, addicargas o tiendas.

Llamadas, saltos y bifurcaciones de subrutinas.

La llamada a subrutina de RISC-V jal(salto y enlace) coloca su dirección de remitente en un registro. Esto es más rápido en muchos diseños de computadoras, porque ahorra 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 agrega a la PC para generar una dirección relativa a una instrucción de 32 bits. Si el resultado no está en una dirección de 32 bits (es decir, 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 registro de enlace jalr. jalres similar a jal, pero obtiene su dirección de destino agregando un desplazamiento de 12 bits a un registro base. (Por el contrario, jalagrega un desplazamiento mayor de 20 bits a la PC).

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

RISC-V recicla jaly jalrobtiene saltos incondicionales relativos a la PC de 20 bits y saltos incondicionales de 12 bits basados ​​en registros. Los saltos simplemente hacen que el enlace registre 0 para que no se guarde 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 está configurado para que sea el registro de enlace guardado por jalo jalr. jalrEl desplazamiento de es cero y el registro de vinculación es cero, por lo que no hay desplazamiento y no se guarda ninguna dirección de retorno.

Como muchos diseños RISC, en una llamada de subrutina, un compilador RISC-V debe usar instrucciones individuales para guardar registros en la pila al principio y luego restaurarlos desde la pila al salir. RISC-V no tiene instrucciones para guardar múltiples registros ni restaurar múltiples registros. Se pensaba que esto hacía que la CPU fuera demasiado compleja y posiblemente lenta. [41] 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. [42]

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 hacían que las CPU rápidas fueran 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 predicación (la ejecución condicional de instrucciones). Los diseñadores afirman que los diseños de CPU muy rápidos y desordenados realizan predicaciones 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 bifurcaciones , lo que puede evitar la mayoría de los bloqueos asociados con las bifurcaciones 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. [17] [ 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 rama de comparación con solo seis instrucciones, invirtiendo el orden de los operandos en el ensamblador . Por ejemplo, la bifurcación si es mayor que se puede realizar mediante menor que con un orden inverso de operandos. [2] : 20–23, Sección 2.5 

Las ramas de comparación tienen un rango de doce bits con signo y saltan en relación con la 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 que se tome o no la bifurcación. [2] : 20–23, Sección 2.5  RISC-V omite una ranura de retardo de rama porque complica las CPU multiciclo, las CPU superescalares y las canalizaciones largas. Los predictores de sucursales dinámicas han tenido éxito lo suficientemente bien como para reducir la necesidad de sucursales retrasadas. [17]

En el primer encuentro con una rama, las CPU RISC-V deben asumir que se tomará una rama relativa negativa (es decir, el bit de signo del desplazamiento es "1"). [2] : 20–23, Sección 2.5  Esto supone que una rama hacia atrás es un bucle y proporciona una dirección predeterminada para que las CPU con canalización simple puedan llenar su canal de instrucciones. Aparte de esto, RISC-V no requiere predicción de rama , pero las implementaciones centrales pueden agregarla. RV32I reserva un espacio de instrucción "HINT" que actualmente no contiene ninguna sugerencia sobre las ramas; [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. Estos 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 enteros RISC-V carecen del conteo de ceros iniciales y de las operaciones de campo de bits que normalmente se usan para acelerar el punto flotante del software en un procesador de enteros puros. Sin embargo, aunque nominalmente están en la extensión de manipulación de bits, las extensiones Zbb, Zba y Zbs ratificadas contienen más instrucciones de números enteros, incluida una instrucción de conteo a la izquierda del cero.

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 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 operaciones de coma 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 están separados de los registros de números enteros. Las instrucciones de coma flotante de doble precisión (conjunto D ) generalmente suponen que los registros de coma flotante son de 64 bits (es decir, de doble ancho) y que el subconjunto F está coordinado con el conjunto D. También se define un ISA ( Q ) de punto flotante de 128 bits de precisión cuádruple . [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, incluido el desbordamiento , [2] : 17–20  subdesbordamiento, subnormal y división por cero. [2] : 44–45  En cambio, tanto la aritmética de números 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 se puede descubrir mediante una rama después de la división. [2] : 44–45  Los bits de estado pueden probarse mediante 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 coherencia de memoria estándar de RISC-V es la coherencia de versiones . Es decir, las cargas y los almacenes generalmente pueden reordenarse, pero algunas cargas pueden designarse como operaciones de adquisición que deben preceder a los accesos posteriores a la memoria, y algunas tiendas pueden designarse como operaciones de liberación que deben seguir a los accesos anteriores a la memoria. [2] : 83–94 

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

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

El segundo grupo de instrucciones atómicas realiza secuencias de lectura, modificación y escritura : una carga (que opcionalmente es una carga-adquisición) en 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 lanzamiento en tienda). 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: intercambio (usar el valor del registro fuente directamente); agregar; bit a bit y, o, y exclusivo-o; y mínimo y máximo firmados y sin firmar. [2] : Capítulo 8 

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

IBM System/370 y sus sucesores, incluidos z/Architecture y x86 , implementan una instrucción de comparación e intercambio ( cas), que prueba y actualiza condicionalmente una ubicación en la memoria: si la ubicación contiene un valor antiguo esperado, caslo 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 para casrecuperar el valor anterior. El problema clásico es que si un hilo lee (carga) un valor A , calcula un nuevo valor C y luego usa ( cas) 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 generar resultados incorrectos. La solución más común emplea una instrucción de doble anchocas para actualizar tanto el puntero como un contador adyacente; desafortunadamente, dicha 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 

La alternativa lr/ sces más eficiente. Por lo general, requiere solo una carga de memoria y es deseable minimizar las operaciones de memoria lentas. También es exacto: controla todos los accesos a la celda de memoria, en lugar de limitarse a garantizar un patrón de bits. Sin embargo, a diferencia de cas, puede permitir livelock , en el que dos o más subprocesos provocan repetidamente que fallen las instrucciones de cada uno. RISC-V garantiza el progreso hacia adelante (sin bloqueo en vivo) si el código sigue reglas sobre el tiempo y la secuencia de instrucciones: 1) Debe usar solo el subconjunto I. 2) Para evitar errores repetitivos de caché, el código (incluido el bucle de reintento) no debe ocupar más de 16 instrucciones consecutivas. 3) No debe incluir ningún sistema ni instrucciones de vallado, ni ramas tomadas hacia atrás entre el lry sc. 4) La rama hacia atrás al bucle de reintento debe realizarse en la secuencia original. [2] : 48–49 

La especificación ofrece un ejemplo de cómo utilizar las instrucciones atómicas de lectura, modificación y 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 lo convierte en una implementación particularmente simple, 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  [41]

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 está reservado para un conjunto de instrucciones comprimido de longitud variable opcional (pero recomendado) , RVC, que incluye instrucciones de 16 bits. Como en ARM Thumb y MIPS16 , las instrucciones comprimidas son simplemente codificaciones alternativas para un subconjunto de instrucciones más grandes. A diferencia de los conjuntos comprimidos ARM o MIPS, el espacio se reservó desde el principio, por lo que no existe un modo de funcionamiento independiente. Las instrucciones estándar y comprimidas se pueden mezclar libremente. [2] : 97  [41] (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. [41] El código del prototipo era un 20% más pequeño que una PC x86 y un código comprimido MIPS , y un 2% más grande que el código ARM Thumb-2 . [41] También redujo sustancialmente tanto la memoria caché necesaria como el uso de energía estimado del sistema de memoria. [41]

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

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 cambio, el compilador generó instrucciones convencionales que acceden a la pila. El ensamblador prototipo RVC a menudo los convertía en formas comprimidas que tenían la mitad de tamaño. Sin embargo, esto aún requirió 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 un caché de código y, por lo tanto, se ejecutarían rápidamente, aunque probablemente no tan rápido como una instrucción de guardado múltiple. [41]

El RVC estándar requiere el uso ocasional de instrucciones de 32 bits. Varias propuestas RVC no estándar están completas, no requieren instrucciones de 32 bits y se dice que tienen densidades más altas que las RVC estándar. [43] [44] Otra propuesta se basa en estos y afirma utilizar también un menor rango de codificación. [45]

Subconjunto incrustado

Un conjunto de instrucciones para las CPU integradas más pequeñas (conjunto E) se reduce de otras maneras: sólo 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 registros enteros para valores de punto flotante. El conjunto de instrucciones privilegiadas solo admite el modo máquina, el modo usuario y esquemas de memoria que utilizan la reubicación de direcciones base y vinculada. [3]

Se ha debatido un perfil de microcontrolador para RISC-V, para facilitar el desarrollo de sistemas profundamente integrados . Se centra en un soporte de lenguaje C más rápido y sencillo para interrupciones, modos de seguridad simplificados y una interfaz binaria de aplicación POSIX simplificada . [46]

Los corresponsales también han propuesto ISA RV16E de 16 bits, no estándar, más pequeños : varias propuestas serias utilizarían instrucciones C de 16 bits con registros de 8 × 16 bits. [44] [43] Una broma de los Inocentes propuso un arreglo muy práctico: utilizar registros enteros de 16 × 16 bits, con los ISA EIMC estándar ( incluidas instrucciones de 32 bits). La CPU de bits sería claramente superior con un espacio de direcciones más grande. [47]

Conjunto de instrucciones privilegiado

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

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

  1. Sistemas que sólo 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 capa delgada de software de soporte estandarizado que se comunique con una capa o hardware más privilegiado. [3]

ISA también incluye un modo de hipervisor que es ortogonal a los modos de usuario y supervisor. [48] ​​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 provoca una interrupción en los accesos. Este bit permite que el modo supervisor maneje directamente el hardware que necesita un hipervisor. Esto simplifica la implementación de hipervisores 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 provocar que estos accesos interrumpan a un hipervisor. El diseño también simplifica el anidamiento de hipervisores, en el que un hipervisor se ejecuta bajo un hipervisor y, si es necesario, permite que el kernel use funciones de hipervisor dentro de su propio código de kernel. Como resultado, la forma de hipervisor de 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 subprocesos de hardware o harts . Múltiples subprocesos de hardware son una práctica común en computadoras con mayor capacidad. Cuando un hilo se detiene, esperando memoria, otros a menudo 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 y desordenadas. Finalmente, los subprocesos de hardware pueden ser una forma simple y poderosa de manejar las interrupciones : no es necesario 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 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 registro de estado y control existentes admiten 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). [49] 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 mayores privilegios, 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, durante la configuración, puede configurar bits para reenviar la interrupción. [3]

La especificación admite varios sistemas de memoria. Solo físico es adecuado para los sistemas integrados más simples . También hay cuatro sistemas de memoria virtual estilo UNIX para 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 desplazarse por tablas de páginas de hardware o software. Para reducir opcionalmente el costo de los recorridos por la tabla de páginas, las páginas de gran tamaño pueden ser páginas hoja en niveles superiores del árbol de la tabla de páginas de un sistema. SV32 solo se admite en implementaciones de 32 bits, tiene un árbol de tabla 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. Se requiere SV48 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 petapaginas de 256 TiB. Las superpáginas están alineadas en los límites de la página para el siguiente tamaño de página más bajo. [3]

Manipulación de bits

Algunas extensiones ISA de manipulación de bits fueron ratificadas en noviembre de 2021 (Zba, Zbb, Zbc, Zbs). [36] Las extensiones Zba, Zbb y Zbs son posiblemente extensiones de las instrucciones estándar I entero: 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 0 bits iniciales, finales o todos los 1 bits en un total y operaciones de 32 palabras (clz, clzw, ctz, ctzw, cpop, cpopw), inversión del orden de los bytes (rev8), instrucciones lógicas con negación del segunda entrada (andn,orn, xnor), signo y extensión cero (sext.b, sext.h, zext.h) que no se pudieron proporcionar como casos especiales de otras instrucciones (andi, addiw, add.wu), min y máximo de 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 de bytes "o combinar" que permite 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). Son útiles para criptografía y comprobaciones CRC de la integridad de los datos.

Bien hecho, un subconjunto de manipulación de bits más especializado puede ayudar en las operaciones criptográficas, gráficas y matemáticas. Otras instrucciones que se han discutido incluyen instrucciones para cambiar en unos, inversión de bits generalizada, permutaciones aleatorias y de barras transversales, ubicación de campos de bits, extraer y depositar paquetes de dos palabras, bytes o medias palabras en un registro, instrucciones CRC, operaciones de matriz de bits. (solo RV64), combinación condicional, movimiento condicional, cambios de embudo. Los criterios de inclusión documentados en el borrador cumplían con 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, incluidas soporte de compilador preexistente. La versión 0.93 de la extensión de manipulación de bits incluye esas instrucciones; [50] algunos de ellos se encuentran ahora en la versión 1.0.1 de la extensión de criptografía de instrucciones Scalar and Entropy Source . [38]

SIMD empaquetado

Las CPU comerciales utilizan ampliamente las instrucciones SIMD empaquetadas para acelerar de forma económica el procesamiento de señales digitales y multimedia . [17] Para sistemas RISC-V simples y de costo reducido, la especificación básica de ISA proponía utilizar los bits de los registros de punto flotante para realizar aritmética de subpalabras de datos múltiples y una sola instrucción en paralelo ( SIMD ).

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

Conjunto de vectores

El conjunto de instrucciones de procesamiento de vectores 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 se indicó anteriormente. Sin embargo, un verdadero coprocesador vectorial podría ejecutar el mismo código con mayor rendimiento. [53]

A partir del 19 de septiembre de 2021 , la extensión vectorial tiene la versión 1.0. [54] Es un diseño conservador y flexible de un procesador vectorial de precisión mixta de uso general , adecuado para ejecutar núcleos informáticos . El código se trasladaría fácilmente a CPU con diferentes longitudes de vectores, idealmente sin recompilar. [53]

Por el contrario, las extensiones SIMD de vector corto son menos convenientes. Estos se utilizan en x86 , ARM y PA-RISC . En estos, un cambio en el ancho de palabra fuerza un cambio en el conjunto de instrucciones para expandir los registros vectoriales (en el caso de x86, de registros MMX de 64 bits a Streaming SIMD Extensions (SSE) de 128 bits, a Advanced de 256 bits. Extensiones vectoriales (AVX) y AVX-512 ). El resultado es un conjunto de instrucciones cada vez mayor y la necesidad de trasladar el código de trabajo a las nuevas instrucciones.

En el ISA vectorial RISC-V, en lugar de fijar la longitud del vector en la arquitectura, hay instrucciones disponibles ( vsetvli, vsetivliy 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. Entonces, la propuesta RISC-V se parece más al diseño de vector largo de Cray o a la extensión vectorial escalable de ARM. Es decir, cada vector en hasta 32 vectores tiene la misma longitud. [54] : 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 necesarios. El total no debe exceder el límite direccionable de 32, pero puede ser menor si la solicitud no los requiere todos. La longitud del vector está limitada por el almacenamiento disponible en el chip dividido por la cantidad 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). [53]

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

La longitud del vector no sólo es variable desde el punto de vista arquitectónico, 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 mediante sobrecarga polimórfica. [53] El plan es que estos puedan reducir el tamaño y la complejidad de la ISA y el compilador. [53]

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 vatios (mayor duración de la batería). [55]

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 en rama . En su lugar, se utilizará una predicción basada en compiladores de menor costo. [53] [56]

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 alimentación de instrucciones . [57] [58]

A partir de enero de 2017 , la forma exacta de la interfaz abstracta permanece sin definir, 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 accesible al sistema de comunicación. [57] Los corresponsales afirman que la interfaz de modo de depuración en segundo plano (BDM) de Freescale utiliza sistemas similares para algunas CPU, ARM , OpenRISC y LEON de Aeroflex . [57]

En la alimentación de instrucciones , la CPU procesará una excepción de depuración para ejecutar instrucciones individuales escritas en un registro. Este puede complementarse con un registro de paso de datos y un módulo para acceder directamente a la memoria. La alimentación de instrucciones permite que el depurador acceda 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 es especialmente adecuado para RISC-V porque está diseñado explícitamente para muchos tipos de computadoras. El registro de paso de datos permite que un depurador escriba un bucle de movimiento de datos en la RAM y luego ejecute 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. [57] 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 . [57]

Un proveedor propuso un subsistema de rastreo de hardware para estandarización, donó un diseño conforme e inició una revisión. [59] [60] 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 velocidad de datos y permitir rutas más simples o menos costosas para los datos de seguimiento, la propuesta no genera datos de seguimiento que puedan calcularse a partir de una imagen binaria del código. Sólo envía datos que indican rutas "inferibles" a través del programa, como qué ramas condicionales se toman. Para reducir las velocidades de datos, no se rastrean las ramas calculables, 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 ininferible. Las direcciones y otros datos deben proporcionarse 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 de ellos tengan sentido.

Implementaciones

La organización RISC-V mantiene una lista de implementaciones de CPU y SoC de RISC-V. [61]

Existente

Las implementaciones propietarias existentes incluyen:

En desarrollo

Fuente abierta

Existen muchos diseños de CPU RISC-V de código abierto, que incluyen:

Software

Un problema normal para un nuevo conjunto de instrucciones es la falta de software y diseños de CPU; ambos problemas limitan su usabilidad y reducen su adopción. [12] RISC-V tiene una gran cantidad de diseños de CPU. El software RISC-V incluye cadenas de herramientas, sistemas operativos, middleware [ vago ] 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 procesador rápido RISC-V), el simulador Spike y un simulador en QEMU (RV32GC/RV64GC). JEP 422: El puerto Linux/RISC-V ya está integrado en el repositorio OpenJDK principal .

Existe soporte del sistema operativo para el kernel de 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 actualizó en febrero de 2016 y se envió en FreeBSD 11.0. [134] [100] Los puertos de las distribuciones de Linux Debian [135] y Fedora [136] , y un puerto de Haiku , [137] se están estabilizando (todos solo admiten RISC-V de 64 bits, sin planes para admitir 32- versión de bits). Existe un puerto de Das U-Boot . [138] UEFI Spec v2.7 ha definido el enlace RISC-V y los ingenieros de HPE han realizado un puerto TianoCore [139] y se espera que se actualice. Hay un puerto preliminar del microkernel seL4 . [140] [141] Hex Five lanzó la primera pila segura de IoT para RISC-V con soporte FreeRTOS . [142] También se portó xv6 , una reimplementación moderna de la sexta edición de Unix en ANSI C utilizada con fines pedagógicos en el MIT . Pharos RTOS ha sido portado a RISC-V de 64 bits [143] (incluida protección de tiempo y memoria). Véase 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 . [144] [145] [146]

QEMU también 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 en tiempo real, vigilancia, audio). como ejecutar binarios RISC-V de Linux (traducir llamadas al sistema al kernel del host). Admite emulación multinúcleo (SMP). [147]

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). [148] [149] [150] [151]

El simulador educativo extensible WepSIM implementa un subconjunto (microprogramado) de instrucciones RISC-V (RV32I+M) y permite la ejecución de subrutinas en ensamblador. [152] [153]

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

Herramientas de desarrollo

Ver también

Notas

  1. ^ Big y bi-endianidad admitidos mediante variantes no estándar; Las instrucciones son siempre little-endian. [2] : vi, 9-10 
  2. ^ La designación V (número romano '5') representa RISC-V como la arquitectura de computadora con conjunto de instrucciones reducido (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 gratuitos: el caso de RISC-V (PDF) . Departamento EECS, 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 como en au av aw ax ay az ba bb bc Waterman, Andrew; Asanović, Krste , eds. (Diciembre de 2019). "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, Andrés; Asanović, Krste (3 de diciembre de 2021). "Manual del conjunto de instrucciones RISC-V Volumen II: Documento de arquitectura privilegiada versión 20211203" (PDF) . RISC-V Internacional . 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. ^ ab Waterman, Andrés; Asanović, Krste (7 de mayo de 2017). "Manual del conjunto de instrucciones RISC-V, Volumen I: ISA básico a nivel de usuario versión 2.2" (PDF) . RISC-V Internacional . Consultado el 5 de noviembre de 2021 .
  6. ^ Nuevo, Tim; Wachs, Megan (22 de marzo de 2019). "Compatibilidad con depuración externa de RISC-V versión 0.13.2 d5029366d59e8563c08b6b9435f82573b603e48e" (PDF) . RISC-V Internacional . Consultado el 7 de noviembre de 2021 .
  7. ^ "Acerca de RISC-V, RISC-V International es el hogar global sin fines de lucro de la arquitectura de conjunto de instrucciones (ISA) RISC-V de estándar abierto". RISC-V Internacional.
  8. ^ "RISC-V trasladará su sede a Suiza en medio de preocupaciones por la guerra comercial". EE Times Europa. 28 de noviembre de 2019.
  9. ^ Demerjian, Chuck (7 de agosto de 2013). "Una mirada detenida a cómo ARM otorga licencias de chips: Parte 1". Semipreciso.
  10. ^ Demerjian, Chuck (8 de agosto de 2013). "Cómo ARM otorga licencias de su propiedad intelectual para producción: parte 2". Semipreciso.
  11. ^ "Wave Computing cierra su iniciativa abierta MIPS con efecto inmediato, advertencia cero". 15 de noviembre de 2019.
  12. ^ abcdef Asanović, Krste . "Los conjuntos de instrucciones deberían ser gratuitos" (PDF) . Informes técnicos de UC Berkeley . Regentes de la Universidad de California . Consultado el 15 de noviembre de 2016 .
  13. ^ "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 .
  14. ^ ab Celio, Christopher; Con cariño, Eric. "riscv-sodor: microarquitecturas educativas para risc-v isa". GitHub . Regentes de la Universidad de California . Consultado el 25 de octubre de 2019 .
  15. ^ ab "Programa de procesador SHAKTI". Instituto Indio de Tecnología de Madrás . Consultado el 3 de septiembre de 2019 .
  16. ^ Celio, Cristóbal. «Ejercicio de laboratorio 3 CS 152» (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 .
  17. ^ abcde Waterman, Andrés; Asanović, Krste (31 de mayo de 2016). "Manual del conjunto de instrucciones RISC-V, Volumen I: ISA básico a nivel de usuario versión 2.1" (PDF) . Universidad de California, Berkeley. EECS-2016-118 . Consultado el 5 de noviembre de 2021 .
  18. ^ ab Patterson, David A .; Ditzel, David R. (octubre de 1980). "El caso de la computadora con conjunto de instrucciones reducido". Noticias de arquitectura informática de ACM SIGARCH . 8 (6): 25. doi :10.1145/641914.641917. S2CID  12034303.
  19. ^ "Núcleo compatible con Amber ARM". OpenCores . Consultado el 26 de agosto de 2014 .
  20. ^ "ARM4U". OpenCores . Consultado el 26 de agosto de 2014 .
  21. ^ Chen, Tony; David A. Patterson (24 de enero de 2016). Geneología RISC-V (Informe técnico). Universidad de California en Berkeley. UCB/EECS-2016-6.
  22. ^ Muestras, Alan Dain; Klein, Mike; Foley, Pete (1985). Arquitectura SOAR (Reporte técnico). Universidad de California, Berkeley. UCB/CSD-85-226.
  23. ^ Colina, 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.
  24. ^ "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 .
  25. ^ Asanović, Krste . "Manual del conjunto de instrucciones RISC-V, Volumen I: ISA básico a nivel de usuario" (PDF) . Informes técnicos de UC Berkeley . Regentes de la Universidad de California . Consultado el 13 de mayo de 2011 .
  26. ^ Hruska, Joel (21 de agosto de 2014). "RISC vuelve a funcionar: la nueva arquitectura RISC-V espera luchar contra ARM y x86 al ser totalmente de código abierto". Tecnología extrema .
  27. ^ "Historia de RISC-V" . Consultado el 28 de enero de 2023 .
  28. ^ "Un nuevo modelo para microprocesadores desafía a los gigantes de la industria". El economista . 3 de octubre de 2019. ISSN  0013-0613 . Consultado el 10 de noviembre de 2019 .
  29. ^ "Conferencia sobre automatización del diseño". dac.com . Consultado el 6 de febrero de 2021 .
  30. ^ "Miembros". RISC-V Internacional . Consultado el 1 de agosto de 2023 .
  31. ^ "Un grupo de tecnología de chips con sede en EE. UU. se muda a Suiza por temor a frenar el comercio". Reuters . 26 de noviembre de 2019 . Consultado el 26 de noviembre de 2019 .
  32. ^ Cheung, Sunny (15 de diciembre de 2023). "Examinando la gran estrategia de China para RISC-V". Informe de China . Fundación Jamestown . Consultado el 18 de diciembre de 2023 .
  33. ^ "Historia de RISC-V - RISC-V Internacional". RISC-V Internacional . Consultado el 14 de mayo de 2020 .
  34. ^ "Fundación RISC-V". Fundación RISC-V. Archivado desde el original el 10 de abril de 2019 . Consultado el 15 de marzo de 2019 .
  35. ^ "The Linley Group anuncia los ganadores de los premios anuales Analysts' Choice Awards" (Presione soltar). El Grupo Linley. 12 de enero de 2017 . Consultado el 21 de enero de 2018 .
  36. ^ ab "Extensiones ISA de manipulación de bits" (PDF) . RISC-V Internacional. Noviembre de 2021.
  37. ^ "Extensión vectorial". RISC-V Internacional. Noviembre de 2021.
  38. ^ ab "Instrucciones de fuente de entropía y escalar del volumen I de las extensiones de criptografía RISC-V" (PDF) . GitHub . 18 de febrero de 2022 . Consultado el 28 de enero de 2023 .
  39. ^ "Perfiles RISC-V". Discusión . 2022.
  40. ^ Subcomité Horizontal de la Plataforma RISC-V (diciembre de 2021). "Especificación de la plataforma RISC-V" (PDF) . Versión 0.3-borrador.
  41. ^ abcdefghi Waterman, Andrew (13 de mayo de 2011). Mejora de la eficiencia energética y reducción del tamaño del código con RISC-V comprimido. UC Berkeley: Regentes de la Universidad de California. pag. 32 . Consultado el 25 de agosto de 2014 .
  42. ^ Waterman, Andrés; et al. "Manual del conjunto de instrucciones comprimido RISC-V versión 1.9 (borrador)" (PDF) . RISC-V . Consultado el 18 de julio de 2016 .
  43. ^ ab Brussee, Rogier. "Un RVC completo de 16 bits". Grupos de Google . Fundación RISC-V . Consultado el 18 de julio de 2019 .
  44. ^ ab Brussee, Rogier. "Propuesta: Xcondensed, [a] ... Compacto ... G-ISA independiente de 16 bits". Servidor de correo RISC-V ISA . Grupos de Google . Consultado el 10 de noviembre de 2016 .
  45. ^ Phung, Xan. "Xcondensado mejorado". Grupos de Google . Fundación RISC-V . Consultado el 18 de julio de 2019 .
  46. ^ Ionescu, Liviu. "El perfil del microcontrolador RISC-V". GitHub . Consultado el 5 de abril de 2018 .
  47. ^ Barros, César (1 de abril de 2018). "Propuesta: RV16E". Desarrolladores RISC-V ISA (lista de correo) . Consultado el 2 de abril de 2018 .
  48. ^ Bonzini, Paolo; Waterman, Andrés. "Propuesta de Virtualización sin modo H". Desarrolladores RISC-V ISA (lista de correo) . Consultado el 24 de febrero de 2017 .
  49. ^ "riscv-aclint/riscv-aclint.adoc en principal · riscv/riscv-aclint". GitHub . Consultado el 2 de enero de 2024 .
  50. ^ Lobo, 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 .
  51. ^ ab "Resumen de instrucciones para una propuesta ISA" P "". Grupos de Google . ANDES Tecnologías . Consultado el 13 de enero de 2020 .
  52. ^ Su, Charlie (30 de junio de 2018). "Soluciones integrales RISC-V para AIoT" (PDF) . Contenido RISC-V . Fundación RISC-V . Consultado el 28 de enero de 2023 .
  53. ^ abcdefg Schmidt, Colin; Oh, Alberto; Lee, Yunsup; Asanović, Krste . "Propuesta de extensión de vector RISC-V" (PDF) . RISC-V . Regentes de la Universidad de California . Consultado el 14 de marzo de 2016 .
  54. ^ ab "Lanzamiento de Vector Extension 1.0, congelado para revisión pública · riscv/Riscv-v-spec". GitHub .
  55. ^ Oh, Alberto; Nguyen, Quan; Lee, Yunsup; Asanović, Krste . "Un caso para los MVP: procesadores vectoriales de precisión mixta" (PDF) . EECS de la Universidad de California en 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 .
  56. ^ Lee, Yunsup; Grover, Vinod; Krashinsky, Ronny; Stephenson, Marcos; 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 .
  57. ^ abcde Bradbury, Alex; Wallentowitz, Stefan. "Depuración del control de ejecución de RISC-V". Documentos de Google . Fundación RISC-V . Consultado el 20 de enero de 2017 .
  58. ^ Nuevo, Tim. "Grupo de depuración RISC-V> resultados de la encuesta". Grupos de Google, grupo de depuración RISC-V . Fundación RISC-V . Consultado el 20 de enero de 2017 .
  59. ^ McGooganus. "riscv-trace-spec". GitHub . Consultado el 13 de enero de 2020 .
  60. ^ Dahad, Nitin. "UltraSoC aborda el desafío de compatibilidad con RISC-V donando un codificador de seguimiento". Tiempos EE.UU. Aspencore . Consultado el 13 de enero de 2020 .
  61. ^ "Descripción general de SoC y núcleos RISC-V". RISC-V. 25 de septiembre de 2019 . Consultado el 5 de octubre de 2019 .
  62. ^ "D1" . Consultado el 30 de septiembre de 2021 .
  63. ^ abc "Miembros internacionales de RISC-V". RISC-V Internacional . Consultado el 22 de enero de 2021 .
  64. ^ "En CES2022 Bouffalo muestra su solución llave en mano Matter". www.eetimes.com . Consultado el 20 de enero de 2022 .
  65. ^ "NubeOSO" . Consultado el 16 de octubre de 2018 .
  66. ^ riscv/riscv-cores-list, RISC-V, 6 de febrero de 2021 , consultado el 9 de febrero de 2021
  67. ^ "Codasip anuncia núcleos de procesador RISC-V que brindan capacidades SIMD y multinúcleo". www.newelectronics.co.uk . Archivado desde el original el 23 de diciembre de 2020 . Consultado el 9 de febrero de 2021 .
  68. ^ "3.6.2 Coprocesador de consumo ultrabajo". Hoja de datos de la familia ESP32-S2 V1.1 (PDF) . Sistemas expresivo. 2020 . Consultado el 9 de junio de 2020 .
  69. ^ "Hoja de datos de la familia ESP32-C3 V0.4" (PDF) . Sistemas expresivo. 2020 . Consultado el 27 de diciembre de 2020 .
    • "Presentación de ESP32-C3". Espressif (Presione soltar). 27 de noviembre de 2020.
  70. ^ Modales, David (8 de junio de 2021). "Núcleo RISC tolerante a fallas con licencia Fraunhofer para aplicaciones críticas para la seguridad". Semanario de Electrónica . Consultado el 13 de abril de 2022 .
  71. ^ "GigaDevice presenta la serie GD32V con núcleo RISC-V en un nuevo microcontrolador de uso 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 .
  72. ^ "Sipeed Longan Nano - Placa de desarrollo RISC-V GD32VF103CBT6". www.seeedstudio.com . Consultado el 29 de agosto de 2019 .
  73. ^ Kleidermacher, Dave; Semilla, Jesé; 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 .
  74. ^ "GreenWaves GAP8 es un procesador IoT RISC-V de bajo consumo optimizado para aplicaciones de inteligencia artificial". CNXSoft: Novedades sobre sistemas integrados . 27 de febrero de 2018 . Consultado el 4 de marzo de 2018 .
  75. ^ Yoshida, Junko (26 de febrero de 2018). "La IA llega a los dispositivos de detección". Tiempos EE.UU. Consultado el 10 de julio de 2018 .
  76. ^ "GreenWaves Technologies anuncia la disponibilidad del kit de desarrollo de software GAP8 y la placa de desarrollo GAPuino" (Presione soltar). 22 de mayo de 2018.
  77. ^ "CPU IMG RTXM-2200". Imaginación . Consultado el 30 de septiembre de 2023 .
  78. ^ Leibson, Steven (9 de enero de 2023). "MIPS lanza su primer núcleo de procesador RISC-V: es un gran avance". EEJournal .
  79. ^ Robinson, Dan (11 de mayo de 2022). "MIPS revela que los primeros chips RISC-V llegarán en el cuarto trimestre de 2022". El registro .
  80. ^ Shilov, Anton (9 de diciembre de 2020). "Seagate desarrolla sus propios núcleos RISC-V para controladores de almacenamiento". Hardware de Tom .
  81. ^ "Hola cinco1". Sicinco . Archivado desde el original el 26 de febrero de 2017 . Consultado el 10 de julio de 2018 .
  82. ^ Sicinco. "Hi-Five1: kit de desarrollo de código abierto compatible con Arduino". Suministro de multitudes . Consultado el 2 de diciembre de 2016 .
  83. ^ "CPU SoC FU540". Sicinco . Archivado desde el original el 5 de octubre de 2018 . Consultado el 24 de octubre de 2018 .
  84. ^ Horwitz, Josh (23 de marzo de 2023). "El gigante chino de búsqueda Baidu invierte en la startup de tecnología de chips RISC-V StarFive". Reuters .
  85. ^ Sharwood, Simon (27 de marzo de 2023). "El gigante web chino Baidu respalda RISC-V para el centro de datos". El registro .
  86. ^ "Sintaxis" . Consultado el 11 de diciembre de 2018 .
  87. ^ ab "SCR1 es un núcleo MCU RISC-V de código abierto de alta calidad en Verilog". GitHub . Sintacore . Consultado el 13 de enero de 2020 .
  88. ^ "Actas del taller RISC-V". 11 de diciembre de 2016 . Consultado el 28 de enero de 2023 .
  89. ^ "WinChipHead (WCH)".
  90. ^ "CH32V003". WCH-IC . Consultado el 10 de julio de 2023 .
  91. ^ "el-procesador-ch32v003-risc-v-de-10 centavos". EEvblog . Consultado el 10 de julio de 2023 .
  92. ^ Modales, David (23 de noviembre de 2016). "Codasip y UltraSoC se combinan en RISC-V". Semanario de Electrónica . Metropolis International Group, Ltd. Consultado el 23 de noviembre de 2016 .
  93. ^ Desikan, Shubashree (6 de agosto de 2018). "IIT-Madras enciende un chip desi" . El hindú . ISSN  0971-751X . Consultado el 25 de septiembre de 2020 .
  94. ^ ab "Conozca el chip microprocesador Atmanirbhar 'Moushik' de la India, diseñado para dispositivos IoT". WION . Consultado el 25 de septiembre de 2020 .
  95. ^ Ashenden, Peter (9 de noviembre de 2016). "Re: [isa-dev] RISC V ISA para sistemas integrados". Desarrolladores 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 integradas, como sensores inteligentes e IoT.
  96. ^ "C-DAC anuncia Tech Cónclave 2019". Los tiempos de la India . Archivado desde el original el 17 de mayo de 2019 . Consultado el 12 de abril de 2019 .
  97. ^ Sharwood, Simon (19 de agosto de 2020). "India selecciona RISC-V para el concurso de autosuficiencia de semiconductores: utilice estos núcleos locales para construir un kit". El registro . Consultado el 9 de julio de 2021 .
  98. ^ "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 .
  99. ^ "Procesador NOEL-V". Cobham Gaisler . Consultado el 14 de enero de 2020 .
  100. ^ ab "Fundación FreeBSD: puerto de arquitectura inicial FreeBSD RISC-V comprometido". 4 de febrero de 2016.
  101. ^ "El esperanto sale del modo sigiloso y apunta a la IA con un monstruo RISC-V de 7 nm y 4.096 núcleos". wikichip.org . Enero de 2018 . Consultado el 2 de enero de 2018 .
  102. ^ "Solución aceleradora de IA Esperanto ET-SoC-1 1092 RISC-V en Hot Chips 33". 24 de agosto de 2021.
  103. ^ "Proyecto PULPino GitHub". GitHub . Consultado el 2 de febrero de 2018 .
  104. ^ "Plataforma PULP". Plataforma PULPA . Consultado el 2 de febrero de 2018 .
  105. ^ "Corriente del acelerador". Iniciativa Europea de Procesadores (EPI) . Consultado el 22 de febrero de 2020 .
  106. ^ 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 Internacional.
  107. ^ Halfacree, Gareth (10 de junio de 2021). "Los expertos en RISC-V trazan un plan para llevar la arquitectura a la informática de alto rendimiento". El registro . Consultado el 9 de julio de 2021 .
  108. ^ "Proyecto de procesador de código abierto IIT Madras". IO rápida . IIT Madrás. 26 de agosto de 2014. Archivado desde el original el 14 de septiembre de 2014 . Consultado el 13 de septiembre de 2014 .
  109. ^ "IIT Madras 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 .
  110. ^ "sitio web bajo RISC" . Consultado el 10 de mayo de 2015 .
  111. ^ Xie, Joe (julio de 2016). Historia de evaluación de NVIDIA RISC V. 4to Taller RISC-V . YouTube. Archivado desde el original el 13 de noviembre de 2021.
  112. ^ "RV64X: una GPU gratuita y de código abierto para RISC-V". EETimes . Consultado el 9 de febrero de 2021 .
  113. ^ 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 .
  114. ^ Gwennap, Linley (13 de diciembre de 2021). "Ventana desarrolla chiplet RISC-V". Informe del microprocesador .
  115. ^ Dahad, Nitin (6 de septiembre de 2021). "La puesta en marcha de chiplet RISC-V recauda 38 millones de dólares y apunta a la computación del centro de datos". Tiempos EE.UU.
  116. ^ Asanović, Krste ; et al. "chip cohete". GitHub . RISC-V Internacional . Consultado el 11 de noviembre de 2016 .
  117. ^ Celio, Cristóbal. "riscv-boom". GitHub . Regentes de la Universidad de California . Consultado el 29 de marzo de 2020 .
  118. ^ Lobo, Claire. "PicoRV32: una CPU RISC-V de tamaño optimizado". GitHub . Consultado el 27 de febrero de 2020 .
  119. ^ "MIPT-MIPS: simulador de presilicio con precisión de ciclo de CPU RISC-V y MIPS". GitHub .
  120. ^ "Funciones de llamada al sistema MIPS disponibles en MARS". cursos.missouristate.edu . Consultado el 28 de mayo de 2023 .
  121. ^ Niños, Olof. "SERV: la CPU serie RISC-V". GitHub . Consultado el 25 de septiembre de 2023 .
  122. ^ ab Kindgren, Olof (29 de diciembre de 2022). "SERV: 32 bits es el nuevo 8 bits" (Vídeo, 2:38) . YouTube . Fundación RISC-V . Consultado el 25 de septiembre de 2023 .
  123. ^ Halfacree, Gareth (14 de junio de 2022). "CoreScore Benchmark alcanza un nuevo récord con 10.000 núcleos RISC-V en una FPGA". fossi-foundation.org . Fundación FOSSi . Consultado el 25 de septiembre de 2023 .
  124. ^ Traber, Andrés; et al. "PULP: potencia ultrabaja paralela". ETH Zurich, Universidad de Bolonia . Consultado el 5 de agosto de 2016 .
  125. ^ Shilov, Antón. "Western Digital lanza dos nuevos núcleos SweRV RISC-V para microcontroladores". www.anandtech.com . Consultado el 9 de febrero de 2021 .
  126. ^ Shilov, Antón. "Western Digital revela la iniciativa SweRV RISC-V Core, coherencia de caché a través de Ethernet". www.anandtech.com . Consultado el 23 de mayo de 2019 .
  127. ^ "Western Digital lanza el código fuente principal SweRV RISC-V". AB Abierto . 28 de enero de 2019. Archivado desde el original el 21 de mayo de 2019.
  128. ^ Núcleos-SweRV en GitHub
  129. ^ Nolting, Stephan (2022). "neorv32". GitHub . doi :10.5281/zenodo.7030070 . Consultado el 9 de septiembre de 2021 .
  130. ^ "Alibaba de China 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 .
  131. ^ "Alibaba abre fuentes de cuatro núcleos RISC-V: XuanTie E902, E906, C906 y C910". 20 de octubre de 2021 . Consultado el 20 de octubre de 2021 .
  132. ^ Repositorio XiangShan en Github
  133. ^ Procesador RISC-V de 64 bits de código abierto XiangShan para rivalizar con Arm Cortex-A76 - CNX Software
  134. ^ "riscv - Wiki de FreeBSD". wiki.freebsd.org .
  135. ^ Montezelo, Manuel. "Puerto Debian GNU/Linux para RISC-V 64". Grupos de Google . Consultado el 19 de julio de 2018 .
  136. ^ "Arquitecturas/RISC-V". Wiki de Fedora . Sombrero rojo . Consultado el 26 de septiembre de 2016 .
  137. ^ "Arranque de nuestras imágenes RISC-V". Proyecto Haiku . 7 de noviembre de 2021 . Consultado el 4 de marzo de 2023 .
  138. ^ 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 .
  139. ^ RiscVEdk2 en GitHub
  140. ^ Almatary, Hesham. "RISC-V, seL4". Documentación seL4 . Organización de Investigación Científica e Industrial del Commonwealth (CSIRO) . Consultado el 13 de julio de 2018 .
  141. ^ Almatary, Hesham. "heshamelmatary". GitHub . Consultado el 13 de julio de 2018 .
  142. ^ "MultiZone Secure IoT Stack, la primera pila de IoT segura para RISC-V". Seguridad hexagonal cinco . Hex Five Security, Inc. 22 de febrero de 2019 . Consultado el 3 de marzo de 2019 .
  143. ^ "Faros". FuenteForge . Consultado el 1 de abril de 2020 .
  144. ^ "ANGEL es un simulador 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 .
  145. ^ Lee, Yunsup (5 de marzo de 2014). "¡Inicie RISC-V Linux en su navegador web!". RISC-V Internacional . Consultado el 4 de septiembre de 2020 .
  146. ^ "ÁNGEL - 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 .
  147. ^ "Documentación/Plataformas/RISCV". Wiki QEMU . Consultado el 7 de mayo de 2020 .
  148. ^ 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.
  149. ^ Camarmas-Alonso, Diego; García-Carballeira, Félix; Del-Pozo-Punal, Elías; Mateos, Alejandro Calderón (octubre 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). págs. 1–9. doi :10.1109/CLEI53233.2021.9640144. ISBN 978-1-6654-9503-5. S2CID  245387555 . Consultado el 2 de agosto de 2022 .
  150. ^ Ejemplo de CREATOR Web con RISC-V: https://creatorsim.github.io/creator/?example_set=default_rv&example=e12
  151. ^ Código fuente de CREATOR en GitHub: https://github.com/creatorsim/creator
  152. ^ "Ejemplo de WepSIM con RISC-V_im". WepSIM .
  153. ^ "Página de inicio de WepSIM".
  154. ^ "Chisel: construcción de hardware en un lenguaje integrado Scala". UC Berkeley . Regentes de la Universidad de California . Consultado el 12 de febrero de 2015 .
  155. ^ "Estudio Codasip". Codasip . Consultado el 19 de febrero de 2021 .
  156. ^ riscv/riscv-compliance, RISC-V, 12 de febrero de 2021 , consultado el 19 de febrero de 2021
  157. ^ "Depurador RISC-V". www.lauterbach.com Depurador TRACE32 para RISC-V .
  158. ^ "Lauterbach y SiFive brindan soporte TRACE32 para núcleos RISC-V de alto rendimiento". www.sifive.com .
  159. ^ "TRACE32 admite la traza RISC-V de SiFive". www.lauterbach.com . Archivado desde el original el 2 de junio de 2022 . Consultado el 6 de marzo de 2021 .
  160. ^ "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 .
  161. ^ "PR: SEGGER Embedded Studio admite la arquitectura RISC-V" . Consultado el 23 de noviembre de 2017 .
  162. ^ "PR: SEGGER presenta RTOS, pilas y middleware para RISC-V" . Consultado el 8 de diciembre de 2017 .
  163. ^ Dahad, Nitin (23 de junio de 2020). "Siemens adquiere UltraSoC para la suite de productos SoC Lifecycle". Tiempos EE.UU. Consultado el 12 de julio de 2023 .

Otras lecturas

enlaces externos