Ir al contenido

Diferencia entre revisiones de «RISC-V»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
Quitar texto duplicado.
InternetArchiveBot (discusión · contribs.)
Rescatando 4 referencia(s) y marcando 0 enlace(s) como roto(s)) #IABot (v2.0.9.5
 
(No se muestran 54 ediciones intermedias de 32 usuarios)
Línea 1: Línea 1:
{{Ficha de hardware
[[Archivo:Yunsup_Lee_holding_RISC_V_prototype_chip.jpg|miniaturadeimagen|RISC-V prototipo de procesador, enero 2013]]
|nombre = RISC-V
'''RISC-V''' (pronunciado "Risk-Five") es una arquitectura de [[conjunto de instrucciones]] (ISA) de [[hardware libre]] basado en un diseño de tipo [[Reduced instruction set computing|RISC]] (conjunto de instrucciones reducido).
|nombre completo =
|imagen = Yunsup Lee holding RISC V prototype chip.jpg
|pie de imagen = RISC-V prototipo de un procesador, enero de 2013.
|fecha de creación =
|desarrollador =
|lanzamiento =
|frecuencia mínima =
|frecuencia máxima =
|manuf1 =
|manuf2 =
|manuf3 =
|transistors =
|arquitectura = RISC-V
|ancho en bits =
|address-width =
|conn1 =
|sucedido por =
|via1_1 =
|pack 1 =
|pack =
|sock1 =
|sitio web =
}}


'''RISC-V''' es una arquitectura de [[conjunto de instrucciones]] (ISA) de [[hardware libre]] basado en un diseño de tipo [[Reduced instruction set computing|RISC]] (conjunto de instrucciones reducido).
A diferencia de la mayoría de los conjuntos de instrucciones, el de '''RISC-V''' es [[Código abierto|libre y abierto]] y se puede usar sin royalties para cualquier propósito, lo que permite que cualquiera diseñe, fabrique y venda chips y software de RISC-V. Si bien no es la primera ISA de arquitectura abierta [1] , es significativa porque está diseñada para ser útil en una amplia gama de dispositivos. El conjunto de instrucciones también tiene un cuerpo sustancial de software de soporte, que evita una debilidad habitual de los nuevos conjuntos de instrucciones.

A diferencia de la mayoría de los conjuntos de instrucciones, el de '''RISC-V''' es [[Software libre y de código abierto|libre y abierto]] y se puede usar sin [[Regalía|regalías]] para cualquier propósito, lo que permite que cualquiera diseñe, fabrique y venda chips y software de RISC-V. Si bien no es la primera ISA de arquitectura abierta, es significativa porque está diseñada para ser útil en una amplia gama de dispositivos. El conjunto de instrucciones también tiene un cuerpo sustancial de software de soporte, que evita una debilidad habitual de los nuevos conjuntos de instrucciones.


El proyecto comenzó en 2010 en la [[Universidad de California en Berkeley]], pero muchos colaboradores son voluntarios y trabajadores de la industria fuera de la universidad.
El proyecto comenzó en 2010 en la [[Universidad de California en Berkeley]], pero muchos colaboradores son voluntarios y trabajadores de la industria fuera de la universidad.


El conjunto de instrucciones se ha diseñado pensando en implementaciones pequeñas, rápidas y de bajo consumo para el mundo real,<ref name="rocketsspeed2" /><ref name="isa2" /> pero sin una sobre-ingeniería excesiva que buscase una [[microarquitectura]] concreta.<ref name="sodor">{{Cita web|url=https://github.com/ucb-bar/riscv-sodor|título=ucb-bar/riscv-sodor|fechaacceso=12 de febrero de 2015|apellido=Celio|nombre=Christopher|sitioweb=GitHub Inc.|editorial=Regents of the University of California}}</ref><ref name="boom">{{Cita web|url=http://www-inst.eecs.berkeley.edu/~cs152/sp14/handouts/lab3.pdf|título=CS 152 Laboratory Exercise 3|fechaacceso=12 de febrero de 2015|apellido=Celio|nombre=Christopher|sitioweb=UC Berkeley|editorial=Regents of the University of California}}</ref>
El conjunto de instrucciones se ha diseñado pensando en implementaciones pequeñas, rápidas y de bajo consumo para el mundo real,<ref name="rocketsspeed"/><ref name="isa20191213"/> pero sin una sobre-ingeniería excesiva que buscase una [[microarquitectura]] concreta.<ref name="sodor">{{Cita web|url=https://github.com/ucb-bar/riscv-sodor|título=ucb-bar/riscv-sodor|fechaacceso=12 de febrero de 2015|apellido=Celio|nombre=Christopher|sitioweb=GitHub Inc.|editorial=Regents of the University of California}}</ref><ref name="shakti"/><ref name="boom">{{Cita web|url=http://www-inst.eecs.berkeley.edu/~cs152/sp14/handouts/lab3.pdf|título=CS 152 Laboratory Exercise 3|fechaacceso=12 de febrero de 2015|apellido=Celio|nombre=Christopher|sitioweb=UC Berkeley|editorial=Regents of the University of California}}</ref>


En mayo de 2017, estaba cerrada la versión 2.2 del conjunto de instrucciones del espacio de usuario. El conjunto de instrucciones privilegiadas estaba disponible como borrador en la versión 1.10.
En mayo de 2017, estaba cerrada la versión 2.2 del conjunto de instrucciones del [[espacio de usuario]]<ref name="isa2.2"/>. El conjunto de instrucciones privilegiadas estaba disponible como borrador en la versión 1.10.


== Importancia ==
== Importancia ==
Los autores de RISC-V pretenden proporcionar varios diseños de CPU disponibles libremente bajo las licencias BSD, que permiten que los trabajos derivados, como los diseños de chips RISC-V, sean abiertos y gratuitos, al igual que RISC-V, o cerrados y de propiedad exclusiva.
Los autores de RISC-V pretenden proporcionar varios diseños de [[Unidad central de procesamiento|CPU]] disponibles libremente bajo las [[Licencia BSD|licencias BSD]], que permiten que los trabajos derivados, como los diseños de chips RISC-V, sean abiertos y gratuitos, al igual que RISC-V, o cerrados y de propiedad exclusiva.


Por el contrario, los proveedores de chips comerciales como [[ARM Holdings]] y [[MIPS Technologies]] cobran tarifas de licencia sustanciales por el uso de sus patentes. <ref>{{Cita web|url=https://semiaccurate.com/2013/08/07/a-long-look-at-how-arm-licenses-chips/|título=A long look at how ARM licenses chips: Part 1|apellido=Demerjian|nombre=Chuck|fecha=7 de agosto de 2013|editorial=SemiAccurate}}</ref><ref>{{Cita web|url=https://semiaccurate.com/2013/08/08/how-arm-licenses-its-ip-for-production/|título=How ARM licenses its IP for production: Part 2|apellido=Demerjian|nombre=Chuck|fecha=8 de agosto de 2013|editorial=SemiAccurate}}</ref> También requieren acuerdos de no divulgación antes de publicar documentos que describen las ventajas de sus diseños y el conjunto de instrucciones. El secreto impide la auditoría de seguridad.{{Cita requerida}}
Por el contrario, los proveedores de chips comerciales como [[ARM Holdings]] y [[MIPS Technologies]] cobran tarifas de licencia sustanciales por el uso de sus patentes.<ref>{{Cita web|url=https://semiaccurate.com/2013/08/07/a-long-look-at-how-arm-licenses-chips/|título=A long look at how ARM licenses chips: Part 1|apellido=Demerjian|nombre=Chuck|fecha=7 de agosto de 2013|editorial=SemiAccurate|fechaacceso=11 de enero de 2019|fechaarchivo=24 de octubre de 2022|urlarchivo=https://web.archive.org/web/20221024004658/https://semiaccurate.com/2013/08/07/a-long-look-at-how-arm-licenses-chips/|deadurl=yes}}</ref><ref>{{Cita web|url=https://semiaccurate.com/2013/08/08/how-arm-licenses-its-ip-for-production/|título=How ARM licenses its IP for production: Part 2|apellido=Demerjian|nombre=Chuck|fecha=8 de agosto de 2013|editorial=SemiAccurate|fechaacceso=11 de enero de 2019|fechaarchivo=25 de octubre de 2022|urlarchivo=https://web.archive.org/web/20221025025814/https://semiaccurate.com/2013/08/08/how-arm-licenses-its-ip-for-production/|deadurl=yes}}</ref> También requieren acuerdos de no divulgación antes de publicar documentos que describen las ventajas de sus diseños y el conjunto de instrucciones. El secreto impide la auditoría de seguridad.{{Cita requerida}}


El desarrollo de una CPU requiere experiencia en diseño en varias especialidades: lógica digital electrónica, compiladores y sistemas operativos. Es raro encontrar esto fuera de un equipo de ingeniería profesional. El resultado es que los conjuntos modernos de instrucción en computadora de alta calidad para fines generales no han estado ampliamente disponibles en ningún lugar, ni siquiera explicados, excepto en entornos académicos. Debido a esto, muchos colaboradores de RISC-V lo ven como un esfuerzo comunitario unificado. Esta necesidad de una gran base de contribuyentes es parte de la razón por la cual RISC-V se diseñó para adaptarse a tantos usos.
El desarrollo de una CPU requiere experiencia en diseño en varias especialidades: [[Lógica digital|lógica digital electrónica]], [[Compilador|compiladores]] y [[Sistema operativo|sistemas operativos]]. Es raro encontrar esto fuera de un equipo de ingeniería profesional. El resultado es que los conjuntos modernos de instrucción en computadora de alta calidad para fines generales no han estado ampliamente disponibles en ningún lugar, ni siquiera explicados, excepto en entornos académicos. Debido a esto, muchos colaboradores de RISC-V lo ven como un esfuerzo comunitario unificado. Esta necesidad de una gran base de contribuyentes es parte de la razón por la cual RISC-V se diseñó para adaptarse a tantos usos.


Los autores de RISC-V también tienen una importante investigación y experiencia de usuario que validan sus diseños en silicio y simulación. El RISC-V ISA es un desarrollo directo de una serie de proyectos académicos de diseño de computadoras. Se originó en parte para ayudar a tales proyectos.
Los autores de RISC-V también tienen una importante investigación y [[experiencia de usuario]] que validan sus diseños en silicio y simulación. El RISC-V ISA es un desarrollo directo de una serie de proyectos académicos de diseño de computadoras. Se originó en parte para ayudar a tales proyectos.


== Historia ==
== Historia ==

=== Predecesores ===
=== Predecesores ===
El término RISC data de alrededor de 1980. Antes de esto, existía cierto conocimiento de que las computadoras más simples podrían 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.
El término RISC data de alrededor de 1980.<ref name="riscstart"/> Antes de esto, existía cierto conocimiento de que las computadoras más simples podrían 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.


Los académicos crearon el conjunto de instrucciones RISC DLX para la primera edición de Arquitectura de Computadora: Un Enfoque Cuantitativo en 1990. David Patterson fue un autor, y luego asistió a RISC-V. DLX era para uso educativo. Académicos y aficionados lo implementaron utilizando arreglos de puertas programables en campo. No fue un éxito comercial.
Los académicos crearon el conjunto de instrucciones RISC DLX para la primera edición de Arquitectura de Computadora: Un Enfoque Cuantitativo en 1990. David Patterson fue un autor, y luego asistió a RISC-V. DLX era para uso educativo. Académicos y aficionados lo implementaron utilizando arreglos de puertas programables en campo ([[Field-programmable_gate_array|FPGA]]). No fue un éxito comercial.


Las CPU ARM, versiones 2 y anteriores, tenían un conjunto de instrucciones de dominio público, y aún es compatible con la Colección de compiladores GNU ([[GNU Compiler Collection|GCC]]), un popular compilador de software libre. Existen tres núcleos de código abierto para esta ISA, pero no se han fabricado.
Las CPU ARM, versiones 2 y anteriores, tenían un conjunto de instrucciones de dominio público, y aún es compatible con la Colección de compiladores GNU ([[GNU Compiler Collection|GCC]]), un popular compilador de software libre. Existen tres núcleos de código abierto para esta ISA, pero no se han fabricado.<ref name="amber"/><ref name="arm4u"/>


OpenRISC es una ISA de código abierto basada en [[DLX]], con diseños RISC asociados. Es totalmente compatible con implementaciones GCC y Linux. Sin embargo, tiene pocas implementaciones comerciales.
OpenRISC es una ISA de código abierto basada en [[DLX]], con diseños RISC asociados. Es totalmente compatible con implementaciones GCC y Linux. Sin embargo, tiene pocas implementaciones comerciales.


=== Fundación ===
=== Fundación ===
Krste Asanović en la Universidad de California, Berkeley, encontró muchos usos para un sistema informático de código abierto. En 2010, decidió desarrollar y publicar uno en un "proyecto corto de tres meses durante el verano". El plan era ayudar tanto a los usuarios académicos como a los industriales. [10] David Patterson en Berkeley también ayudó en el esfuerzo. Originalmente identificó las propiedades de Berkeley RISC , [11] y RISC-V es una de sus largas series de proyectos de investigación cooperativa RISC. Los primeros fondos fueron de DARPA .
Krste Asanović en la Universidad de California, Berkeley, encontró muchos usos para un sistema informático de código abierto. 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. David Patterson en Berkeley también ayudó en el esfuerzo. Originalmente identificó las propiedades de Berkeley RISC , y RISC-V es una de sus largas series de proyectos de investigación cooperativa RISC.<ref name="isasbfree"/><ref name="isa20191213"/> basados ​​en RISC en la Universidad de California, Berkeley (RISC -I y RISC-II publicados en 1981 por Patterson, quien se refiere<ref name="geneology">{{cite web|last=Chen|first1=Tony|first2=David|last2=Patterson|date=2016-01-24|title=RISC-V{{sic|Geneology|hide=y}} |institution=University of California at Berkeley|number=UCB/EECS-2016-6|url=http://www.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-6.html }}</ref>a la arquitectura SOAR<ref>{{cite web|last=Samples|first=Alan Dain|last2=Klein|first2=Mike|last3=Foley|first3=Pete|date=1985|title=SOAR Architecture|institution=University of California, Berkeley|number=UCB/CSD-85-226|url=http://www.eecs.berkeley.edu/Pubs/TechRpts/1985/5940.html}}</ref> de 1984 como "RISC-III" y a la arquitectura SPUR<ref>{{cite web|last=Hill |first=Mark Donald |coauthors=David Patterson, 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, J. M. Pendleton, Scott Allen Ritchie, David A. Wood, Benjamin G. Zorn, Paul N. Hilfinger, D. A. Hodges, Randy H. Katz, and John K. Ousterhout|date=December 1985|title=SPUR: A VLSI Multiprocessor Workstation |institution=University of California, Berkeley |number=UCB/CSD-86-273 |url=http://www.eecs.berkeley.edu/Pubs/TechRpts/1985/6083.html}}</ref> de 1988 como "RISC-IV"). En esta etapa, los estudiantes proporcionaron software inicial, simulaciones y diseños de CPU.<ref name="contributors"/> Los primeros fondos de financiación fueron proporcionados por [[DARPA]].


Una lista parcial de organizaciones que apoyan la Fundación RISC-V incluye: [[Advanced Micro Devices|AMD]], [14] Andes Technology, [15] [[BAE Systems]] , Berkeley Architecture Research, Bluespec, Inc. , Cortus , [[Google]] , GreenWaves Technologies, Hewlett Packard Enterprise , [[Huawei]] , [[IBM]] , Imperas Software, Instituto de Tecnología de Computación (ICT) Academia China de Ciencias , IIT Madras , Lattice Semiconductor , Mellanox Technologies , Microsemi , Micron Technologies , [[Nvidia]] , [[NXP Semiconductors|NXP]] , [[Oracle Corporation|Oracle]] , [[Qualcomm]] , Rambus Cryptography Research , [[Western Digital]] , SiFive y [[Raspberry Pi|Raspberry Pi Foundation]].<ref>{{Cita web|url=https://www.wired.com/story/computings-nobel-prize-winners-paved-the-way-to-smartphone-chips/|título=Turing Prize Winners Paved Way to Smartphone Chips|apellido=Finley|nombre=Klint|fecha=21 de marzo de 2018|sitioweb=Wired.com}}</ref><ref>{{Cita web|url=http://www.andestech.com/product.php?cls=2|título=AndeStar Architecture|sitioweb=Andes Technology|cita=Andes is a founding member of the RISC-V Foundation.}}</ref><ref>{{Cita web|url=https://www.eetimes.com/document.asp?doc_id=1328561&page_number=1|título=Google, Oracle and HP Join RISC-V|fechaacceso=11 de febrero de 2016|apellido=Merritt|nombre=Rick|sitioweb=EE Times|editorial=UBM}}</ref><ref>{{Cita web|url=https://riscv.org/members-at-a-glance/|título=Members at a Glance|fechaacceso=2 de enero de 2018|sitioweb=riscv.org}}</ref>
Una lista parcial de organizaciones que apoyan la Fundación RISC-V incluye: [[Advanced Micro Devices|AMD]], Andes Technology, [[BAE Systems]] , [[Universidad de California en Berkeley|Berkeley Architecture Research]], Bluespec, Inc. , Cortus , [[Google]] , GreenWaves Technologies, [[Hewlett Packard Enterprise]], [[Huawei]], [[IBM]], Imperas Software, Instituto de Tecnología de Computación (ICT) [[Academia China de las Ciencias]], [[Institutos Indios de Tecnología|IIT-Madras]], Lattice Semiconductor, Mellanox Technologies, Microsemi, Micron Technologies, [[Nvidia]], [[NXP Semiconductors|NXP]], [[Oracle Corporation|Oracle]], [[Qualcomm]], Rambus Cryptography Research, [[Western Digital]], SiFive y [[Raspberry Pi|Raspberry Pi Foundation]].<ref>{{Cita web|url=https://www.wired.com/story/computings-nobel-prize-winners-paved-the-way-to-smartphone-chips/|título=Turing Prize Winners Paved Way to Smartphone Chips|apellido=Finley|nombre=Klint|fecha=21 de marzo de 2018|sitioweb=Wired.com}}</ref><ref>{{Cita web|url=http://www.andestech.com/product.php?cls=2|título=AndeStar Architecture|sitioweb=Andes Technology|cita=Andes is a founding member of the RISC-V Foundation.|fechaacceso=11 de enero de 2019|fechaarchivo=28 de enero de 2019|urlarchivo=https://web.archive.org/web/20190128155312/http://andestech.com/product.php?cls=2|deadurl=yes}}</ref><ref>{{Cita web|url=https://www.eetimes.com/document.asp?doc_id=1328561&page_number=1|título=Google, Oracle and HP Join RISC-V|fechaacceso=11 de febrero de 2016|apellido=Merritt|nombre=Rick|sitioweb=EE Times|editorial=UBM}}</ref><ref>{{Cita web|url=https://riscv.org/members-at-a-glance/|título=Members at a Glance|fechaacceso=2 de enero de 2018|sitioweb=riscv.org|fechaarchivo=24 de septiembre de 2019|urlarchivo=https://web.archive.org/web/20190924145625/https://riscv.org/members-at-a-glance/|deadurl=yes}}</ref>


=== Premios ===
=== Premios ===

* 2017: Premio a la elección del analista de The Linley Group a la mejor tecnología (para el conjunto de instrucciones)<ref>{{cite press release|title=The Linley Group Announces Winners of Annual Analysts' Choice Awards|url=http://linleygroup.com/press_detail.php?The-Linley-Group-Announces-Winners-of-Annual-Analysts-Choice-Awards-85|publisher=The Linley Group|fecha=12 de enero de 2017|access-date=21 de enero de 2018}}</ref>
* 2017: Premio a la elección del analista de The Linley Group a la mejor tecnología (para el conjunto de instrucciones)<ref>{{cite press release|title=The Linley Group Announces Winners of Annual Analysts' Choice Awards|url=http://linleygroup.com/press_detail.php?The-Linley-Group-Announces-Winners-of-Annual-Analysts-Choice-Awards-85|publisher=The Linley Group|fecha=12 de enero de 2017|access-date=21 de enero de 2018}}</ref>


Línea 46: Línea 69:
La mayoría de los ISA abiertos utilizaban la Licencia Pública General de GNU (GPL), alentando a los usuarios a abrir sus implementaciones para que otros los copien y los usen.
La mayoría de los ISA abiertos utilizaban la Licencia Pública General de GNU (GPL), alentando a los usuarios a abrir sus implementaciones para que otros los copien y los usen.


A diferencia de otros diseños académicos que están optimizados solo para la simplicidad de la exposición, los diseñadores afirman que el conjunto de instrucciones RISC-V es para computadoras prácticas. Se dice que tiene características para aumentar la velocidad de la computadora, y aun así reducir el costo y el uso de energía. Estos incluyen una arquitectura de carga y almacenamiento, patrones de bits para simplificar los multiplexores en una CPU, punto flotante basado en estándares simplificados, un diseño que es arquitectónicamente neutral y que coloca los bits más significativos en una ubicación fija para acelerar la extensión de signo. Se dice que la extensión de la señal a menudo se encuentra en la ruta de sincronización crítica.
A diferencia de otros diseños académicos que están optimizados solo para la simplicidad de la exposición, los diseñadores afirman que el conjunto de instrucciones RISC-V es para computadoras prácticas. Se dice que tiene características para aumentar la velocidad de la computadora, y aun así reducir el costo y el uso de energía. Estos incluyen una arquitectura de carga y almacenamiento, patrones de bits para simplificar los multiplexores en una CPU, punto flotante basado en estándares simplificados, un diseño que es arquitectónicamente neutral y que coloca los bits más significativos en una ubicación fija para acelerar la extensión de signo. Se dice que la extensión de la señal a menudo se encuentra en la ruta de sincronización crítica.<ref name="isa20191213"/>{{rp|page=17}}


El conjunto de instrucciones está diseñado para una amplia gama de usos. Admite tres anchos de palabra, 32, 64 y 128 bits, y una variedad de subconjuntos. Las definiciones de cada subconjunto varían ligeramente para los tres anchos de palabra. Los subconjuntos son compatibles con sistemas integrados pequeños, computadoras personales, supercomputadoras con procesadores vectoriales y computadoras paralelas montadas en bastidores a escala de almacén.
El conjunto de instrucciones está diseñado para una amplia gama de usos. Admite tres anchos de palabra, 32, 64 y 128 bits, y una variedad de subconjuntos. Las definiciones de cada subconjunto varían ligeramente para los tres anchos de palabra. Los subconjuntos son compatibles con sistemas integrados pequeños, computadoras personales, supercomputadoras con procesadores vectoriales y computadoras paralelas montadas en bastidores a escala de almacén.


El conjunto de instrucciones es de ancho variable y extensible, de modo que siempre se pueden agregar más bits de codificación. Se reservó el espacio para la versión extendida de ISA de 128 bits, ya que 60 años de experiencia en la industria han demostrado que el error más irrecuperable en el diseño del conjunto de instrucciones es la falta de espacio de direcciones de memoria. A partir de 2016, la ISA de 128 bits permanece indefinida intencionalmente, porque aún hay muy poca experiencia práctica con sistemas de memoria tan grandes.
El conjunto de instrucciones es de ancho variable y extensible, de modo que siempre se pueden agregar más bits de codificación. Se reservó el espacio para la versión extendida de ISA de 128 bits, ya que 60 años de experiencia en la industria han demostrado que el error más irrecuperable en el diseño del conjunto de instrucciones es la falta de [[espacio de direcciones]] de memoria. A partir de 2016, la ISA de 128 bits permanece indefinida intencionalmente, porque aún hay muy poca experiencia práctica con sistemas de memoria tan grandes.


Sin embargo, RISC-V también apoya los usos académicos de los diseñadores. La simplicidad del subconjunto de enteros permite los ejercicios básicos de los estudiantes. El subconjunto de enteros es un simple software de ISA que permite controlar máquinas de investigación. La ISA de longitud variable permite extensiones tanto para los ejercicios de los estudiantes como para la investigación.  El conjunto de instrucciones privilegiadas separadas permite la investigación en el soporte del sistema operativo, sin rediseñar los compiladores. La propiedad intelectual abierta de RISC-V permite que sus diseños se publiquen, reutilicen y modifiquen.
Sin embargo, RISC-V también apoya los usos académicos de los diseñadores. La simplicidad del subconjunto de enteros permite los ejercicios básicos de los estudiantes. El subconjunto de enteros es un simple software de ISA que permite controlar máquinas de investigación. La ISA de longitud variable permite extensiones tanto para los ejercicios de los estudiantes como para la investigación. El conjunto de instrucciones privilegiadas separadas permite la investigación en el soporte del sistema operativo, sin rediseñar los compiladores. La propiedad intelectual abierta de RISC-V permite que sus diseños se publiquen, reutilicen y modifiquen.


== Software ==
== Software ==
Un problema normal para un nuevo conjunto de instrucciones es la falta de diseños y software de CPU.
Un problema normal para un nuevo conjunto de instrucciones es la falta de diseños y software de CPU, ambos problemas limitan su usabilidad y reducen su adopción. <ref name="isasbfree"/> RISC-V tiene una gran cantidad de diseños de CPU. El software RISC-V incluye cadenas de herramientas, sistemas operativos, software intermedio y software de diseño.


El sitio web de RISC-V tiene una especificación para las instrucciones en modo usuario y una especificación preliminar para un conjunto de instrucciones privilegiadas de propósito general, para soportar sistemas operativos.<ref>{{Cita web|url=https://riscv.org/|título=RISC-V The Free and Open Instruction Set|fechaacceso=11 de noviembre de 2016|autor=<!-- Unstated -->|apellido=<!-- Unstated -->|sitioweb=RISC-V Foundation}}</ref>
El sitio web de RISC-V tiene una especificación para las instrucciones en modo usuario y una especificación preliminar para un conjunto de instrucciones privilegiadas de propósito general, para soportar sistemas operativos.<ref>{{Cita web|url=https://riscv.org/|título=RISC-V The Free and Open Instruction Set|fechaacceso=11 de noviembre de 2016|sitioweb=RISC-V Foundation}}</ref>


Hay varios diseños de CPU de fuente abierta, incluyendo la Máquina de Berkeley fuera de servicio (BOOM) de 64 bits, [21] Cohete de 64 bits, [22] cinco diseños de CPU Sodor de 32 bits de Berkeley, [23] picorv32 por Clifford Wolf, scr1 de Syntacore, PULPino (Riscy and Zero-Riscy) de ETH Zürich / Universidad de Bolonia.<ref>{{Cita web|url=https://github.com/ucb-bar/riscv-boom/commits/master?after=krZMYRRfnH3CuABbJBwUBMFbUg4rMzQ%3D|título=riscv-boom|fechaacceso=11 de noviembre de 2016|apellido=Celio|nombre=Christopher|sitioweb=GitHub|editorial=Regents of the University of California}}</ref><ref>{{Cita web|url=https://github.com/ucb-bar/rocket-chip|título=rocket-chip|fechaacceso=11 de noviembre de 2016|apellido=Asanović|nombre=Krste|enlaceautor=Krste Asanović|sitioweb=GitHub|editorial=The RISC-V Foundation}}</ref><ref>{{Cita web|url=https://github.com/ucb-bar/riscv-sodor|título=riscv-sodor|fechaacceso=11 de noviembre de 2016|apellido=Celio|nombre=Christopher|sitioweb=GitHub|editorial=Regents of the University of California}}</ref><ref name="pulpino">{{Cita web|url=https://www.pulp-platform.org/|título=PULP: Parallel Ultra Low Power|fechaacceso=5 de agosto de 2016|apellido=Traber|nombre=Andreas|editorial=ETH Zurich, University of Bologna}}</ref> y otros. La CPU Sodor de tres etapas parece ser adecuada para una pequeña CPU integrada. Rocket puede adaptarse a computadoras intermedias compactas y de bajo consumo, como dispositivos personales. BOOM usa gran parte de la infraestructura creada para Rocket, y puede usarse para computadoras personales, de supercomputadoras y de almacén. Tanto picorv como scr1 son implementaciones RV32IMC de clase de microcontrolador (MCU) de 32 bits en Verilog. Los núcleos en PULPino implementan una ISA RV32IMC simple para microcontroladores (Zero-Riscy) o una ISA RV32IMFC más potente con extensiones DSP personalizadas para el procesamiento de señales incrustadas.
Hay varios diseños de CPU de fuente abierta, incluyendo la Máquina de Berkeley fuera de servicio (BOOM) de 64 bits, [21] Cohete de 64 bits, [22] cinco diseños de CPU Sodor de 32 bits de Berkeley, [23] picorv32 por Clifford Wolf, scr1 de Syntacore, PULPino (Riscy and Zero-Riscy) de ETH Zürich / Universidad de Bolonia.<ref>{{Cita web|url=https://github.com/ucb-bar/riscv-boom/commits/master?after=krZMYRRfnH3CuABbJBwUBMFbUg4rMzQ%3D|título=riscv-boom|fechaacceso=11 de noviembre de 2016|apellido=Celio|nombre=Christopher|sitioweb=GitHub|editorial=Regents of the University of California}}</ref><ref>{{Cita web|url=https://github.com/ucb-bar/rocket-chip|título=rocket-chip|fechaacceso=11 de noviembre de 2016|apellido=Asanović|nombre=Krste|sitioweb=GitHub|editorial=The RISC-V Foundation}}</ref><ref>{{Cita web|url=https://github.com/ucb-bar/riscv-sodor|título=riscv-sodor|fechaacceso=11 de noviembre de 2016|apellido=Celio|nombre=Christopher|sitioweb=GitHub|editorial=Regents of the University of California}}</ref><ref name="pulpino">{{Cita web|url=https://www.pulp-platform.org/|título=PULP: Parallel Ultra Low Power|fechaacceso=5 de agosto de 2016|apellido=Traber|nombre=Andreas|editorial=ETH Zurich, University of Bologna}}</ref> y otros. La CPU Sodor de tres etapas parece ser adecuada para una pequeña CPU integrada. Rocket puede adaptarse a computadoras intermedias compactas y de bajo consumo, como dispositivos personales. BOOM usa gran parte de la infraestructura creada para Rocket, y puede usarse para computadoras personales, de supercomputadoras y de almacén. Tanto picorv como scr1 son implementaciones RV32IMC de clase de microcontrolador (MCU) de 32 bits en Verilog. Los núcleos en PULPino implementan una ISA RV32IMC simple para microcontroladores (Zero-Riscy) o una ISA RV32IMFC más potente con extensiones DSP personalizadas para el procesamiento de señales incrustadas.


El software de diseño incluye un compilador de diseño, Chisel, que puede reducir los diseños a Verilog para su uso en dispositivos. El sitio web incluye datos de verificación para probar implementaciones principales.<ref name="chisel">{{Cita web|url=https://chisel.eecs.berkeley.edu/|título=Chisel: Constructing Hardware in a Scala Embedded Language|fechaacceso=12 de febrero de 2015|sitioweb=UC Berkeley|editorial=Regents of the University of California}}</ref>
El software de diseño incluye un compilador de diseño, Chisel, que puede reducir los diseños a Verilog para su uso en dispositivos. El sitio web incluye datos de verificación para probar implementaciones principales.<ref name="chisel">{{Cita web|url=https://chisel.eecs.berkeley.edu/|título=Chisel: Constructing Hardware in a Scala Embedded Language|fechaacceso=12 de febrero de 2015|sitioweb=UC Berkeley|editorial=Regents of the University of California}}</ref>
Línea 65: Línea 88:
Las herramientas de software RISC-V disponibles incluyen una cadena de herramientas de la colección de compiladores GNU (GCC) (con GDB, el depurador), una cadena de herramientas LLVM , el simulador OVPsim (y la biblioteca de modelos de procesadores rápidos RISC-V), el simulador Spike y un simulador en QEMU .
Las herramientas de software RISC-V disponibles incluyen una cadena de herramientas de la colección de compiladores GNU (GCC) (con GDB, el depurador), una cadena de herramientas LLVM , el simulador OVPsim (y la biblioteca de modelos de procesadores rápidos RISC-V), el simulador Spike y un simulador en QEMU .


Existe compatibilidad con el sistema operativo para el núcleo Linux , FreeBSD y NetBSD , pero las instrucciones en modo supervisor no están estandarizadas a partir del 10 de noviembre de 2016 , por lo que este soporte es provisional. El puerto preliminar de FreeBSD para la arquitectura RISC-V se actualizó en febrero de 2016 y se envió en FreeBSD 11.0. Ports de [[Debian GNU/Linux|Debian]]<ref>{{Cita web|url=https://groups.google.com/a/groups.riscv.org/forum/#!msg/sw-dev/u4VcUtB9r94/4HiFYBhXAAAJ|título=Debian GNU/Linux port for RISC-V 64|fechaacceso=19 de julio de 2018|apellido=Montezelo|nombre=Manuel|sitioweb=Google Groups|editorial=Google}}</ref> y [[Fedora (distribución Linux)|Fedora]]<ref>{{Cita web|url=https://fedoraproject.org/wiki/Architectures/RISC-V|título=Architectures/RISC-V|fechaacceso=26 de septiembre de 2016|sitioweb=Fedora Wiki|editorial=Red Hat}}</ref> están estabilizando. Existe un port de Das U-Boot .<ref>{{Cita web|url=https://groups.google.com/a/groups.riscv.org/forum/#!topic/sw-dev/j63wzz2ylY8|título=U-Boot port on RISC-V 32-bit is available|fechaacceso=15 de febrero de 2017|apellido=Begari|nombre=Padmarao|sitioweb=Google Groups|editorial=Microsemi}}</ref> UEFI Spec v2.7 ha definido el enlace RISC-V y un puerto de tianocore ha sido realizado por ingenieros de HPE y se espera que esté actualizado. Hay un puerto preliminar del microkernel seL4 .<ref>{{Cita web|url=https://docs.sel4.systems/Hardware/RISCV.html|título=RISC-V, seL4|fechaacceso=13 de julio de 2018|apellido=Almatary|nombre=Hesham|sitioweb=seL4 Documentation|editorial=Commonwealth Scientific and Industrial Research Organisation (CSIRO)}}</ref><ref>{{Cita web|url=https://github.com/heshamelmatary|título=heshamelmatary|fechaacceso=13 de julio de 2018|apellido=Almatary|nombre=Hesham|sitioweb=GitHub}}</ref> Un simulador existe para correr un RISC-V sistema de Linux en un [[Navegador web|navegador de web]] que utiliza [[Javascript]]. {{Cita web|url=https://github.com/heshamelmatary|título=heshamelmatary|fechaacceso=13 de julio de 2018|apellido=Almatary|nombre=Hesham|sitioweb=GitHub}}
Existe compatibilidad con el sistema operativo para [[GNU/Linux]], [[FreeBSD]] y [[NetBSD]], pero las instrucciones en modo supervisor no están estandarizadas a partir del 10 de noviembre de 2016, por lo que este soporte es provisional. El Ports preliminar de FreeBSD para la arquitectura RISC-V se actualizó en febrero de 2016 y se envió en FreeBSD 11.0.<ref name="freebsdriscv"/><ref name="freebsdriscv-committed"/> Los Ports de [[Debian GNU/Linux|Debian]]<ref>{{Cita web|url=https://groups.google.com/a/groups.riscv.org/forum/#!msg/sw-dev/u4VcUtB9r94/4HiFYBhXAAAJ|título=Debian GNU/Linux port for RISC-V 64|fechaacceso=19 de julio de 2018|apellido=Montezelo|nombre=Manuel|sitioweb=Google Groups|editorial=Google}}</ref> y [[Fedora (distribución Linux)|Fedora]]<ref>{{Cita web|url=https://fedoraproject.org/wiki/Architectures/RISC-V|título=Architectures/RISC-V|fechaacceso=26 de septiembre de 2016|sitioweb=Fedora Wiki|editorial=Red Hat}}</ref> están estabilizando. Existe un port de [[Das U-Boot]].<ref>{{Cita web|url=https://groups.google.com/a/groups.riscv.org/forum/#!topic/sw-dev/j63wzz2ylY8|título=U-Boot port on RISC-V 32-bit is available|fechaacceso=15 de febrero de 2017|apellido=Begari|nombre=Padmarao|sitioweb=Google Groups|editorial=Microsemi}}</ref> [[UEFI|UEFI Spec]] v2.7 ha definido el enlace RISC-V y un puerto de tianocore ha sido realizado por ingenieros de HPE y se espera que esté actualizado. Hay un puerto preliminar del microkernel seL4 .<ref>{{Cita web|url=https://docs.sel4.systems/Hardware/RISCV.html|título=RISC-V, seL4|fechaacceso=13 de julio de 2018|apellido=Almatary|nombre=Hesham|sitioweb=seL4 Documentation|editorial=Commonwealth Scientific and Industrial Research Organisation (CSIRO)}}</ref><ref>{{Cita web|url=https://github.com/heshamelmatary|título=heshamelmatary|fechaacceso=13 de julio de 2018|apellido=Almatary|nombre=Hesham|sitioweb=GitHub}}</ref> Hay un simulador para correr un RISC-V en sistema de Linux en [[Navegador web|navegador de web]] que utiliza [[Javascript]]. {{Cita web|url=https://github.com/heshamelmatary|título=heshamelmatary|fechaacceso=13 de julio de 2018|apellido=Almatary|nombre=Hesham|sitioweb=GitHub}}

El simulador CREATOR <ref>https://doi.org/10.1109/ACCESS.2024.3406935</ref><ref>https://zenodo.org/record/5130302#.YVSL23UzZNg</ref><ref>https://doi.org/10.1109/CLEI53233.2021.9640144</ref><ref>Código fuente de CREATOR en GitHub: https://github.com/creatorsim/creator </ref><ref>CREATOR Web con ejemplo RISC-V: https://creatorsim.github.io/creator/?example_set=default_rv&example=e12 </ref> es portable y permite aprender diversos lenguajes ensamblador de diferentes procesadores (CREATOR dispone de ejemplos con una implementación de las instrucciones RISC-V y MIPS32).

El simulador educativo WepSIM<ref>WepSIM Web con ejemplo RISC-V_im: https://wepsim.github.io/wepsim/ws_dist/wepsim-classic.html?mode=ep&examples_set=Default-RISCV&example=9&simulator=assembly:registers&notify=false</ref><ref>Código fuente de WepSIM en GitHub: https://github.com/wepsim/wepsim</ref>
implementa un subconjunto de instrucciones RISC-V de forma microprogramada (RV32I + M) y permite ejecutar ejemplos de subrutinas en ensamblador.
El simulador WepSIM puede usarse desde un navegador Web, y facilita aprender diversos aspectos de cómo una CPU funciona (
[https://wepsim.github.io/wepsim/ws_dist/?mode=ep&examples_set=Default-MIPS&example=9&simulator=microcode:control_memory&notify=false microprogramación,]
[https://wepsim.github.io/wepsim/ws_dist/wepsim-classic.html?mode=ep&examples_set=Default-RISCV&example=11&simulator=assembly:registers&notify=false interrupciones,]
[https://wepsim.github.io/wepsim/ws_dist/wepsim-classic.html?mode=ep&examples_set=Default-RISCV&example=12&simulator=assembly:registers&notify=false llamadas al sistema,]
etc.) usando ensamblador RISC-V.


El simulador educativo WepSIM <ref>WepSIM Web con ejemplo RISC-V_im: https://wepsim.github.io/wepsim/ws_dist/wepsim-classic.html?mode=ep&example=20&simulator=assembly:registers&notify=false </ref> <ref>Código fuente de WepSIM en GitHub: https://github.com/wepsim/wepsim</ref> implementa un subconjunto de instrucciones RISC-V de forma microprogramada (RV32I + M) y permite ejecutar ejemplos de subrutinas en ensamblador. El simulador WepSIM puede usarse desde un navegador Web, y facilita aprender diversos aspectos de cómo una CPU funciona (microprogramación, interrupciones, llamadas al sistema, etc.) usando ensamblador RISC-V.


== Usuarios ==
== Usuarios ==

=== Comerciales ===
=== Comerciales ===
* SiFive, una compañía establecida específicamente para desarrollar hardware RISC-V, lanzó modelos de procesador en 2017. [33] [34] Estos incluyen un sistema de 64 bits de cuatro núcleos RISC-V SoCa en un chip (SoC). .<ref>{{Cita web|url=https://www.sifive.com/products/hifive1/|título=HiFive1|fechaacceso=10 de julio de 2018|sitioweb=SiFive|fechaarchivo=26 de febrero de 2017|urlarchivo=https://web.archive.org/web/20170226212908/https://www.sifive.com/products/hifive1/|deadurl=yes}}</ref><ref>{{Cita web|url=https://www.crowdsupply.com/sifive/hifive1/|título=Hi-Five1: Open-source Arduino-Compatible Development Kit|fechaacceso=2 de diciembre de 2016|autor=SiFive|sitioweb=Crowd Supply}}</ref><ref>{{Cita web|url=https://www.sifive.com/chip-designer#fu540|título=FU540 SoC CPU|fechaacceso=24 de octubre de 2018|sitioweb=SiFive}}</ref>

* SSyntacore, [36] un miembro fundador de la Fundación RISC-V y uno de los primeros proveedores comerciales de IP RISC-V, desarrolla y otorga licencias a la familia de RISC-V IP desde 2015. A partir de 2018 , la línea de productos incluye ocho 32 - y núcleos de 64 bits, incluido el núcleo SCR1 MCU de código abierto. [37] Los primeros SoC comerciales, basados en Syntacore IP, se demostraron en 2016.<ref>{{Cita web|url=https://riscv.org/2016/12/5th-risc-v-workshop-proceedings/|título=RISC-V workshop proceedings|fechaacceso=11 de diciembre de 2018}}</ref>
* SiFive, una compañía establecida específicamente para desarrollar hardware RISC-V, lanzó modelos de procesador en 2017. [33] [34] Estos incluyen un sistema de 64 bits de cuatro núcleos RISC-V SoCa en un chip (SoC). .<ref>{{Cita web|url=https://www.sifive.com/products/hifive1/|título=HiFive1|fechaacceso=10 de julio de 2018|sitioweb=SiFive}}</ref><ref>{{Cita web|url=https://www.crowdsupply.com/sifive/hifive1/|título=Hi-Five1: Open-source Arduino-Compatible Development Kit|fechaacceso=2 de diciembre de 2016|autor=SiFive|apellido=SiFive|sitioweb=Crowd Supply}}</ref> <ref>{{Cita web|url=https://www.sifive.com/chip-designer#fu540|título=FU540 SoC CPU|fechaacceso=24 de octubre de 2018|sitioweb=SiFive}}</ref>
* SSyntacore, [36] un miembro fundador de la Fundación RISC-V y uno de los primeros proveedores comerciales de IP RISC-V, desarrolla y otorga licencias a la familia de RISC-V IP desde 2015. A partir de 2018 , la línea de productos incluye ocho 32 - y núcleos de 64 bits, incluido el núcleo SCR1 MCU de código abierto. [37] Los primeros SoC comerciales, basados ​​en Syntacore IP se demostraron en 2016.<ref>{{Cita web|url=https://riscv.org/2016/12/5th-risc-v-workshop-proceedings/|título=RISC-V workshop proceedings|fechaacceso=11 de diciembre de 2018}}</ref>
* Andes Technology Corporation, miembro fundador de la Fundación RISC-V [39] que se unió al consorcio en 2016, lanzó sus primeros dos núcleos RISC-V en 2017. Los núcleos, el N25 y el NX25, vienen con un completo diseño de ecosistemas y un Número de socios del RISC-V. Andes está impulsando activamente el desarrollo del ecosistema RISC-V y espera lanzar varios nuevos productos RISC-V en 2018.
* Andes Technology Corporation, miembro fundador de la Fundación RISC-V [39] que se unió al consorcio en 2016, lanzó sus primeros dos núcleos RISC-V en 2017. Los núcleos, el N25 y el NX25, vienen con un completo diseño de ecosistemas y un Número de socios del RISC-V. Andes está impulsando activamente el desarrollo del ecosistema RISC-V y espera lanzar varios nuevos productos RISC-V en 2018.
* Codasip y UltraSoC han desarrollado una propiedad intelectual totalmente compatible para los SOC incorporados RISC-V que combinan los núcleos RISC-V de Codasip y otras IP con la depuración, optimización y análisis de UltraSoC.<ref>{{Cita web|url=http://www.electronicsweekly.com/news/business/codasip-ultrasoc-combine-risc-v-2016-11/|título=Codasip and UltraSoC Combine on RISC-V|fechaacceso=23 de noviembre de 2016|apellido=Manners|nombre=David|sitioweb=Electronics Weekly|editorial=Metropolis International Group, Ltd.}}</ref>
* Codasip y UltraSoC han desarrollado una propiedad intelectual totalmente compatible para los SOC incorporados RISC-V que combinan los núcleos RISC-V de Codasip y otras IP con la depuración, optimización y análisis de UltraSoC.<ref>{{Cita web|url=http://www.electronicsweekly.com/news/business/codasip-ultrasoc-combine-risc-v-2016-11/|título=Codasip and UltraSoC Combine on RISC-V|fechaacceso=23 de noviembre de 2016|apellido=Manners|nombre=David|sitioweb=Electronics Weekly|editorial=Metropolis International Group, Ltd.}}</ref>
* Imperas ha desarrollado una familia de modelos de procesadores rápidos para los diferentes subconjuntos de variantes IS32 RV32GC y RV64GC que forman parte de las distribuciones de simulador precisas de instrucciones OVPsim utilizadas para el desarrollo de software integrado.
* Imperas ha desarrollado una familia de modelos de procesadores rápidos para los diferentes subconjuntos de variantes IS32 RV32GC y RV64GC que forman parte de las distribuciones de simulador precisas de instrucciones OVPsim utilizadas para el desarrollo de software integrado.
* GreenWaves Technologies anunció la disponibilidad de GAP8, un controlador de 32 bits 1 más 8 núcleos informáticos, SoC de 32 bits y placa de desarrollo en febrero de 2018. Su placa de desarrollo GAPuino GAP8 comenzó a distribuirse en mayo de 2018. <ref>{{Cita web|url=https://www.cnx-software.com/2018/02/27/greenwaves-gap8-is-a-low-power-risc-v-iot-processor-optimized-for-artificial-intelligence-applications/|título=GreenWaves GAP8 is a Low Power RISC-V IoT Processor Optimized for Artificial Intelligence Applications|fechaacceso=4 de marzo de 2018|sitioweb=CNXSoft: Embedded Systems News}}</ref><ref>{{Cita noticia|título=AI Comes to Sensing Devices|url=https://www.eetimes.com/document.asp?doc_id=1333003|fecha=26 de febrero de 2018|fechaacceso=10 de julio de 2018}}</ref><ref>{{cite press release|url=https://greenwaves-technologies.com/en/gap8-software-development-kit-and-gapuino-development-board/|title=GreenWaves Technologies Announces Availability of GAP8 Software Development Kit and GAPuino Development Board|fecha=22 de mayo de 2018}}</ref>
* GreenWaves Technologies anunció la disponibilidad de GAP8, un controlador de 32 bits 1 más 8 núcleos informáticos, SoC de 32 bits y placa de desarrollo en febrero de 2018. Su placa de desarrollo GAPuino GAP8 comenzó a distribuirse en mayo de 2018.<ref>{{Cita web|url=https://www.cnx-software.com/2018/02/27/greenwaves-gap8-is-a-low-power-risc-v-iot-processor-optimized-for-artificial-intelligence-applications/|título=GreenWaves GAP8 is a Low Power RISC-V IoT Processor Optimized for Artificial Intelligence Applications|fechaacceso=4 de marzo de 2018|sitioweb=CNXSoft: Embedded Systems News}}</ref><ref>{{Cita noticia|título=AI Comes to Sensing Devices|url=https://www.eetimes.com/document.asp?doc_id=1333003|fecha=26 de febrero de 2018|fechaacceso=10 de julio de 2018}}</ref><ref>{{cite press release|url=https://greenwaves-technologies.com/en/gap8-software-development-kit-and-gapuino-development-board/|title=GreenWaves Technologies Announces Availability of GAP8 Software Development Kit and GAPuino Development Board|fecha=22 de mayo de 2018}}</ref>
* Hex Five anunció la disponibilidad general de MultiZone Security: el primer entorno de ejecución confiable (TEE) de RISC-V que utiliza el estándar ISA de RISC-V y las extensiones de modo privilegiado. <ref>{{Cita web|url=https://hex-five.com/press/hex-five-adds-multizone-security-to-sifive-software-ecosystem/|título=Hex Five Security Adds MultiZone Trusted Execution Environment to the SiFive Software Ecosystem|fechaacceso=13 de septiembre de 2018|sitioweb=Hex Five Security}}</ref>
* Hex Five anunció la disponibilidad general de MultiZone Security: el primer entorno de ejecución confiable (TEE) de RISC-V que utiliza el estándar ISA de RISC-V y las extensiones de modo privilegiado.<ref>{{Cita web|url=https://hex-five.com/press/hex-five-adds-multizone-security-to-sifive-software-ecosystem/|título=Hex Five Security Adds MultiZone Trusted Execution Environment to the SiFive Software Ecosystem|fechaacceso=13 de septiembre de 2018|sitioweb=Hex Five Security}}</ref>
* CloudBEAR es una empresa de procesadores IP que desarrolla sus propios núcleos RISC-V para una amplia gama de aplicaciones. <ref>{{Cita web|url=https://cloudbear.ru/|título=CloudBEAR|fechaacceso=16 de octubre de 2018}}</ref>{{As of|2018}}
* CloudBEAR es una empresa de procesadores IP que desarrolla sus propios núcleos RISC-V para una amplia gama de aplicaciones.<ref>{{Cita web|url=https://cloudbear.ru/|título=CloudBEAR|fechaacceso=16 de octubre de 2018}}</ref>{{As of|2018}}
* En 2020, el sector estratégico y de defensa de la India comenzó a utilizar el procesador [[SHAKTI - Microprocessor & Microcontroller#Risecreek|Risecreek]] basado en RISC-V de 64 bits de 100-350 MHz desarrollado por los [[Institutos Indios de Tecnología]] que es fabricado por [[Intel]] con una litografía de 22 nm [[FinFET]].<ref>{{Cite news|last=Desikan|first=Shubashree|date=2018-08-06|title=IIT-Madras powers up a desi chip|language=en-IN|work=The Hindu|url=https://www.thehindu.com/sci-tech/technology/iit-madras-powers-up-a-desi-chip/article24609946.ece|access-date=2020-09-25|url-access=subscription|issn=0971-751X}}</ref><ref name=":0">{{Cite web|title=Meet India's Atmanirbhar Microprocessor chip 'Moushik', meant for IoT devices|url=https://www.wionews.com/india-news/meet-indias-atmanirbhar-microprocessor-chip-moushik-meant-for-iot-devices-329966|access-date=2020-09-25|website=WION|language=en}}</ref>


=== En desarrollo ===
=== En desarrollo ===
* El [[Institutos Indios de Tecnología|Instituto Indio de Tecnología de Madras]] (IIT-Madras) está desarrollando seis diseños de CPU de código abierto RISC-V para seis usos distintos, desde una pequeña CPU de 32 bits para Internet de las cosas (IoT) hasta grandes CPU de 64 bits diseñadas para computadoras de almacén como granjas de servidores basadas en las tecnologías RapidIO y Hybrid Memory Cube.<ref>{{Cite web|last=Halfacree|first=Gareth|date=2021-06-10|title=RISC-V boffins lay out a plan for bringing the architecture to high-performance computing|url=https://www.theregister.com/2021/06/10/riscv_hpc/ |access-date=2021-07-09|website=The Register|language=en}}</ref><ref name="shakti"/><ref name="iitmadrasospp"/> RISE inició con éxito Moushik de 32 bits para la aplicación de tarjetas de crédito, máquinas de votación electrónica (EVM), cámaras de vigilancia, cerraduras de seguridad y sistemas de gestión de salud personalizados.<ref name=":0"/><ref>{{Cite web|date=2020-09-24|title=IIT Madras Develops and Boots up MOUSHIK Microprocessor for IoT Devices|url=https://www.iitm.ac.in/happenings/press-releases-and-coverages/iit-madras-develops-and-boots-moushik-microprocessor-iot |access-date=2021-07-09|website=IIT Madras}}</ref>

* Nvidia planea usar RISC-V para reemplazar su procesador Falcon en sus tarjetas gráficas GeForce .<ref>{{Cita vídeo|url=https://www.youtube.com/watch?v=gg1lISJfJI0|título=NVIDIA RISC V Evaluation Story Joe Xie|autor=
* El Instituto Indio de Tecnología de Madras está desarrollando seis diseños de CPU de código abierto RISC-V para seis usos distintos, desde una pequeña CPU de 32 bits para Internet de las cosas (IoT) hasta grandes CPU de 64 bits diseñadas para computadoras de almacén como granjas de servidores basadas en las tecnologías RapidIO y Hybrid Memory Cube.
RISC-V International|}}</ref>
* Nvidia planea usar RISC-V para reemplazar su procesador Falcon en sus tarjetas gráficas GeForce .<ref>{{Cita vídeo|url=https://www.youtube.com/watch?v=gg1lISJfJI0}}
</ref>
* ASTC desarrolló una CPU RISC-V para circuitos integrados incrustados.<ref>{{cite mailing list|last=Ashenden|first=Peter|fecha=9 de noviembre de 2016|title=Re: [isa-dev] RISC V ISA for embedded systems|quote=At ASTC (www.astc-design.com), we have an implementation of RV32EC as a synthesizable IP core intended for small embedded applications, such as smart sensors and IoT.|url=https://groups.google.com/a/groups.riscv.org/d/msg/isa-dev/j2okI7akT74/BQdUwjMRAgAJ|mailing-list=RISC-V ISA Dev|website=Google Groups|publisher=Google|access-date=10 de noviembre de 2016}}</ref>
* ASTC desarrolló una CPU RISC-V para circuitos integrados incrustados.<ref>{{cite mailing list|last=Ashenden|first=Peter|fecha=9 de noviembre de 2016|title=Re: [isa-dev] RISC V ISA for embedded systems|quote=At ASTC (www.astc-design.com), we have an implementation of RV32EC as a synthesizable IP core intended for small embedded applications, such as smart sensors and IoT.|url=https://groups.google.com/a/groups.riscv.org/d/msg/isa-dev/j2okI7akT74/BQdUwjMRAgAJ|mailing-list=RISC-V ISA Dev|website=Google Groups|publisher=Google|access-date=10 de noviembre de 2016}}</ref>
* Adapteva planea utilizar RISC-V, en un sucesor de su producto acelerador de muchos puntos [49]
* Adapteva planea utilizar RISC-V, en un sucesor de su producto acelerador de muchos puntos [49]
* lowRISC es un proyecto sin fines de lucro para implementar un sistema de hardware de fuente completamente abierta en un chip (SoC) basado en el RISC-V ISA de 64 bits. 
* lowRISC es un proyecto sin fines de lucro para implementar un sistema de hardware de fuente completamente abierta en un chip (SoC) basado en el RISC-V ISA de 64 bits.<ref name="lowrisc"/>
* El Laboratorio de Computación de la Universidad de Cambridge , en colaboración con el Proyecto FreeBSD , ha adaptado ese sistema operativo a RISC-V de 64 bits para utilizarlo como una plataforma de investigación de hardware y software. .
* El Laboratorio de Computación de la Universidad de Cambridge, en colaboración con el [[FreeBSD|Proyecto FreeBSD]], ha adaptado ese sistema operativo a RISC-V de 64 bits para utilizarlo como una plataforma de investigación de hardware y software.<ref name="freebsdriscv-committed"/>
* ETH Zúrich y la Universidad de Bolonia han desarrollado de manera cooperativa el procesador de código abierto RISC-V PULPino [51] como parte del proyecto Parallel Ultra-Low Power (PULP) para la computación IoT eficiente en energía.<ref>{{Cita web|url=https://github.com/pulp-platform/pulpino|título=PULPino GitHub project|fechaacceso=2 de febrero de 2018|sitioweb=GitHub}}</ref><ref>{{Cita web|url=https://pulp-platform.org/|título=PULP Platform|fechaacceso=2 de febrero de 2018|sitioweb=PULP Platform}}</ref>
* ETH Zúrich y la Universidad de Bolonia han desarrollado de manera cooperativa el procesador de código abierto RISC-V PULPino [51] como parte del proyecto Parallel Ultra-Low Power (PULP) para la computación IoT eficiente en energía.<ref>{{Cita web|url=https://github.com/pulp-platform/pulpino|título=PULPino GitHub project|fechaacceso=2 de febrero de 2018|sitioweb=GitHub}}</ref><ref>{{Cita web|url=https://pulp-platform.org/|título=PULP Platform|fechaacceso=2 de febrero de 2018|sitioweb=PULP Platform}}</ref>
* Western Digital anunció un plan para integrar procesadores RISC-V en sus futuros productos. [53] .<ref>{{Cita web|url=https://www.wdc.com/about-wd/newsroom/press-room/2017-11-28-western-digital-to-accelerate-the-future-of-next-generation-computing-architectures-for-big-data-and-fast-data-environments.html|título=Western Digital to Accelerate the Future of Next-Generation Computing Architectures for Big Data and Fast Data Environments|fecha=28 de noviembre de 2017|editorial=Western Digital}}</ref>
* Western Digital anunció un plan para integrar procesadores RISC-V en sus futuros productos. [53] .<ref>{{Cita web|url=https://www.wdc.com/about-wd/newsroom/press-room/2017-11-28-western-digital-to-accelerate-the-future-of-next-generation-computing-architectures-for-big-data-and-fast-data-environments.html|título=Western Digital to Accelerate the Future of Next-Generation Computing Architectures for Big Data and Fast Data Environments|fecha=28 de noviembre de 2017|editorial=Western Digital}}</ref>
* Esperanto Technologies anunció que están desarrollando tres procesadores basados ​​en RISC-V: el núcleo de alto rendimiento ET-Maxion , el núcleo de eficiencia energética ET-Minion y el procesador de gráficos ET-Graphics .<ref>{{Cita web|url=https://fuse.wikichip.org/news/686/esperanto-exits-stealth-mode-aims-at-ai-with-a-4096-core-7nm-risc-v-monster/|título=Esperanto exits stealth mode, aims at AI with a 4,096 core 7nm RISC-V monster|fechaacceso=2 de enero de 2018|sitioweb=wikichip.org|idioma=en-US}}</ref>
* Esperanto Technologies anunció que están desarrollando tres procesadores basados en RISC-V: el núcleo de alto rendimiento ET-Maxion, el núcleo de eficiencia energética ET-Minion y el procesador de gráficos ET-Graphics .<ref>{{Cita web|url=https://fuse.wikichip.org/news/686/esperanto-exits-stealth-mode-aims-at-ai-with-a-4096-core-7nm-risc-v-monster/|título=Esperanto exits stealth mode, aims at AI with a 4,096 core 7nm RISC-V monster|fechaacceso=2 de enero de 2018|sitioweb=wikichip.org|idioma=en-US}}</ref>


== Diseño ==
== Diseño ==

=== ISA Base y extensiones ===
=== ISA Base y extensiones ===
RISC-V tiene un diseño modular, que consiste en partes de base alternativas, con extensiones opcionales agregadas. 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 las instrucciones (y su codificación), el flujo de control, los registros (y sus tamaños), la memoria y el direccionamiento, la manipulación lógica (es decir, el número entero) y los elementos auxiliares. Solo la base puede implementar una computadora de propósito general simplificada, con soporte completo de software, incluido un compilador de propósito general.
RISC-V tiene un diseño modular, que consiste en partes de base alternativas, con extensiones opcionales agregadas. 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 las instrucciones (y su codificación), el flujo de control, los registros (y sus tamaños), la memoria y el direccionamiento, la manipulación lógica (es decir, el número entero) y los elementos auxiliares. Solo la base puede implementar una computadora de propósito general simplificada, con soporte completo de software, incluido un compilador de propósito general.
Línea 102: Línea 131:
Las extensiones estándar están especificadas para funcionar con todas las bases estándar y entre sí sin conflicto.
Las extensiones estándar están especificadas para funcionar con todas las bases estándar y entre sí sin conflicto.


Muchas computadoras RISC-V pueden implementar la extensión compacta para reducir el consumo de energía, el tamaño del código y el uso de la memoria. [4] También hay planes futuros para admitir hipervisores y virtualización. [19] Junto con una extensión de conjunto de instrucciones de supervisor, S, un RVGC define todas las instrucciones necesarias para admitir de manera conveniente un sistema operativo de estilo Unix , interfaz de sistema operativo portátil ( POSIX ).
Muchas computadoras RISC-V pueden implementar la extensión compacta para reducir el consumo de energía, el tamaño del código y el uso de la memoria. También hay planes futuros para admitir hipervisores y virtualización. [19] Junto con una extensión de conjunto de instrucciones de supervisor, S, un RVGC define todas las instrucciones necesarias para admitir de manera conveniente un sistema operativo de estilo Unix, interfaz de sistema operativo portátil ( POSIX ).
{| data-vivaldi-spatnav-clickable="1" class="wikitable plainrowheaders"
{| data-vivaldi-spatnav-clickable="1" class="wikitable plainrowheaders"
|+ISA base y extensiones
|+ISA base y extensiones
Línea 113: Línea 142:
|-
|-
! scope="row" |RV32I
! scope="row" |RV32I
|Instrucción de Entero de la base Puso, 32-bits
|Conjunto de instrucciones de base entera, 32-bits
|2.0|| {{Yes|Cerrada}}
|2.0|| {{Yes|Cerrada}}
|-
|-
! scope="row" |RV32E
! scope="row" |RV32E
|Conjunto de instrucciones de base entera(embedded), 32-bits, 16 registros
|Conjunto de instrucciones de base entera (embedded), 32-bits, 16 registros
|1.9|| {{No|Abierta}}
|1.9|| {{No|Abierta}}
|-
|-
! scope="row" |RV64I
! scope="row" |RV64I
|Conjunto de instrucciones de base entera, 64-bits
|Conjunto de instrucciones de base entera, 64-bits
|2.0<ref>{{cite web|last=Waterman|first=Andrew|last2=Lee|first2=Yunsup|last3=Avizienas|first3=Rimas|last4=Patterson|first4=David|author-link4=David Patterson (computer scientist)|last5=Asanović|first5=Krste|author-link5=Krste Asanović|title=Draft Privileged ISA Specification 1.9|url=https://riscv.org/specifications/privileged-isa/|website=RISC-V|publisher=RISC-V Foundation|access-date=30 de agosto de 2016}}</ref>
|2.0<ref>{{cite web|last=Waterman|first=Andrew|last2=Lee|first2=Yunsup|last3=Avizienas|first3=Rimas|last4=Patterson|first4=David|last5=Asanović|first5=Krste|title=Draft Privileged ISA Specification 1.9|url=https://riscv.org/specifications/privileged-isa/|website=RISC-V|publisher=RISC-V Foundation|access-date=30 de agosto de 2016|fechaarchivo=26 de agosto de 2018|urlarchivo=https://web.archive.org/web/20180826095957/https://riscv.org/specifications/privileged-isa/|deadurl=yes}}</ref>
|-
|-
! scope="row" |RV128I
! scope="row" |RV128I
Línea 190: Línea 219:
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, taquigrafía para RV64IMAFDC.
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, taquigrafía para RV64IMAFDC.


Se ha propuesto un esquema de denominación con Zxxx para extensiones estándar y Yxxx para extensiones no estándar (específicas del proveedor). Por ejemplo, la extensión Ztso para el pedido total de tiendas, un modelo alternativo de consistencia de memoria para el ordenamiento de memoria débil, se encuentra en discusión.<ref>{{Cita vídeo|url=https://www.youtube.com/watch?v=PE3pFZm2OA0}}
Se ha propuesto un esquema de denominación con Zxxx para extensiones estándar y Yxxx para extensiones no estándar (específicas del proveedor). Por ejemplo, la extensión Ztso para el pedido total de tiendas, un modelo alternativo de consistencia de memoria para el ordenamiento de memoria débil, se encuentra en discusión.<ref>{{Cita vídeo|url=https://www.youtube.com/watch?v=PE3pFZm2OA0|título=Memory Consistency Model Status Update|autor=RISC-V International}}</ref>
</ref>


=== Conjuntos de registro ===
=== Conjuntos de registro ===
RISC-V tiene 32 (o 16 en la variante embebidas) registros enteros y, cuando se implementa la extensión de punto flotante , 32 registros de punto flotante. A excepción de las instrucciones de acceso a la memoria, las instrucciones solo se refieren a los registros.
RISC-V tiene 32 (o 16 en la variante embebidas) registros enteros y, cuando se implementa la extensión de punto flotante, 32 registros de punto flotante. A excepción de las instrucciones de acceso a la memoria, las instrucciones solo se refieren a los registros.


El primer registro de enteros es un registro de cero, y el resto son registros de propósito general. Una escritura para el registro cero no tiene ningún efecto, y una lectura siempre proporciona 0. Usar el registro cero como un marcador de posición hace que el conjunto de instrucciones sea más simple. Por ejemplo, {{code|move rx to ry}} se convierte en {{code|add r0 to rx and store in ry}}.
El primer registro de enteros es un registro de cero, y el resto son registros de propósito general. Una escritura para el registro cero no tiene ningún efecto, y una lectura siempre proporciona 0. Usar el registro cero como un marcador de posición hace que el conjunto de instrucciones sea más simple. Por ejemplo, {{code|move rx to ry}} se convierte en {{code|add r0 to rx and store in ry}}.


Existen registros de control y estado, pero los programas en modo usuario pueden acceder solo a aquellos utilizados para la medición del rendimiento y la gestión de punto flotante.
Existen registros de control y estado, pero los programas en modo usuario pueden acceder solo 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 innecesarios, demasiado complejos y quizás demasiado lentos.
No existen instrucciones para guardar y restaurar múltiples registros. Se pensaba que eran innecesarios, demasiado complejos y quizás demasiado lentos.<ref name="isa2.1"/>


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


La memoria consta de y se trata como bytes de 8 bits, con las palabras en orden [[Endianness|little-endian]]. Se puede acceder a las palabras, hasta el tamaño de registro, con las instrucciones de carga y almacenamiento.
La memoria consta de y se trata como bytes de 8 bits, con las palabras en orden [[Endianness|little-endian]]. Se puede acceder a las palabras, hasta el tamaño de registro, con las instrucciones de carga y almacenamiento.


Las direcciones de memoria a las que se accede no necesitan estar alineadas a su ancho de palabra, pero los accesos a las direcciones alineadas siempre serán los más rápidos. Como, por ejemplo, las CPU simples pueden implementar accesos no alineados con una emulación de software lenta basada en una interrupción de falla de alineación.
Las direcciones de memoria a las que se accede no necesitan estar alineadas a su ancho de palabra, pero los accesos a las direcciones alineadas siempre serán los más rápidos. Como, por ejemplo, las CPU simples pueden implementar accesos no alineados con una emulación de software lenta basada en una interrupción de falla de alineación.


RISC-V administra los sistemas de memoria que se comparten entre CPU o [[Hilo (informática)|subprocesos]] al garantizar que un subproceso de ejecución siempre vea sus operaciones de memoria en el orden programado. Pero entre los subprocesos y los dispositivos de E / S, RISC-V se simplifica: no garantiza el orden de las operaciones de memoria, excepto por instrucciones específicas, como la {{code|fence}} {{code|fence}}.
RISC-V administra los sistemas de memoria que se comparten entre CPU o [[Hilo (informática)|subprocesos]] al garantizar que un subproceso de ejecución siempre vea sus operaciones de memoria en el orden programado. Pero entre los subprocesos y los dispositivos de E / S, RISC-V se simplifica: no garantiza el orden de las operaciones de memoria, excepto por instrucciones específicas, como la instrucción {{code|fence}}.


Una {{code|fence}} {{code|fence}} la instrucción garantiza que los resultados de las operaciones predecesoras son visibles para las operaciones sucesivas de otros subprocesos o dispositivos de E / S. {{code|fence}} {{code|fence}} puede garantizar el orden de las combinaciones de memoria y operaciones de E / S asignadas 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, {{code|fence}} {{code|fence}} no los obliga a esperarse el uno al otro. Una CPU con un hilo puede decodificar la {{code|fence}} {{code|fence}} como {{code|nop}} {{code|nop}}.
Una instrucción {{code|fence}} garantiza que los resultados de las operaciones predecesoras sean visibles para las operaciones sucesivas de otros subprocesos o dispositivos de E / S. {{code|fence}} puede garantizar el orden de las combinaciones de memoria y operaciones de E / S asignadas 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, {{code|fence}} no los obliga a esperarse el uno al otro. Una CPU con un hilo puede decodificar la instrucción {{code|fence}} como {{code|nop}}.


Al igual que muchos conjuntos de instrucciones RISC (y algunos [[Complex instruction set computing|conjuntos de instrucciones de computadora de conjuntos de instrucciones complejas]] (CISC), como [[X86|las]] familias [[x86]] y [[IBM S/360|IBM System / 360]] ), RISC-V carece de modos de dirección que escriben en los registros. Por ejemplo, no se incrementa automáticamente.
Al igual que muchos conjuntos de instrucciones RISC (y algunos [[Complex instruction set computing|conjuntos de instrucciones de computadora de conjuntos de instrucciones complejas]] (CISC), como [[X86|las]] familias [[x86]] y [[IBM S/360|IBM System / 360]] ), RISC-V carece de modos de dirección que escriben en los registros. Por ejemplo, no se incrementa automáticamente.


RISC-V es little-endian para parecerse a otras computadoras familiares exitosas, por ejemplo, [[x86]]. Esto también reduce la complejidad de la CPU y los costos ligeramente porque lee todos los tamaños de palabras en el mismo orden. Por ejemplo, el conjunto de instrucciones RISC-V se decodifica comenzando en el byte con la dirección más baja de la instrucción. La especificación deja abierta la posibilidad de sistemas big-endian o bi-endian no estándar.
RISC-V es little-endian para parecerse a otras computadoras familiares exitosas, por ejemplo, [[x86]]. Esto también reduce la complejidad de la CPU y los costos ligeramente porque lee todos los tamaños de palabras en el mismo orden. Por ejemplo, el conjunto de instrucciones RISC-V se decodifica comenzando en el byte con la dirección más baja de la instrucción. La especificación deja abierta la posibilidad de sistemas big-endian o bi-endian no estándar.


Algunas CPU RISC (como [[MIPS (procesador)|MIPS]] , [[PowerPC]] , [[DLX]] y RISC-I de Berkeley) colocan 16 bits de desplazamiento en las cargas y almacenes. Establecen los 16 bits superiores mediante una instrucción de ''palabra superior de carga''. Esto permite que los valores de media palabra superior se configuren fácilmente, sin cambiar los bits. Sin embargo, la mayoría del uso de la instrucción de media palabra superior hace constantes de 32 bits, como direcciones. RISC-V utiliza una combinación similar a [[Sun SPARC|SPARC]] de compensaciones de 12 bits e instrucciones ''superiores de configuración de'' 20 bits. El desplazamiento más pequeño de 12 bits ayuda a las instrucciones compactas, de carga y almacenamiento de 32 bits a seleccionar dos de los 32 registros, pero aún tienen suficientes bits para admitir la codificación de instrucciones de longitud variable de RISC-V.
Algunas CPU RISC (como [[MIPS (procesador)|MIPS]] , [[PowerPC]] , [[DLX]] y RISC-I de Berkeley) colocan 16 bits de desplazamiento en las cargas y almacenes. Establecen los 16 bits superiores mediante una instrucción de ''palabra superior de carga''. Esto permite que los valores de media palabra superior se configuren fácilmente, sin cambiar los bits. Sin embargo, la mayoría del uso de la instrucción de media palabra superior hace constantes de 32 bits, como direcciones. RISC-V utiliza una combinación similar a [[Sun SPARC|SPARC]] de compensaciones de 12 bits e instrucciones ''superiores de configuración de'' 20 bits. El desplazamiento más pequeño de 12 bits ayuda a las instrucciones compactas, de carga y almacenamiento de 32 bits a seleccionar dos de los 32 registros, pero aún tienen suficientes bits para admitir la codificación de instrucciones de longitud variable de RISC-V.


=== Inmediatos ===
=== Inmediatos ===
RISC-V maneja constantes de 32 bits y direcciones con instrucciones que establecen los 20 bits superiores de un registro de 32 bits. Carga superior inmediata {{code|lui}} {{code|lui}} carga 20 bits en los bits 31 a 12. Otra instrucción, {{code|auipc}} {{code|auipc}} genera los mismos 20 bits de dirección superior agregando un desplazamiento al contador del programa y almacenando el resultado en un registro base. Esto permite que el código independiente de la posición tenga direcciones de 32 bits en relación con el contador del programa. El registro base se puede utilizar como está con las compensaciones de 12 bits de las cargas y las tiendas. Si es necesario, {{code|addi}} {{code|addi}} Puede establecer los 12 bits más bajos de un registro. En ISA de 64 bits, {{code|lui}} {{code|lui}} y {{code|auipc}} {{code|auipc}} sign-extender el resultado a 64 bits.
RISC-V maneja constantes de 32 bits y direcciones con instrucciones que establecen los 20 bits superiores de un registro de 32 bits. La instrucción carga superior inmediata {{code|lui}} carga 20 bits en los bits 31 a 12. Otra instrucción, {{code|auipc}} genera los mismos 20 bits de dirección superior agregando un desplazamiento al contador del programa y almacenando el resultado en un registro base. Esto permite que el código independiente de la posición tenga direcciones de 32 bits en relación con el contador del programa. El registro base se puede utilizar como está con las compensaciones de 12 bits de las cargas y las tiendas. Si es necesario, {{code|addi}} puede establecer los 12 bits más bajos de un registro. En el ISA de 64 bits, {{code|lui}} y {{code|auipc}} extienden el signo del resultado a 64 bits.


Algunas CPU rápidas pueden interpretar combinaciones de instrucciones como instrucciones ''fusionadas'' simples. {{code|lui}} {{code|lui}} o {{code|auipc}} {{code|auipc}} Pueden ser buenos candidatos para fusionarse con cargas o almacenes.
Algunas CPU rápidas pueden interpretar combinaciones de instrucciones como instrucciones ''fusionadas'' simples. {{code|lui}} o {{code|auipc}} pueden ser buenos candidatos para fusionarse con cargas o almacenes.


=== Subrutinas llamadas, saltos y ramas. ===
=== Subrutinas llamadas, saltos y bifurcaciones. ===
Llamada de subrutina de RISC-V {{code|jal}} {{code|jal}} (saltar y vincular) coloca su dirección de retorno en un registro. Esto es más rápido en muchos diseños de computadoras, porque guarda un acceso a la memoria en comparación con los sistemas que empujan una dirección de retorno directamente en una pila en la memoria. {{code|jal}} {{code|jal}} tiene un offset de 20 bits firmado (complemento de 2). 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 de manera uniforme por 4), la CPU puede forzar una [[Manejo de excepciones|excepción]].
Llamada de subrutina de RISC-V {{code|jal}} (saltar y vincular) 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 empujan una dirección de retorno directamente en una pila en la memoria. La instrucción {{code|jal}} tiene un offset de 20 bits con signo (complemento de 2). 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 de manera uniforme por 4), la CPU puede forzar una [[Manejo de excepciones|excepción]].


Las CPU RISC-V saltan a direcciones calculadas utilizando un ''salto y un registro de enlace'' , {{code|jalr}} {{code|jalr}} instrucción. {{code|jalr}} {{code|jalr}} es similar a {{code|jal}} {{code|jal}} , pero obtiene su dirección de destino agregando un desplazamiento de 12 bits a un registro base. (En contraste, {{code|jal}} {{code|jal}} agrega una mayor compensación de 20 bits a la PC. )
Las CPU RISC-V saltan a direcciones calculadas utilizando un ''salto y un registro de enlace'' con la instrucción {{code|jalr}}. La instrucción {{code|jalr}} es similar a {{code|jal}}, pero obtiene su dirección de destino agregando un desplazamiento de 12 bits a un registro base. (En contraste, {{code|jal}} agrega una mayor compensación de 20 bits a la PC.)


{{code|jalr}} {{code|jalr}} El formato de bits es como las cargas y almacenes relativos al registro. Como ellos, {{code|jalr}} {{code|jalr}} se puede usar con las instrucciones que establecen los 20 bits superiores de un registro base para hacer ramas de 32 bits, ya sea a una dirección absoluta (usando {{code|lui}} {{code|lui}} ) o una PC-relativa (utilizando {{code|auipc}} {{code|auipc}} para el código independiente de la posición ). (El uso de una dirección de base cero constante permite realizar llamadas de una sola instrucción a una dirección pequeña (la compensación), positiva o negativa fija. )
Para {{code|jalr}} el formato de bits es como las cargas y almacenamientos relativos al registro. Como ellos, {{code|jalr}} se pueden usar con las instrucciones que establecen los 20 bits superiores de un registro base para hacer bifurcaciones de 32 bits, ya sea a una dirección absoluta (usando {{code|lui}}) o una PC-relativa (utilizando {{code|auipc}} para el código independiente de la posición). (El uso de una dirección de base cero constante permite realizar llamadas de una sola instrucción a una dirección pequeña (la compensación), positiva o negativa fija.)


RISC-V recicla {{code|jal}} {{code|jal}} y {{code|jalr}} {{code|jalr}} para obtener saltos incondicionales de 20 bits relativos a PC y saltos incondicionales de 12 bits basados en registros. Los saltos solo hacen que el enlace registre 0 para que no se guarde ninguna dirección de retorno.
RISC-V recicla {{code|jal}} y {{code|jalr}} para obtener saltos incondicionales de 20 bits relativos a PC y saltos incondicionales de 12 bits basados en registros. Los saltos solo hacen que se enlace el registro 0 para que no se guarde ninguna dirección de retorno.


RISC-V también recicla {{code|jalr}} {{code|jalr}} para regresar de una subrutina: para hacer esto, {{code|jalr}} {{code|jalr}} El registro base se establece como el registro de vinculación guardado por {{code|jal}} {{code|jal}} o {{code|jalr}} {{code|jalr}}. {{code|jalr}} {{code|jalr}} El desplazamiento es cero y el registro de vinculación es cero, de modo que no hay desplazamiento y no se guarda ninguna dirección de retorno.
RISC-V también recicla {{code|jalr}} para retornar de una subrutina: para hacer esto, en {{code|jalr}} el registro base se establece como el registro de vinculación guardado por {{code|jal}} o {{code|jalr}}. En {{code|jalr}} el desplazamiento es cero y el registro de vinculación 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 ''guardar varias'' instrucciones de registro ''múltiple'' o ''restaurar''. Se pensó que esto hacía que la CPU fuera demasiado compleja y posiblemente lenta. Esto puede tomar más espacio de código. Los diseñadores planearon reducir el tamaño del código con las rutinas de la biblioteca para guardar y restaurar registros.
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 ''guardar varias'' instrucciones de registro ''múltiple'' o ''restaurar''. Se pensó que esto hacía que la CPU fuera demasiado compleja y posiblemente lenta.<ref name="riscvc"/> Esto puede tomar más espacio de código. Los diseñadores planearon reducir el tamaño del código con las rutinas de la biblioteca para guardar y restaurar registros.<ref name="isacompressed"/>


RISC-V no tiene [[Registro de estado|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 se vuelvan más complejas al forzar las 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.
RISC-V no tiene [[Registro de estado|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 se vuelvan más complejas al forzar las 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.


En cambio, RISC-V tiene ramas cortas que realizan comparaciones: igual, no igual, menor que, sin signo menor que, mayor que o igual y sin signo mayor o igual que. Se implementan diez operaciones de comparación de ramas con solo seis instrucciones, invirtiendo el orden de los operandos en el [[Lenguaje ensamblador|ensamblador]]. Por ejemplo, ''bifurcar si es mayor de lo que'' puede hacerse con ''menor que'' con un orden inverso de operandos.
En cambio, RISC-V tiene bifurcaciones cortas que realizan comparaciones: igual, no igual, menor que, sin signo menor que, mayor que o igual y sin signo mayor o igual que. Se implementan diez operaciones de comparación de bifurcaciones con solo seis instrucciones, invirtiendo el orden de los operandos en el [[Lenguaje ensamblador|ensamblador]]. Por ejemplo, ''bifurcar si es mayor de lo que'' puede hacerse con ''menor que'' con un orden inverso de operandos.


Las ramas de comparación tienen un rango firmado de doce bits y saltan en relación con la PC.
Las bifurcaciones de comparación tienen un rango firmado de doce bits y saltan en relación con la PC.


ISA RISC-V requiere predicciones de rama por defecto para las CPU: debería predecirse ''tomaron'' las ramas condicionales hacia atrás. Las ramas condicionales hacia adelante predicen ''no tomadas''. Las predicciones son fáciles de decodificar en una CPU segmentada: las direcciones de las sucursales son números firmados que se agregan a la PC. Las ramas hacia atrás tienen direcciones de [[complemento a dos]] negativas y, por lo tanto, tienen una en el bit más significativo de la dirección. Las ramas adelantadas tienen un cero. El bit más significativo se encuentra en una ubicación fija en el código de operación para acelerar la tubería. Las CPU complejas pueden agregar [[Predictor de saltos|predictores de rama]] para que funcionen bien incluso con datos o situaciones inusuales.
El ISA RISC-V requiere predicciones de bifurcación por defecto para las CPU: debería predecirse ''tomaron'' las bifurcaciones condicionales hacia atrás. Las bifurcaciones condicionales hacia adelante predicen ''no tomadas''. Las predicciones son fáciles de decodificar en una CPU segmentada: las direcciones de las sucursales son números firmados que se agregan a la PC. Las bifurcaciones hacia atrás tienen direcciones de [[complemento a dos]] negativas y, por lo tanto, tienen una en el bit más significativo de la dirección. Las bifurcaciones adelantadas tienen un cero. El bit más significativo se encuentra en una ubicación fija en el código de operación para acelerar la tubería. Las CPU complejas pueden agregar [[Predictor de saltos|predictores de bifurcación]] para que funcionen bien incluso con datos o situaciones inusuales.


El manual de ISA recomienda que el software se optimice para evitar paradas de sucursales mediante el uso de las predicciones de sucursales predeterminadas. Esto reutiliza el bit más significativo de la dirección relativa firmada como un ''bit de sugerencia'' para indicar si la rama condicional se tomará o no. Por lo tanto, no se necesitan otros bits de sugerencia en los códigos de operación de las sucursales RISC-V. Esto hace que haya más bits disponibles en los códigos de operación de rama. Las CPU simples y económicas pueden simplemente seguir las predicciones predeterminadas y seguir funcionando bien con la optimización de los compiladores. Los compiladores aún pueden realizar la optimización de la ruta estadística, si lo desea.
El manual de ISA recomienda que el software se optimice para evitar paradas de sucursales mediante el uso de las predicciones de sucursales predeterminadas. Esto reutiliza el bit más significativo de la dirección relativa firmada como un ''bit de sugerencia'' para indicar si la bifurcación condicional se tomará o no. Por lo tanto, no se necesitan otros bits de sugerencia en los códigos de operación de las sucursales RISC-V. Esto hace que haya más bits disponibles en los códigos de operación de bifurcación. Las CPU simples y económicas pueden simplemente seguir las predicciones predeterminadas y seguir funcionando bien con la optimización de los compiladores. Los compiladores aún pueden realizar la optimización de la ruta estadística, si lo desea.


Para evitar la carga innecesaria de la electrónica de predicción de bifurcación (y, por lo tanto, paradas de tuberías innecesarias), los códigos de bifurcación de comparación nunca deben utilizarse para saltos incondicionales.
Para evitar la carga innecesaria de la electrónica de predicción de bifurcación (y, por lo tanto, paradas de tuberías innecesarias), los códigos de bifurcación de comparación nunca deben utilizarse para saltos incondicionales.


RISC-V no admite la predicación (la ejecución condicional de las instrucciones) ya que sus diseñadores afirman que las CPU sin predicación son más fáciles de diseñar, y es menos probable que los compiladores de optimización usen la predicación donde no deberían usarse. Los diseñadores afirman que los diseños de CPU fuera de orden muy rápidos hacen predicción de todos modos, al hacer la rama de comparación y el código condicional en paralelo, y luego descartar 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 [[Predictor de saltos|predicción de ramificación]] , lo que puede evitar la mayoría de los bloqueos asociados con las ramificaciones condicionales. El código sin predicación es mayor, con más ramas, pero también afirman que un conjunto de instrucciones comprimidas (como el conjunto ''C de'' RISC-V) resuelve ese problema en la mayoría de los casos.
RISC-V no admite la predicación (la ejecución condicional de las instrucciones) ya que sus diseñadores afirman que las CPU sin predicación son más fáciles de diseñar, y es menos probable que los compiladores de optimización usen la predicación donde no deberían usarse. Los diseñadores afirman que los diseños de CPU fuera de orden muy rápidos hacen predicción de todos modos, al hacer la bifurcación de comparación y el código condicional en paralelo, y luego descartar 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 [[Predictor de saltos|predicción de ramificación]] , lo que puede evitar la mayoría de los bloqueos asociados con las ramificaciones condicionales. El código sin predicación es mayor, con más bifurcaciones, pero también afirman que un conjunto de instrucciones comprimidas (como el conjunto ''C de'' RISC-V) resuelve ese problema en la mayoría de los casos.


Muchos diseños RISC han incluido una [[Hueco de retardo|ranura de retardo de ramificación]] , una posición después de una instrucción de bifurcación que se puede completar con una instrucción que se ejecuta independientemente de que se tome la bifurcación. Esta función puede mejorar el rendimiento de las CPU segmentadas al absorber parte del tiempo perdido si una CPU predice incorrectamente el funcionamiento de una rama condicional y la tubería de la CPU se detiene. RISC-V omite una ranura de retardo de bifurcación porque complica las CPU multiciclo, las CPU superescalar y las tuberías largas. Los [[Predictor de saltos|predictores de ramificación]] dinámica han tenido el éxito suficiente para reducir la necesidad de ramificaciones retrasadas.
Muchos diseños RISC han incluido una [[Hueco de retardo|ranura de retardo de ramificación]], una posición después de una instrucción de bifurcación que se puede completar con una instrucción que se ejecuta independientemente de que se tome la bifurcación. Esta función puede mejorar el rendimiento de las CPU segmentadas al absorber parte del tiempo perdido si una CPU predice incorrectamente el funcionamiento de una bifurcación condicional y la tubería de la CPU se detiene. RISC-V omite una ranura de retardo de bifurcación porque complica las CPU multiciclo, las CPU superescalar y las tuberías largas. Los [[Predictor de saltos|predictores de ramificación]] dinámica han tenido el éxito suficiente para reducir la necesidad de ramificaciones retrasadas.


=== Conjuntos aritméticos y lógicos. ===
=== Conjuntos aritméticos y lógicos ===
RISC-V segrega las matemáticas en un conjunto mínimo de instrucciones de [[Número entero|enteros]] (conjunto ''I'' ) con [[Unidad aritmética lógica|suma, resta, cambio, lógica de bits]] 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 notable excepción. ) RISC-V actualmente carece del ''conteo de cero'' y las operaciones de campo de bits normalmente utilizadas para acelerar el punto flotante del software en un procesador de entero puro.
RISC-V segrega las matemáticas en un conjunto mínimo de instrucciones de [[Número entero|enteros]] (conjunto ''I'' ) con [[Unidad aritmética lógica|suma, resta, cambio, lógica de bits]] 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 notable excepción.) RISC-V actualmente carece del ''conteo de cero'' y las operaciones de campo de bits normalmente utilizadas para acelerar el punto flotante del software en un procesador de entero puro.


Las instrucciones de multiplicación de enteros (conjunto ''M'' ) incluyen multiplicación y división con signo y sin signo. Se incluyen los números enteros de precisión doble y se divide, como se multiplica y divide que produce la ''palabra alta'' del resultado. El documento ISA recomienda que los implementadores de CPU y compiladores ''fusionen'' una secuencia estandarizada de alta y baja multiplicaciones y dividan las instrucciones en una operación si es posible.
Las instrucciones de multiplicación de enteros (conjunto ''M'' ) incluyen multiplicación y división con signo y sin signo. Se incluyen los números enteros de precisión doble y se divide, como se multiplica y divide que produce la ''palabra alta'' del resultado. El documento ISA recomienda que los implementadores de CPU y compiladores ''fusionen'' una secuencia estandarizada de alta y baja multiplicaciones y dividan las instrucciones en una operación si es posible.


Las [[Coma flotante|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 enteros. Requiere un conjunto adicional de 32 registros de punto flotante. Estos son separados de los registros enteros. Las instrucciones de punto flotante de doble precisión (conjunto ''D'' ) generalmente asumen que los registros de punto flotante son de 64 bits (es decir, ancho doble), y el subconjunto ''F'' se coordina con el conjunto ''D.'' También se define una ISA ( ''Q'' ) de coma flotante de 128 bits de precisión cuádruple. Las computadoras RISC-V sin punto flotante pueden usar una biblioteca de software de punto flotante.
Las [[Coma flotante|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 enteros. Requiere un conjunto adicional de 32 registros de punto flotante. Estos son separados de los registros enteros. Las instrucciones de punto flotante de doble precisión (conjunto ''D'' ) generalmente asumen que los registros de punto flotante son de 64 bits (es decir, ancho doble), y el subconjunto ''F'' se coordina con el conjunto ''D.'' También se define una ISA ( ''Q'' ) de coma flotante de 128 bits de precisión cuádruple. Las computadoras RISC-V sin punto flotante pueden usar una biblioteca de software de punto flotante.


RISC-V no causa [[Manejo de excepciones|excepciones]] en los errores aritméticos, incluyendo desbordamiento , subdesbordamiento, subnormal y división por cero. En su lugar, tanto la aritmética de enteros como la de punto flotante producen valores predeterminados razonables y establecen bits de estado. La división por cero puede ser descubierta por una rama después de la división. Los bits de estado se pueden probar mediante un sistema operativo o una interrupción periódica.
RISC-V no causa [[Manejo de excepciones|excepciones]] en los errores aritméticos, incluyendo desbordamiento, subdesbordamiento, subnormal y división por cero. En su lugar, tanto la aritmética de enteros como la de punto flotante producen valores predeterminados razonables y establecen bits de estado. La división por cero puede ser descubierta por una rama después de la división. Los bits de estado se pueden probar mediante un sistema operativo o una interrupción periódica.


=== Operaciones de memoria atómica ===
=== Operaciones de memoria atómica ===
RISC-V admite computadoras que comparten memoria entre varias CPU y [[Hilo (informática)|subprocesos]]. El modelo de consistencia de memoria estándar de RISC-V es la consistencia de la versión. Es decir, las cargas y los almacenes generalmente se pueden reordenar, pero algunas cargas pueden designarse como operaciones de ''adquisición'' que deben preceder a los accesos de memoria posteriores, y algunas tiendas se pueden designar como operaciones de ''liberación'' que deben seguir a los accesos de memoria anteriores.
RISC-V admite computadoras que comparten memoria entre varias CPU y [[Hilo (informática)|subprocesos]]. El modelo de consistencia de memoria estándar de RISC-V es la consistencia de la versión. Es decir, las cargas y los almacenes generalmente se pueden reordenar, pero algunas cargas pueden designarse como operaciones de ''adquisición'' que deben preceder a los accesos de memoria posteriores, y algunas tiendas se pueden designar como operaciones de ''liberación'' que deben seguir a los accesos de memoria anteriores.


El conjunto de instrucciones de la base incluye un soporte mínimo en forma de una {{code|fence}} {{code|fence}} instrucciones para hacer cumplir la ordenación de la memoria. Aunque esto es suficiente ( {{code|fence r, rw}} {{code|fence r, rw}} proporciona ''adquirir'' y {{code|fence rw, w}} {{code|fence rw, w}} proporciona ''lanzamiento'' ), las operaciones combinadas pueden ser más eficientes.
El conjunto de instrucciones de la base incluye un soporte mínimo en forma de una {{code|fence}} instrucciones para hacer cumplir la ordenación de la memoria. Aunque esto es suficiente ( {{code|fence r, rw}} proporciona ''adquirir'' y {{code|fence rw, w}} proporciona ''lanzamiento'' ), las operaciones combinadas pueden ser más eficientes.


La extensión de operación de memoria atómica admite dos tipos de operaciones de memoria atómica para la consistencia de la versión. En primer lugar, proporciona {{code|lr}} ''reservado de'' propósito general {{code|lr}} y ''almacenar condicional'' {{code|sc}} {{code|sc}} instrucciones. {{code|lr}} {{code|lr}} realiza una carga e intenta reservar esa dirección para su hilo. Una tienda posterior condicional {{code|sc}} {{code|sc}} La dirección reservada se realizará solo si la reserva no es interrumpida por una tienda intermedia de otra fuente. Si la tienda 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.
La extensión de operación de memoria atómica admite dos tipos de operaciones de memoria atómica para la consistencia de la versión. En primer lugar, proporciona {{code|lr}} ''reservado de'' propósito general {{code|lr}} y ''almacenar condicional'' {{code|sc}} instrucciones. {{code|lr}} realiza una carga e intenta reservar esa dirección para su hilo. Una tienda posterior condicional {{code|sc}} La dirección reservada se realizará solo si la reserva no es interrumpida por una tienda intermedia de otra fuente. Si la tienda 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.


El segundo grupo de instrucciones atómicas realiza secuencias de lectura-modificación-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 una reserva del resultado (que puede ser opcionalmente un lanzamiento de tienda). Hacer las barreras de memoria opcionales permite combinar las operaciones. Las operaciones opcionales están habilitadas por los bits de ''adquisición'' y ''liberación'' que están presentes en cada instrucción atómica. RISC-V define nueve operaciones posibles: intercambio (use el valor del registro de origen directamente); añadir; bitwise y, o, y exclusivo -o; y mínimo y máximo firmado y sin firmar.
El segundo grupo de instrucciones atómicas realiza secuencias de lectura-modificación-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 una reserva del resultado (que puede ser opcionalmente un lanzamiento de tienda). Hacer las barreras de memoria opcionales permite combinar las operaciones. Las operaciones opcionales están habilitadas por los bits de ''adquisición'' y ''liberación'' que están presentes en cada instrucción atómica. RISC-V define nueve operaciones posibles: intercambio (use el valor del registro de origen directamente); añadir; bitwise y, o, y exclusivo -o; y mínimo y máximo firmado y sin firmar.


Un diseño de sistema puede optimizar estas operaciones combinadas más que {{code|lr}} {{code|lr}} y {{code|sc}} {{code|sc}}. Por ejemplo, si el registro de destino para un swap es el cero constante, la carga puede omitirse. Si el valor almacenado no se modifica desde la carga, la tienda puede omitirse.
Un diseño de sistema puede optimizar estas operaciones combinadas más que {{code|lr}} y {{code|sc}}. Por ejemplo, si el registro de destino para un swap es el cero constante, la carga puede omitirse. Si el valor almacenado no se modifica desde la carga, la tienda puede omitirse.


El [[IBM System/370|IBM System / 370]] y sus sucesores, incluidos z / Architecture , y [[x86]] , implementan un sistema de [[Comparar e intercambiar|comparación e intercambio]] ( {{code|cas}} {{code|cas}} ) De instrucciones, que pone a prueba y de forma condicionada actualiza una ubicación en la memoria: si la ubicación contiene un valor esperado de edad, {{code|cas}} {{code|cas}} lo reemplaza con un nuevo valor dado; luego devuelve una indicación de si realizó el cambio. Sin embargo, una instrucción de tipo de carga simple generalmente se realiza antes del {{code|cas}} {{code|cas}} para recuperar 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 ( {{code|cas}} {{code|cas}} ) para reemplazar ''A'' por ''C'' , no tiene forma de saber si la actividad concurrente en otro hilo reemplazó a ''A'' por algún otro valor ''B'' y luego restauró la ''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 de ABA puede llevar a resultados incorrectos. La solución más común emplea un ''{{code|cas}} doble ancho. {{code|cas}}'' instrucciones para actualizar tanto el puntero como un contador adyacente; desafortunadamente, tal 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.
El [[IBM System/370|IBM System / 370]] y sus sucesores, incluidos z / Architecture, y [[x86]], implementan un sistema de [[Comparar e intercambiar|comparación e intercambio]] ({{code|cas}}) De instrucciones, que pone a prueba y de forma condicionada actualiza una ubicación en la memoria: si la ubicación contiene un valor esperado de edad, {{code|cas}} lo reemplaza con un nuevo valor dado; luego devuelve una indicación de si realizó el cambio. Sin embargo, una instrucción de tipo de carga simple generalmente se realiza antes del {{code|cas}} para recuperar 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 ({{code|cas}}) para reemplazar ''A'' por ''C'' , no tiene forma de saber si la actividad concurrente en otro hilo reemplazó a ''A'' por algún otro valor ''B'' y luego restauró la ''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 de ABA puede llevar a resultados incorrectos. La solución más común emplea un ''{{code|cas}} doble ancho. {{code|cas}}'' instrucciones para actualizar tanto el puntero como un contador adyacente; desafortunadamente, tal 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.


El {{code|lr}} {{code|lr}} / {{code|sc}} {{code|sc}} La alternativa es más eficiente. Por lo general, solo requiere una carga de memoria, y es deseable minimizar las operaciones de memoria lenta. También es exacto: controla todos los accesos a la celda de memoria, en lugar de solo asegurar un patrón de bits. Sin embargo, a diferencia de {{code|cas}} {{code|cas}} , puede permitir [[Bloqueo mutuo|Livelock]] , en el que dos o más subprocesos repetidamente hacen que las instrucciones del otro falle. RISC-V garantiza el progreso hacia adelante (no Livelock) si el código sigue las reglas sobre el tiempo y la secuencia de instrucciones: 1) Debe usar solo el subconjunto ''I.'' 2) Para evitar las fallas de caché repetitivas, el código (incluido el ciclo de reintento) no debe ocupar más de 16 instrucciones consecutivas. 3) No debe incluir instrucciones de sistema o cerca, o ramas tomadas hacia atrás entre los {{code|lr}} {{code|lr}} y {{code|sc}} {{code|sc}}. 4) La rama hacia atrás al bucle de reintento debe ser a la secuencia original.
El {{code|lr}} / {{code|sc}} La alternativa es más eficiente. Por lo general, solo requiere una carga de memoria, y es deseable minimizar las operaciones de memoria lenta. También es exacto: controla todos los accesos a la celda de memoria, en lugar de solo asegurar un patrón de bits. Sin embargo, a diferencia de {{code|cas}} {{code|cas}} , puede permitir [[Bloqueo mutuo|Livelock]] , en el que dos o más subprocesos repetidamente hacen que las instrucciones del otro falle. RISC-V garantiza el progreso hacia adelante (no Livelock) si el código sigue las reglas sobre el tiempo y la secuencia de instrucciones: 1) Debe usar solo el subconjunto ''I.'' 2) Para evitar las fallas de caché repetitivas, el código (incluido el ciclo de reintento) no debe ocupar más de 16 instrucciones consecutivas. 3) No debe incluir instrucciones de sistema o cerca, o ramas tomadas hacia atrás entre los {{code|lr}} y {{code|sc}}. 4) La rama hacia atrás al bucle de reintento debe ser a la secuencia original.


La especificación proporciona ejemplos de cómo usar este subconjunto para bloquear una estructura de datos.
La especificación proporciona ejemplos de cómo usar este subconjunto para bloquear una estructura de datos.


=== Subconjunto comprimido ===
=== Subconjunto comprimido ===
El estándar RISC-V ISA especifica que todas las instrucciones son de 32 bits. Esto hace que para una implementación particularmente simple, pero al igual que otros procesadores RISC con tal codificación de instrucciones, resulta en un tamaño de código mayor que en otros conjuntos de instrucciones. Para compensar, instrucciones de ''32 bits'' del RISC-V son en realidad 30 bits; <span class="frac nowrap"><sup><sub>3/4</sub></sup></span> de la [[Código de operación|opcode]] espacio está reservado para un conjunto de instrucciones opcional (pero recomendado) de longitud variable ''comprimido,'' RVC, que incluye instrucciones de 16 bits. Al igual que ARM's Thumb y el MIPS16, las instrucciones comprimidas son simplemente alias para un subconjunto de las instrucciones más grandes. A diferencia del conjunto comprimido ARM's Thumb o MIPS, el espacio se reservó desde el principio para que no haya un modo de operación separado. Las instrucciones estándar y comprimidas se pueden mezclar libremente. (letra ''C'' )
El estándar RISC-V ISA especifica que todas las instrucciones son de 32 bits. Esto hace que para una implementación particularmente simple, pero al igual que otros procesadores RISC con tal codificación de instrucciones, resulta en un tamaño de código mayor que en otros conjuntos de instrucciones. Para compensar, instrucciones de ''32 bits'' del RISC-V son en realidad 30 bits; <span class="frac nowrap"><sup><sub>3/4</sub></sup></span> de la [[Código de operación|opcode]] espacio está reservado para un conjunto de instrucciones opcional (pero recomendado) de longitud variable ''comprimido,'' RVC, que incluye instrucciones de 16 bits. Al igual que ARM's Thumb y el MIPS16, las instrucciones comprimidas son simplemente alias para un subconjunto de las instrucciones más grandes. A diferencia del conjunto comprimido ARM's Thumb o MIPS, el espacio se reservó desde el principio para que no haya un modo de operación separado. Las instrucciones estándar y comprimidas se pueden mezclar libremente. (letra ''C'' )


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 puede implementarse en el ensamblador, y no es esencial que el compilador lo sepa.
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 puede implementarse en el ensamblador, y no es esencial que el compilador lo sepa.


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


El investigador pretendía reducir el tamaño binario del código para computadoras pequeñas, especialmente [[Sistema embebido|sistemas informáticos]] integrados. El prototipo incluyó 33 de las instrucciones utilizadas con mayor frecuencia, recodificadas como formatos compactos de 16 bits utilizando códigos de operación previamente reservados para el conjunto comprimido. La compresión se realizó en el [[Lenguaje ensamblador|ensamblador]] , sin cambios en el compilador. Las instrucciones comprimidas omitieron los campos que a menudo son cero, utilizaron valores inmediatos pequeños o subconjuntos accedidos (16 u 8) de los registros. {{code|addi}} {{code|addi}} Es muy común ya menudo compresible.
El investigador pretendía reducir el tamaño binario del código para computadoras pequeñas, especialmente [[Sistema embebido|sistemas informáticos]] integrados. El prototipo incluyó 33 de las instrucciones utilizadas con mayor frecuencia, recodificadas como formatos compactos de 16 bits utilizando códigos de operación previamente reservados para el conjunto comprimido. La compresión se realizó en el [[Lenguaje ensamblador|ensamblador]], sin cambios en el compilador. Las instrucciones comprimidas omitieron los campos que a menudo son cero, utilizaron valores inmediatos pequeños o subconjuntos accedidos (16 u 8) de los registros. {{code|addi}} Es muy común y a menudo compresible.


Gran parte de la diferencia de tamaño en comparación con el conjunto de Pulgar del brazo se produjo porque RISC-V, y el prototipo, no tienen instrucciones para guardar y restaurar registros múltiples. En cambio, el compilador generó instrucciones convencionales que acceden a la pila. El prototipo del ensamblador RVC a menudo los convertía en formas comprimidas que tenían la mitad del tamaño. Sin embargo, esto todavía tomó 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 las rutinas de la biblioteca para guardar y restaurar registros. Estas rutinas tienden a permanecer en un caché de código y, por lo tanto, se ejecutan rápidamente, aunque probablemente no tan rápido como una instrucción de guardar varios.
Gran parte de la diferencia de tamaño en comparación con el conjunto de ARM Thumb se produjo porque RISC-V, y el prototipo, no tienen instrucciones para guardar y restaurar registros múltiples. En cambio, el compilador generó instrucciones convencionales que acceden a la pila. El prototipo del ensamblador RVC a menudo los convertía en formas comprimidas que tenían la mitad del tamaño. Sin embargo, esto todavía tomó 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 las rutinas de la biblioteca para guardar y restaurar registros. Estas rutinas tienden a permanecer en un caché de código y, por lo tanto, se ejecutan rápidamente, aunque probablemente no tan rápido como una instrucción de guardar varios.


=== Subconjunto incorporado ===
=== Subconjunto incorporado ===
Un conjunto de instrucciones para las CPU ''incorporadas'' más pequeñas (conjunto E) se reduce de otras maneras: solo se admiten 16 de los registros de enteros de 32 bits. Las instrucciones de punto flotante no se deben admitir (la especificación lo prohíbe por ser poco rentable), por lo que se debe usar una biblioteca de software de punto flotante. Se recomienda el conjunto comprimido ''C.'' 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.
Un conjunto de instrucciones para las CPU ''incorporadas'' más pequeñas (conjunto E) se reduce de otras maneras: solo se admiten 16 de los registros de enteros de 32 bits. Las instrucciones de punto flotante no se deben admitir (la especificación lo prohíbe por ser poco rentable), por lo que se debe usar una biblioteca de software de punto flotante. Se recomienda el conjunto comprimido ''C.'' 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.<ref name="priv-isa"/>


Se ha producido una discusión para un perfil de microcontrolador para RISC-V, para facilitar el desarrollo de [[Sistema embebido|sistemas]] profundamente [[Sistema embebido|integrados]]. Se centra en un soporte de lenguaje C más rápido y simple para interrupciones, modos de seguridad simplificados y una interfaz binaria de aplicación [[POSIX]] simplificada. <ref>{{Cita web|url=https://github.com/emb-riscv/specs-markdown/blob/master/README.md|título=The RISC-V Microcontroller Profile|fechaacceso=5 de abril de 2018|apellido=Ionescu|nombre=Liviu|sitioweb=Github}}</ref>
Se ha producido una discusión para un perfil de microcontrolador para RISC-V, para facilitar el desarrollo de [[Sistema embebido|sistemas]] profundamente [[Sistema embebido|integrados]]. Se centra en un soporte de lenguaje C más rápido y simple para interrupciones, modos de seguridad simplificados y una interfaz binaria de aplicación [[POSIX]] simplificada.<ref>{{Cita web|url=https://github.com/emb-riscv/specs-markdown/blob/master/README.md|título=The RISC-V Microcontroller Profile|fechaacceso=5 de abril de 2018|apellido=Ionescu|nombre=Liviu|sitioweb=Github}}</ref>


Los corresponsales también han propuesto ISA ''RV16E de'' 16 bits más pequeñas, no estándar: Se utilizarían registros enteros de 16 × 16 bits, utilizando las ISA ''EIMC'' estándar (incluidas las instrucciones de 32 bits). ) <ref>{{Cita web|url=https://groups.google.com/a/groups.riscv.org/forum/#!msg/isa-dev/SrujNcNc8RA/uTnndiPaAgAJ|título=Proposal: RV16E|fechaacceso=2 de abril de 2018|apellido=Barros|nombre=Cesar|sitioweb=Google Groups, RISC-V ISA Dev|editorial=Google}}</ref> Otra propuesta solo usaría las instrucciones ''C'' de 16 bits con registros de 8 × 16 bits. Se dijo que un RV16EG completo era posible con una ISA completamente recodificada. <ref>{{Cita web|url=https://groups.google.com/a/groups.riscv.org/forum/#!searchin/isa-dev/16-bit/isa-dev/iK3enKGb5bw/cuVAq0J8EAAJ|título=Proposal: Xcondensed, [a] ... Compact ... 16 bit standalone G-ISA|fechaacceso=10 de noviembre de 2016|apellido=Brussee|nombre=Rogier|sitioweb=RISC-V ISA Mail Server|editorial=Google Groups}}</ref>
Los corresponsales también han propuesto ISA ''RV16E de'' 16 bits más pequeñas, no estándar: Se utilizarían registros enteros de 16 × 16 bits, utilizando las ISA ''EIMC'' estándar (incluidas las instrucciones de 32 bits). )<ref>{{Cita web|url=https://groups.google.com/a/groups.riscv.org/forum/#!msg/isa-dev/SrujNcNc8RA/uTnndiPaAgAJ|título=Proposal: RV16E|fechaacceso=2 de abril de 2018|apellido=Barros|nombre=Cesar|sitioweb=Google Groups, RISC-V ISA Dev|editorial=Google}}</ref> Otra propuesta solo usaría las instrucciones ''C'' de 16 bits con registros de 8 × 16 bits. Se dijo que un RV16EG completo era posible con una ISA completamente recodificada.<ref>{{Cita web|url=https://groups.google.com/a/groups.riscv.org/forum/#!searchin/isa-dev/16-bit/isa-dev/iK3enKGb5bw/cuVAq0J8EAAJ|título=Proposal: Xcondensed, [a] ... Compact ... 16 bit standalone G-ISA|fechaacceso=10 de noviembre de 2016|apellido=Brussee|nombre=Rogier|sitioweb=RISC-V ISA Mail Server|editorial=Google Groups}}</ref>

=== Conjunto de instrucciones privilegiadas. ===
La ISA de RISC-V incluye una especificación de conjunto de instrucciones privilegiadas por separado. A partir de julio {{As of|2017|07}} {{As of|2017|07}} {{As of|2017|07}} , es preliminar.


=== Conjunto de instrucciones privilegiadas ===
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 partir de julio {{As of|2021|12}}, la versión 1.12 está ratificada por RISC-V International.<ref name=priv-isa/>
# Sistemas que solo tienen ''modo de máquina'' , tal vez para [[Sistema embebido|sistemas embebidos]] ,
# Sistemas que solo tienen ''modo de máquina'' , tal vez para [[Sistema embebido|sistemas embebidos]] ,
# Sistemas con modo de máquina (para el supervisor ) y modo de usuario, tal vez para implementar [[Linux]].
# Sistemas con modo de máquina (para el supervisor ) y modo de usuario, tal vez para implementar [[Linux]].
# Sistemas con modo máquina, [[hipervisor]]es , supervisores múltiples y modos de usuario bajo cada supervisor.
# Sistemas con modo máquina, [[hipervisor]]es, supervisores múltiples y modos de usuario bajo cada supervisor.


Estos corresponden aproximadamente a sistemas con hasta cuatro ''anillos'' de privilegio 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.
Estos corresponden aproximadamente a sistemas con hasta cuatro ''anillos'' de privilegio 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.


El plan general para esta ISA es hacer que el modo hipervisor sea [[Ortogonalidad (matemáticas)|ortogonal]] a los modos de usuario y supervisor. <ref>{{Cita web|url=https://groups.google.com/a/groups.riscv.org/forum/#!msg/isa-dev/SfEDPLU0NU4/WpAE_A4OBQAJ|título=Proposal for Virtualization without H mode|fechaacceso=24 de febrero de 2017|apellido=Bonzini|nombre=Paolo|sitioweb=Google Groups, RISC-V ISA Dev.|editorial=RISC-V Foundation}}</ref> 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 que cause una interrupción en los accesos. Este bit permite que el modo supervisor maneje directamente el hardware que necesita un hipervisor. Esto simplifica un hipervisor de tipo 2, alojado por un sistema operativo. Este es un modo popular para ejecutar computadoras a escala de almacén. Para admitir los hipervisores tipo 1, sin publicar, el bit puede hacer que estos accesos se interrumpan a un hipervisor. El bit simplifica el anidamiento de hipervisores, en el que un hipervisor se ejecuta bajo un hipervisor. También se dice que simplifica el código de supervisor al permitir que el kernel use sus propias características de hipervisor con su propio código de kernel. Como resultado, la forma de hipervisor de la ISA admite cinco modos: máquina, supervisor, usuario, supervisor bajo hipervisor y usuario bajo hipervisor.
El plan general para esta ISA es hacer que el modo hipervisor sea [[Ortogonalidad (matemáticas)|ortogonal]] a los modos de usuario y supervisor.<ref>{{Cita web|url=https://groups.google.com/a/groups.riscv.org/forum/#!msg/isa-dev/SfEDPLU0NU4/WpAE_A4OBQAJ|título=Proposal for Virtualization without H mode|fechaacceso=24 de febrero de 2017|apellido=Bonzini|nombre=Paolo|sitioweb=Google Groups, RISC-V ISA Dev.|editorial=RISC-V Foundation}}</ref> 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 que cause una interrupción en los accesos. Este bit permite que el modo supervisor maneje directamente el hardware que necesita un hipervisor. Esto simplifica un hipervisor de tipo 2, alojado por un sistema operativo. Este es un modo popular para ejecutar computadoras a escala de almacén. Para admitir los hipervisores tipo 1, sin publicar, el bit puede hacer que estos accesos se interrumpan a un hipervisor. El bit simplifica el anidamiento de hipervisores, en el que un hipervisor se ejecuta bajo un hipervisor. También se dice que simplifica el código de supervisor al permitir que el kernel use sus propias características de hipervisor con su propio código de kernel. Como resultado, la forma de hipervisor de la ISA admite cinco modos: máquina, supervisor, usuario, supervisor bajo hipervisor y usuario bajo hipervisor.


La especificación de conjunto de instrucciones privilegiadas define explícitamente los ''[[Hilo (informática)|hilos de]] hardware'' o ''harts''. Múltiples hilos de hardware son una práctica común en computadoras más grandes y más potentes. Cuando un hilo se detiene, a la espera de memoria, otros pueden continuar. Los hilos de hardware pueden ayudar a hacer un mejor uso de la gran cantidad de registros y unidades de ejecución en CPU grandes. Finalmente, los subprocesos de hardware pueden ser una forma simple y poderosa de manejar [[Interrupción|interrupciones]] : no es necesario guardar ni restaurar registros, simplemente ejecutando un subproceso de hardware diferente. El único hilo de hardware requerido en una computadora RISC-V es el hilo cero.
La especificación de conjunto de instrucciones privilegiadas define explícitamente los ''[[Hilo (informática)|hilos de]] hardware'' o ''harts''. Múltiples hilos de hardware son una práctica común en computadoras más grandes y más potentes. Cuando un hilo se detiene, a la espera de memoria, otros pueden continuar. Los hilos de hardware pueden ayudar a hacer un mejor uso de la gran cantidad de registros y unidades de ejecución en CPU grandes. Finalmente, los subprocesos de hardware pueden ser una forma simple y poderosa de manejar [[Interrupción|interrupciones]] : no es necesario guardar ni restaurar registros, simplemente ejecutando un subproceso de hardware diferente. El único hilo de hardware requerido en una computadora RISC-V es el hilo cero.


Las definiciones de registro de control y estado existentes admiten las excepciones de error y memoria de RISC-V, y un pequeño número de interrupciones. Para sistemas más grandes, la especificación también define un controlador de interrupción. Las interrupciones siempre comienzan en el nivel de máquina con el privilegio más alto, y los registros de control de cada nivel tienen bits de ''reenvío'' explícitos para encaminar las interrupciones a un 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 su lugar, en la configuración, puede establecer bits para reenviar la interrupción.
Las definiciones de registro de control y estado existentes admiten las excepciones de error y memoria de RISC-V, y un pequeño número de interrupciones. Para sistemas más grandes, la especificación también define un controlador de interrupción. Las interrupciones siempre comienzan en el nivel de máquina con el privilegio más alto, y los registros de control de cada nivel tienen bits de ''reenvío'' explícitos para encaminar las interrupciones a un 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 su lugar, en la configuración, puede establecer bits para reenviar la interrupción.


Varios sistemas de memoria son compatibles con la especificación. Físico solo es adecuado para los [[Sistema embebido|sistemas embebidos]] más pequeños. También hay tres [[Unix|sistemas de]] [[Memoria virtual|memoria virtual de]] estilo [[UNIX]] para la memoria caché en sistemas de almacenamiento masivo. Los sistemas de memoria virtual tienen tres tamaños, con direcciones de 32, 39 y 48 bits. Todos los sistemas de memoria virtual son compatibles con 4. &nbsp; Las páginas de KiB, los árboles de tablas de páginas de niveles múltiples y utilizan algoritmos muy similares para recorrer los árboles de tablas de páginas. Todos están diseñados para la tabla de páginas de hardware o software. Para reducir opcionalmente el costo de las caminatas en la tabla de páginas, las páginas de gran tamaño pueden ser páginas de hoja en niveles más altos del árbol de tabla de páginas de un sistema. SV32 tiene un árbol de tabla de páginas de dos capas y admite 4 &nbsp; Superpáginas de mib SV39 tiene una tabla de páginas de tres niveles, y soporta 2 &nbsp; Superpages mib y 1 &nbsp; GiB gigapages. Se requiere SV48 para soportar SV39. También tiene una tabla de páginas de 4 niveles y soporta 2 &nbsp; Superpages MiB, 1 &nbsp; Gigapages GiB, y 512 &nbsp; GiB terapages. Las súper páginas se alinean en los límites de la página para el siguiente tamaño más bajo de página.
Varios sistemas de memoria son compatibles con la especificación. Físico solo es adecuado para los [[Sistema embebido|sistemas embebidos]] más pequeños. También hay tres [[Unix|sistemas de]] [[Memoria virtual|memoria virtual de]] estilo [[UNIX]] para la memoria caché en sistemas de almacenamiento masivo. Los sistemas de memoria virtual tienen tres tamaños, con direcciones de 32, 39 y 48 bits. Todos los sistemas de memoria virtual son compatibles con 4. &nbsp; Las páginas de KiB, los árboles de tablas de páginas de niveles múltiples y utilizan algoritmos muy similares para recorrer los árboles de tablas de páginas. Todos están diseñados para la tabla de páginas de hardware o software. Para reducir opcionalmente el costo de las caminatas en la tabla de páginas, las páginas de gran tamaño pueden ser páginas de hoja en niveles más altos del árbol de tabla de páginas de un sistema. SV32 tiene un árbol de tabla de páginas de dos capas y admite 4 &nbsp; Superpáginas de mib SV39 tiene una tabla de páginas de tres niveles, y soporta 2 &nbsp; Superpages mib y 1 &nbsp; GiB gigapages. Se requiere SV48 para soportar SV39. También tiene una tabla de páginas de 4 niveles y soporta 2 &nbsp; Superpages MiB, 1 &nbsp; Gigapages GiB, y 512 &nbsp; GiB terapages. Las súper páginas se alinean en los límites de la página para el siguiente tamaño más bajo de página.


=== Manipulación de bits ===
=== Manipulación de bits ===
Se realizó un trabajo sustancial para producir una ISA preliminar (aunque no aprobada) de manipulación de bits (B) para RISC-V. Hecho bien, un subconjunto de manipulación de bits puede ayudar a las operaciones criptográficas, gráficas y matemáticas. Los criterios de inclusión documentados en el borrador fueron el cumplimiento con las filosofías RV5 y los formatos ISA, mejoras sustanciales en la densidad o velocidad del código (es decir, al menos una reducción de instrucciones de 3 por 1), y aplicaciones sustanciales en el mundo real, incluido el compilador preexistente apoyo. La versión 0.36 incluyó <ref>{{Cita web|url=https://github.com/cliffordwolf/xbitmanip/blob/master/xbitmanip-draft.pdf|título=Bit Manipulation for RISC-V, Draft|apellido=Wolf|nombre=Clifford|sitioweb=Github|editorial=Clifford Wolf}}</ref> instrucciones no controvertidas para contar ceros iniciales, contar un bit, realizar {{code|and}} {{code|and}} con complemento, desplazar unos, rotar, un bit invertido y aleatorio generalizados, intercambios de bytes, extractos y depósitos de bits y algunas adiciones de manipulación de bits para el conjunto comprimido ( {{code|not}} {{code|not}} {{code|neg}} {{code|neg}} y {{code|reverse}} {{code|reverse}} ). También incluye una propuesta controvertida para la extracción y colocación de campos de bits, utilizando un formato de instrucción de 48 bits no estándar.
Se realizó un trabajo sustancial para producir una ISA preliminar (aunque no aprobada) de manipulación de bits (B) para RISC-V. Hecho bien, un subconjunto de manipulación de bits puede ayudar a las operaciones criptográficas, gráficas y matemáticas. Los criterios de inclusión documentados en el borrador fueron el cumplimiento con las filosofías RV5 y los formatos ISA, mejoras sustanciales en la densidad o velocidad del código (es decir, al menos una reducción de instrucciones de 3 por 1), y aplicaciones sustanciales en el mundo real, incluido el compilador preexistente apoyo. La versión 0.36 incluyó<ref>{{Cita web|url=https://github.com/cliffordwolf/xbitmanip/blob/master/xbitmanip-draft.pdf|título=Bit Manipulation for RISC-V, Draft|apellido=Wolf|nombre=Clifford|sitioweb=Github|editorial=Clifford Wolf}}</ref> instrucciones no controvertidas para contar ceros iniciales, contar un bit, realizar {{code|and}} con complemento, desplazar unos, rotar, un bit invertido y aleatorio generalizados, intercambios de bytes, extractos y depósitos de bits y algunas adiciones de manipulación de bits para el conjunto comprimido ({{code|not}}, {{code|neg}} y {{code|reverse}}). También incluye una propuesta controvertida para la extracción y colocación de campos de bits, utilizando un formato de instrucción de 48 bits no estándar.


=== Empaquetado SIMD ===
=== Empaquetado SIMD ===
Para sistemas RISC-V simples y con costos reducidos, hay una propuesta para utilizar los bits de los registros de punto flotante para realizar la instrucción aritmética de la sub-palabra de instrucción simple paralela, datos múltiples ( [[SIMD]] ). Esto se usa ampliamente para acelerar el [[Procesamiento digital de señales|procesamiento]] multimedia y de otras [[Procesamiento digital de señales|señales digitales]]. A partir de 2016 {{As of|2016}} , esta ISA no está definida, pero podría parecerse a las instrucciones multimedia de PA-RISC: eXtensiones de aceleración multimedia. Además de su matemática nativa de 64 bits, la CPU PA-RISC MAX2 podría hacer aritmética en cuatro subpuntos de 16 bits a la vez, con varios métodos de desbordamiento. También podría mover subwords a diferentes posiciones. El MAX2 de PA-RISC se simplificó intencionalmente. Carecía de soporte para subwords de 8 bits o de 32 bits. Se seleccionó el tamaño de la subpuesta de 16 bits para admitir la mayoría de las tareas de procesamiento de señales digitales. Estas instrucciones eran económicas de diseñar y construir. Sin embargo, aumentaron el rendimiento de la CPU en las tareas de procesamiento de señal digital en 48 veces o más, lo que permitió la creación de [[Códec|códecs de]] video en tiempo real en 1995. <ref name="lee64bit">{{Cita publicación|url=http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=501762&tag=1|título=64-bit and Multimedia Extensions in the PA-RISC 2.0 Architecture|enlaceautor=Ruby B. Lee|apellidos2=Huck|nombre2=Jerry|fecha=25 de febrero de 1996|publicación=Proceedings of Compcon 96|páginas=152–160|fechaacceso=21 de septiembre de 2014}}</ref> <ref name="leeaccel">{{Cita publicación|url=http://www.princeton.edu/~rblee/HPpapers/accelMultimediawEnhancedMicroproc.pdf|título=Accelerating Multimedia with Enhanced Microprocessors|enlaceautor=Ruby B. Lee|fecha=April 1995|publicación=IEEE Micro|volumen=15|número=2|páginas=22–32|fechaacceso=21 de septiembre de 2014|doi=10.1109/40.372347}}</ref>
Para sistemas RISC-V simples y con costos reducidos, hay una propuesta para utilizar los bits de los registros de punto flotante para realizar la instrucción aritmética de la sub-palabra de instrucción simple paralela, datos múltiples ([[SIMD]]). Esto se usa ampliamente para acelerar el [[Procesamiento digital de señales|procesamiento]] multimedia y de otras [[Procesamiento digital de señales|señales digitales]]. A partir de 2016 {{As of|2016}}, esta ISA no está definida, pero podría parecerse a las instrucciones multimedia de PA-RISC: extensiones de aceleración multimedia. Además de su matemática nativa de 64 bits, la CPU PA-RISC MAX2 podría hacer aritmética en cuatro subpuntos de 16 bits a la vez, con varios métodos de desbordamiento. También podría mover subwords a diferentes posiciones. El MAX2 de PA-RISC se simplificó intencionalmente. Carecía de soporte para subwords de 8 bits o de 32 bits. Se seleccionó el tamaño de la subpuesta de 16 bits para admitir la mayoría de las tareas de procesamiento de señales digitales. Estas instrucciones eran económicas de diseñar y construir. Sin embargo, aumentaron el rendimiento de la CPU en las tareas de procesamiento de señal digital en 48 veces o más, lo que permitió la creación de [[Códec|códecs de]] video en tiempo real en 1995.<ref name="lee64bit">{{Cita publicación|url=http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=501762&tag=1|título=64-bit and Multimedia Extensions in the PA-RISC 2.0 Architecture|enlaceautor=Ruby B. Lee|apellidos2=Huck|nombre2=Jerry|fecha=25 de febrero de 1996|publicación=Proceedings of Compcon 96|páginas=152–160|fechaacceso=21 de septiembre de 2014}}</ref><ref name="leeaccel">{{Cita publicación|url=http://www.princeton.edu/~rblee/HPpapers/accelMultimediawEnhancedMicroproc.pdf|título=Accelerating Multimedia with Enhanced Microprocessors|enlaceautor=Ruby B. Lee|fecha=April 1995|publicación=IEEE Micro|volumen=15|número=2|páginas=22–32|fechaacceso=21 de septiembre de 2014|doi=10.1109/40.372347}}</ref>


=== Conjunto de vectores ===
=== 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 la flexibilidad suficiente 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 a un ISA multimedia, como se indicó anteriormente. Sin embargo, un verdadero [[Procesador vectorial|coprocesador vectorial]] podría ejecutar el mismo código con un mayor rendimiento. <ref name="vect">{{Cita web|url=https://riscv.org/wp-content/uploads/2015/06/riscv-vector-workshop-june2015.pdf|título=RISC-V Vector Extension Proposal|fechaacceso=14 de marzo de 2016|apellido=Schmidt|nombre=Colin|sitioweb=RISC-V|editorial=Regents of the University of California}}</ref>
El conjunto de instrucciones de procesamiento de vectores propuesto puede hacer que el conjunto SIMD empaquetado quede obsoleto. Los diseñadores esperan tener la flexibilidad suficiente 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 a un ISA multimedia, como se indicó anteriormente. Sin embargo, un verdadero [[Procesador vectorial|coprocesador vectorial]] podría ejecutar el mismo código con un mayor rendimiento.<ref name="vect">{{Cita web|url=https://riscv.org/wp-content/uploads/2015/06/riscv-vector-workshop-june2015.pdf|título=RISC-V Vector Extension Proposal|fechaacceso=14 de marzo de 2016|apellido=Schmidt|nombre=Colin|sitioweb=RISC-V|editorial=Regents of the University of California}}</ref>


A partir del 29 {{As of|2015|06|29}} {{As of|2015|06|29}} {{As of|2015|06|29}} {{As of|2015|06|29}} {{As of|2015|06|29}} , la propuesta de procesamiento de vectores es un diseño conservador y flexible de un [[Procesador vectorial|procesador de vectores de]] precisión mixta de propósito general, adecuado para ejecutar núcleos informáticos. El código se trasladaría fácilmente a las CPU con diferentes longitudes de vectores, idealmente sin recompilar.
A partir del 29 {{As of|2015|06|29}} {{As of|2015|06|29}} {{As of|2015|06|29}} {{As of|2015|06|29}} {{As of|2015|06|29}}, la propuesta de procesamiento de vectores es un diseño conservador y flexible de un [[Procesador vectorial|procesador de vectores de]] precisión mixta de propósito general, adecuado para ejecutar núcleos informáticos. El código se trasladaría fácilmente a las CPU con diferentes longitudes de vectores, idealmente sin recompilar.


En contraste, las extensiones SIMD de vector corto son menos convenientes. Estos se utilizan en [[x86]] , [[Arquitectura ARM|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 [[SSE|Extensiones SIMD de transmisión de]] 128 bits (SSE), a 256 bits [[Extensiones Vectoriales Avanzadas|Avanzado) Extensiones de vectores]] (AVX), y AVX-512 ). El resultado es un conjunto de instrucciones en crecimiento y la necesidad de adaptar el código de trabajo a las nuevas instrucciones.
En contraste, las extensiones SIMD de vector corto son menos convenientes. Estos se utilizan en [[x86]], [[Arquitectura ARM|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 [[SSE|Extensiones SIMD de transmisión de]] 128 bits (SSE), a 256 bits [[Extensiones Vectoriales Avanzadas|Avanzado) Extensiones de vectores]] (AVX), y AVX-512). El resultado es un conjunto de instrucciones en crecimiento y la necesidad de adaptar el código de trabajo a las nuevas instrucciones.


En el vector ISA de RISC-V, en lugar de fijar la longitud del vector en la arquitectura, una instrucción ( {{code|setvl}} {{code|setvl}} está disponible, que toma un tamaño solicitado y establece la longitud del vector al mínimo del límite de hardware y el tamaño solicitado. Por lo tanto, la propuesta RISC-V es más como el diseño de vector largo de [[Cray-1|Cray]]. Es decir, cada vector en hasta 32 vectores tiene la misma longitud.
En el vector ISA de RISC-V, en lugar de fijar la longitud del vector en la arquitectura, una instrucción ({{code|setvl}} está disponible, que toma un tamaño solicitado y establece la longitud del vector al mínimo del límite de hardware y el tamaño solicitado. Por lo tanto, la propuesta RISC-V es más como el diseño de vector largo de [[Cray-1|Cray]]. Es decir, cada vector en hasta 32 vectores tiene la misma longitud.


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 ( {{code|vsetcfg}} {{code|vsetcfg}} ) con cuatro operandos inmediatos, especificando el número de registros vectoriales de cada ancho disponible necesario. El total no debe ser mayor que el límite direccionable de 32, pero puede ser menor si la aplicación no los requiere a todos. La longitud del vector está limitada por el almacenamiento en chip disponible dividido por la cantidad de bytes de almacenamiento necesarios para cada entrada. (También pueden existir límites de hardware adicionales, que a su vez pueden permitir implementaciones de estilo SIMD. )
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 ({{code|vsetcfg}}) con cuatro operandos inmediatos, especificando el número de registros vectoriales de cada ancho disponible necesario. El total no debe ser mayor que el límite direccionable de 32, pero puede ser menor si la aplicación no los requiere a todos. La longitud del vector está limitada por el almacenamiento en chip disponible dividido por la cantidad de bytes de almacenamiento necesarios para cada entrada. (También pueden existir límites de hardware adicionales, que a su vez pueden permitir implementaciones de estilo SIMD. )


Fuera de los bucles vectoriales, la aplicación puede solicitar registros de vector cero, ahorrando al sistema operativo el trabajo de preservarlos en los [[Cambio de contexto|cambios de contexto]].
Fuera de los bucles vectoriales, la aplicación puede solicitar registros de vector cero, ahorrando al sistema operativo el trabajo de preservarlos en los [[Cambio de contexto|cambios de contexto]].


La longitud del vector no solo es variable arquitectónicamente, sino que también está diseñada para variar en el 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 que utilizan la sobrecarga polimórfica. El plan es que estos pueden reducir el tamaño y la complejidad de la ISA y el compilador.
La longitud del vector no solo es variable arquitectónicamente, sino que también está diseñada para variar en el 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 que utilizan la sobrecarga polimórfica. El plan es que estos pueden reducir el tamaño y la complejidad de la ISA y el compilador.


Los procesadores de vectores experimentales recientes con rutas de datos de ancho variable también muestran aumentos rentables en las operaciones por: segundo (velocidad), área (menor costo) y vatios (mayor duración de la batería). <ref>{{Cita web|url=http://www.eecs.berkeley.edu/~yunsup/papers/hwacha-mvp-prism2014.pdf|título=A Case for MVPs: Mixed-Precision Vector Processors|fechaacceso=14 de marzo de 2016|apellido=Ou|nombre=Albert|sitioweb=UC Berkeley EECS|editorial=Regents of the University of California|urlarchivo=https://web.archive.org/web/20160315090613/http://www.eecs.berkeley.edu/~yunsup/papers/hwacha-mvp-prism2014.pdf|fechaarchivo=15 de marzo de 2016}}</ref>
Los procesadores de vectores experimentales recientes con rutas de datos de ancho variable también muestran aumentos rentables en las operaciones por: segundo (velocidad), área (menor costo) y vatios (mayor duración de la batería).<ref>{{Cita web|url=http://www.eecs.berkeley.edu/~yunsup/papers/hwacha-mvp-prism2014.pdf|título=A Case for MVPs: Mixed-Precision Vector Processors|fechaacceso=14 de marzo de 2016|apellido=Ou|nombre=Albert|sitioweb=UC Berkeley EECS|editorial=Regents of the University of California|urlarchivo=https://web.archive.org/web/20160315090613/http://www.eecs.berkeley.edu/~yunsup/papers/hwacha-mvp-prism2014.pdf|fechaarchivo=15 de marzo de 2016}}</ref>


A diferencia de una [[Unidad de procesamiento gráfico|unidad de procesamiento de gráficos]] moderna típica, no hay planes de proporcionar hardware especial para soportar la predicción de sucursales. En su lugar, se utilizará una predicción basada en compilador de menor costo. <ref>{{Cita web|url=http://www.eecs.berkeley.edu/~yunsup/papers/predication-micro2014.pdf|título=Exploring the Design Space of SPMD Divergence Management on Data-Parallel Architectures|fechaacceso=14 de marzo de 2016|apellido=Lee|nombre=Yunsup|sitioweb=Berkeley's EECS Site|editorial=Regents of the University of California|urlarchivo=https://web.archive.org/web/20141114211123/http://www.eecs.berkeley.edu/~yunsup/papers/predication-micro2014.pdf|fechaarchivo=14 de noviembre de 2014}}</ref>
A diferencia de una [[Unidad de procesamiento gráfico|unidad de procesamiento de gráficos]] moderna típica, no hay planes de proporcionar hardware especial para soportar la predicción de sucursales. En su lugar, se utilizará una predicción basada en compilador de menor costo.<ref>{{Cita web|url=http://www.eecs.berkeley.edu/~yunsup/papers/predication-micro2014.pdf|título=Exploring the Design Space of SPMD Divergence Management on Data-Parallel Architectures|fechaacceso=14 de marzo de 2016|apellido=Lee|nombre=Yunsup|sitioweb=Berkeley's EECS Site|editorial=Regents of the University of California|urlarchivo=https://web.archive.org/web/20141114211123/http://www.eecs.berkeley.edu/~yunsup/papers/predication-micro2014.pdf|fechaarchivo=14 de noviembre de 2014}}</ref>


=== Sistema de depuración externa ===
=== Sistema de depuración externa ===
Hay 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 ( [[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''. <ref name="debug">{{Cita web|url=https://docs.google.com/presentation/d/1x53gVvPrDWEYq3omqLUpJBHU594zidDvoIg42mUzHvM/edit#slide=id.p|título=RISC-V Run Control Debug|fechaacceso=20 de enero de 2017|apellido=Bradbury|nombre=Alex|sitioweb=Google Docs|editorial=RISC-V Foundation}}</ref> <ref>{{Cita web|url=https://groups.google.com/a/groups.riscv.org/forum/#!topic/debug/FDmZUk7YCNw|título=RISC-V Debug Group > poll results|fechaacceso=20 de enero de 2017|apellido=Newsome|nombre=Tim|sitioweb=Google Groups, RISC-V Debug Group|editorial=RISC-V Foundation}}</ref>
Hay 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 ([[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''.<ref name="debug">{{Cita web|url=https://docs.google.com/presentation/d/1x53gVvPrDWEYq3omqLUpJBHU594zidDvoIg42mUzHvM/edit#slide=id.p|título=RISC-V Run Control Debug|fechaacceso=20 de enero de 2017|apellido=Bradbury|nombre=Alex|sitioweb=Google Docs|editorial=RISC-V Foundation}}</ref><ref>{{Cita web|url=https://groups.google.com/a/groups.riscv.org/forum/#!topic/debug/FDmZUk7YCNw|título=RISC-V Debug Group > poll results|fechaacceso=20 de enero de 2017|apellido=Newsome|nombre=Tim|sitioweb=Google Groups, RISC-V Debug Group|editorial=RISC-V Foundation}}</ref>


A partir de enero {{As of|2017|01}} {{As of|2017|01}} {{As of|2017|01}} , la forma exacta de la ''interfaz abstracta'' permanece indefinida, 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. Los corresponsales afirman que la interfaz de modo de depuración en segundo plano (BDM) de [[Freescale]] utiliza sistemas similares para algunas CPU, [[Arquitectura ARM|ARM]] , [[OpenRISC]] y [[LEON]] de Aeroflex.
A partir de enero {{As of|2017|01}} {{As of|2017|01}} {{As of|2017|01}}, la forma exacta de la ''interfaz abstracta'' permanece indefinida, 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. Los corresponsales afirman que la interfaz de modo de depuración en segundo plano (BDM) de [[Freescale]] utiliza sistemas similares para algunas CPU, [[Arquitectura ARM|ARM]], [[OpenRISC]] y [[LEON]] de Aeroflex.


En la ''alimentación de instrucciones'' , la CPU procesará una excepción de depuración para ejecutar instrucciones individuales escritas en un registro. Esto puede complementarse con un registro de paso de datos y un módulo para acceder directamente a la memoria. La alimentación de instrucciones le 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 los 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. Los corresponsales dicen que los sistemas similares son utilizados por [[MIPS Technologies]] [[MIPS (procesador)|MIPS]] , Intel Quark , Tensilica 's Xtensa , y por [[Freescale]] potencia CPU' interfaz de modo de fondo de depuración (BDM).
En la ''alimentación de instrucciones'', la CPU procesará una excepción de depuración para ejecutar instrucciones individuales escritas en un registro. Esto puede complementarse con un registro de paso de datos y un módulo para acceder directamente a la memoria. La alimentación de instrucciones le 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 los 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. Los corresponsales dicen que los sistemas similares son utilizados por [[MIPS Technologies]] [[MIPS (procesador)|MIPS]], Intel Quark, Tensilica 's Xtensa , y por [[Freescale]] potencia CPU' interfaz de modo de fondo de depuración (BDM).


== Véase también ==
== Véase también ==
* [[Hardware libre]]

* [[Hardware informático de código abierto|Hardware de informática de fuente abierta]]


== Referencias ==
== Referencias ==
{{Reflist|30em|refs=
{{Listaref|30em|refs=<ref name="contributors">{{cite web |url=https://riscv.org/contributors/ |title=Contributors |website=riscv.org |publisher=Regents of the University of California |fechaacceso=11 de enero de 2019 |urlarchivo=https://web.archive.org/web/20180613234241/https://riscv.org/contributors/ |fechaarchivo=13 de junio de 2018 }}</ref>
<ref name="contributors">{{cite web
<ref name="isa">{{cite web |last=Waterman |first=Andrew |last2=Asanović |first2=Krste |author-link2=Krste Asanović |title=The RISC-V Instruction Set Manual, Volume I: Base User-Level ISA version 2.2 |id=EECS-2016-118 |url=https://riscv.org/specifications/ |publisher=University of California, Berkeley |access-date=25 May 2017}}</ref>
|url = https://riscv.org/contributors/
<ref name="isacompressed">{{cite web |url=https://riscv.org/wp-content/uploads/2015/11/riscv-compressed-spec-v1.9.pdf |title=The RISC-V Compressed Instruction Set Manual Version 1.9 (draft) |last=Waterman |first=Andrew |author2=etal |website=RISC-V |access-date=18 de julio de 2016}}</ref>
|title = Contributors
<ref name="riscstart">{{cite journal |last=Patterson |first=David A. |author-link=David Patterson (computer scientist) |last2=Ditzel |first2=David R. |title=The Case for the Reduced Instruction Set Computer |journal=ACM SIGARCH Computer Architecture News |date=October 1980 |volume=8 |issue=6 |page=25 |url=http://dl.acm.org/citation.cfm?id=641917 |doi=10.1145/641914.641917}}</ref>
|website = riscv.org
<ref name="amber">{{cite web |title=Amber ARM-compatible core |url=http://opencores.org/project,amber |website=OpenCores |access-date=26 de agosto de 2014}}</ref>
|publisher = Regents of the University of California
<ref name="arm4u">{{cite web |title=ARM4U |url=http://opencores.org/project,arm4u |website=OpenCores |publisher=OpenCores |access-date=26 de agosto de 2014}}</ref>
|access-date = 2014-08-25
<ref name="rocketsspeed">{{cite web |title=Rocket Core Generator |url=https://riscv.org/download.html#tab_rocket |website=RISC-V |publisher=Regents of the University of California |fechaacceso=11 de enero de 2019 |urlarchivo=https://web.archive.org/web/20140926222655/http://riscv.org/download.html#tab_rocket |fechaarchivo=26 de septiembre de 2014 }}</ref>
|archive-url = https://web.archive.org/web/20180907044920/https://riscv.org/contributors/
<ref name="riscvc">{{cite book |last=Waterman |first=Andrew |title=Improving Energy Efficiency and Reducing Code Size with RISC-V Compressed |fecha=13 de mayo de 2011 |publisher=Regents of the University of California |location=U.C. Berkeley |page=32 |url=http://www.eecs.berkeley.edu/Pubs/TechRpts/2011/EECS-2011-63.html |access-date=25 de agosto de 2014}}</ref>
|archive-date = 2018-09-07}}</ref>
<ref name="shakti">{{cite web |title=SHAKTI Processor Project |url=http://rise.cse.iitm.ac.in/shakti.html |publisher=Indian Institute of Technology Madras |fechaacceso=11 de enero de 2019 |urlarchivo=https://web.archive.org/web/20170821040554/http://rise.cse.iitm.ac.in/shakti.html |fechaarchivo=21 de agosto de 2017 }}</ref>
<ref name="isa2.1">{{cite web
<ref name="iitmadrasospp">{{cite web |title=IIT Madras Open Source Processor Project |url=http://www.rapidio.org/2014/08/iit-madras-open-source-processor-project/ |website=Rapid IO |publisher=IIT Madras |access-date=13 de septiembre de 2014}}</ref>
|last1 = Waterman
<ref name="lowrisc">{{cite web |title=lowRISC website |url=http://www.lowrisc.org/ |access-date=10 May 2015}}</ref>
|first1 = Andrew
<ref name="freebsdriscv-committed">{{cite web |url=https://freebsdfoundation.blogspot.be/2016/02/initial-freebsd-risc-v-architecture.html |title=FreeBSD Foundation: Initial FreeBSD RISC-V Architecture Port Committed}}</ref>
|last2 = Asanović
<ref name="freebsdriscv">{{cite web |url=https://wiki.freebsd.org/riscv |title=FreeBSD Wiki: RISC-V}}</ref>}}
|first2 = Krste
|title = The RISC-V Instruction Set Manual, Volume I: Base User-Level ISA version 2.1
|id = EECS-2016-118
|url = https://www2.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-118.pdf
|date = 31 May 2016
|publisher = University of California, Berkeley
|access-date = 2021-11-05}}</ref>
<ref name="isa2.2">{{cite web
|last1 = Waterman
|first1 = Andrew
|last2 = Asanović
|first2 = Krste
|title = The RISC-V Instruction Set Manual, Volume I: Base User-Level ISA version 2.2
|url = https://riscv.org/wp-content/uploads/2017/05/riscv-spec-v2.2.pdf
|date = 7 May 2017
|publisher = RISC-V International
|access-date = 2021-11-05}}</ref>
<ref name="isa20191213">{{cite web
|editor1-last = Waterman
|editor1-first= Andrew
|editor2-last = Asanović
|editor2-first= Krste
|title = The RISC-V Instruction Set Manual, Volume I: User-Level ISA, Document Version 20191213
|url = https://github.com/riscv/riscv-isa-manual/releases/download/Ratified-IMAFDQC/riscv-spec-20191213.pdf
|date = December 2019
|publisher = RISC-V Foundation
|access-date = 2021-11-05}}</ref>
<ref name=priv-isa>{{Cite web
|last1 = Waterman
|first1 = Andrew
|last2 = Asanović
|first2 = Krste
|title = The RISC-V Instruction Set Manual Volume II: Privileged Architecture Document Version 20211203
|url = https://github.com/riscv/riscv-isa-manual/releases/download/Priv-v1.12/riscv-privileged-20211203.pdf
|date = 2021-12-03
|publisher = RISC-V International
|access-date = 2021-11-05}}</ref>
<ref name="isacompressed">{{cite web
|url = https://riscv.org/wp-content/uploads/2015/11/riscv-compressed-spec-v1.9.pdf
|title = The RISC-V Compressed Instruction Set Manual Version 1.9 (draft)
|last = Waterman
|first = Andrew
|display-authors = etal
|website = RISC-V
|access-date = 2016-07-18}}</ref>
<ref name="isasbfree">{{cite web
|url=https://www2.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-146.pdf
|title=Conjuntos de instrucción Tendrían que Ser Libres: El Caso Para RISC-V
|last=Asanović
|first=Krste
|website=U.C. Berkeley Technical Reports
|publisher=Regents of the University of California
|access-date=2016-11-15}}</ref>
<ref name="riscstart">{{cite journal
|last1 = Patterson
|first1 = David A.
|last2 = Ditzel
|first2 = David R.
|title = The Case for the Reduced Instruction Set Computer
|journal = ACM SIGARCH Computer Architecture News
|date = October 1980
|volume = 8
|issue = 6
|page = 25
|doi = 10.1145/641914.641917| s2cid = 12034303}}</ref>
<ref name="amber">{{cite web
|title = Amber ARM-compatible core
|url = http://opencores.org/project,amber
|website = OpenCores
|access-date = 2014-08-26}}</ref>
<ref name="arm4u">{{cite web
|title = ARM4U
|url = http://opencores.org/project,arm4u
|website = OpenCores
|access-date = 2014-08-26}}</ref>
<ref name="rocketsspeed">{{cite web
|title = Rocket Core Generator
|url = https://riscv.org/download.html#tab_rocket
|website = RISC-V
|publisher = Regents of the University of California
|access-date = 2014-10-01
|archive-url = https://web.archive.org/web/20141006085238/https://riscv.org/download.html#tab_rocket
|archive-date= 2014-10-06}}</ref>
<ref name="riscvc">{{cite book
|last = Waterman
|first = Andrew
|title = Improving Energy Efficiency and Reducing Code Size with RISC-V Compressed
|date = 13 May 2011
|publisher = Regents of the University of California
|location = U.C. Berkeley
|page = 32
|url = http://www.eecs.berkeley.edu/Pubs/TechRpts/2011/EECS-2011-63.html
|access-date = 2014-08-25}}</ref>
<ref name="shakti">{{cite web
|title = SHAKTI Processor Program
|url = https://shakti.org.in
|publisher = Indian Institute of Technology Madras
| access-date = 2019-09-03}}</ref>
<ref name="iitmadrasospp">{{cite web
|title = IIT Madras Open Source Processor Project
|url = http://www.rapidio.org/2014/08/iit-madras-open-source-processor-project/
|website = Rapid IO
|date = 2014-08-26
|publisher = IIT Madras
|access-date = 2014-09-13
|archive-date = 2014-09-14
|archive-url=https://web.archive.org/web/20140914001234/http://www.rapidio.org/2014/08/iit-madras-open-source-processor-project</ref>
<ref name="lowrisc">{{cite web
|title = lowRISC website
|url = http://www.lowrisc.org/
|access-date = 10 May 2015}}</ref>
<ref name="freebsdriscv-committed">{{cite web
|url = https://freebsdfoundation.blogspot.be/2016/02/initial-freebsd-risc-v-architecture.html
|title = FreeBSD Foundation: Initial FreeBSD RISC-V Architecture Port Committed
|date = 2016-02-04}}</ref>
<ref name="freebsdriscv">{{cite web
|url = https://wiki.freebsd.org/riscv
|title = riscv - FreeBSD Wiki
|website = wiki.freebsd.org}}</ref>}}



== Bibliografía ==
== Bibliografía ==
* {{Cita web|url=https://riscv.org/technical/specifications/|título=Especificaciones de la arquitectura RISC-V}}
* {{Cita web|url= https://www.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-118.pdf|título=Manual del juego de Instrucciones RISC-V|publisher = RISC-V International}}
* {{cite web|url=https://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-146.html|title=Conjuntos de instrucción Tendrían que Ser Libres: El Caso Para RISC-V|last1=Asanović|first1=Krste|last2=Patterson|first2=David A.|date=6 de Agosto de 2014|id=UCB/EECS-2014-146|website=EECS Departamento, Universidad de California, Berkeley}}


* {{cite conference|url=https://www.hotchips.org/wp-content/uploads/hc_archives/hc25/HC25-posters/HC25.26.p70-RISC-V-Warterman-UCB.pdf|title=The RISC-V Instruction Set|last1=Waterman|first1=Andrew|last2=Lee|first2=Yunsup|last3=Avizienis|first3=Rimas|last4=Cook|first4=Henry|last5=Patterson|first5=David A.|last6=Asanović|first6=Krste|date=25–27 August 2013|conference=Hot Chips 25|conference-url=https://www.hotchips.org/archives/2010s/hc25/|location=Stanford University, Palo Alto, California, USA|fechaacceso=15 de junio de 2024|fechaarchivo=6 de agosto de 2020|urlarchivo=https://web.archive.org/web/20200806171931/https://www.hotchips.org/wp-content/uploads/hc_archives/hc25/HC25-posters/HC25.26.p70-RISC-V-Warterman-UCB.pdf|deadurl=yes}}
* "{{Cita web|url=https://www.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-118.pdf|título=The RISC-V Instruction Set Manual}}".
* {{cite conference|url=https://riscv.org/wp-content/uploads/2015/02/riscv-software-toolchain-tutorial-hpca2015.pdf|title=RISC-V Software Ecosystem|last=Dabbelt|first=Palmer|date=7–11 February 2015|conference=High-Performance Computer Architecture (HPCA) 2015|conference-url=http://darksilicon.org/hpca/|location= San Francisco, California, USA}}

* {{cite conference|url=https://riscv.org/wp-content/uploads/2015/02/riscv-rocket-chip-generator-tutorial-hpca2015.pdf|title=RISC-V "Rocket Chip" SoC Generator in Chisel|last=Lee|first=Yunsup|date=7–11 February 2015|conference=High-Performance Computer Architecture (HPCA) 2015|conference-url=http://darksilicon.org/hpca/|location= San Francisco, California, USA}}
<div class="cx-template-editor-source-container" lang="en" dir="ltr" style="display: none;"><div class="cx-template-editor-source"><div class="cx-template-editor-title" title="Formats a citation to a website using the provided information such as URL and title. Used only for sources that are not correctly described by the specific citation templates for books, journals, news sources, etc.">Cita web</div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="url" class="cx-template-editor-param-key">URL</span><span data-key="url" title="The URL of the online location where the text of the publication can be found. Requires schemes of the type "http://..." or maybe even the  protocol relative scheme "//..."" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="url" style="position: relative;"><nowiki>https://www.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-118.pdf</nowiki></div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="title" class="cx-template-editor-param-key">Title</span><span data-key="title" title="The title of the source page on the website; will display with quotation marks added. Usually found at the top of your web browser. Not the name of the website." class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="title" style="position: relative;">The RISC-V Instruction Set Manual</div></div></div></div>
* {{cite web|url =https://riscv.org/wp-content/uploads/2015/11/riscv-compressed-spec-v1.9.pdf|title=The RISC-V Compressed Instruction Set Manual Version 1.9 (draft)|last1=Waterman|first1=Andrew|last2=Lee|first2=Yunsup|last3=Patterson|first3=David A.|last4=Asanović|first4=Krste|date=2015-11-05|website=RISC-V}}
* Asanović, Krste; Patterson, David Un. (6 de agosto de 2014). "Conjuntos de instrucción Tendrían que Ser Libres: El Caso Para RISC-V". EECS Departamento, Universidad de California, Berkeley. UCB/EECS-2014-146.<templatestyles />
* Waterman, Andrew; Lee, Yunsup; Avizienis, Rimas; Cocinero, Henry; Patterson, David Un.; Asanović, Krste (25@–27 de agosto de 2013). Referencia vacía (ayuda){{Cita conferencia}} Pone (PDF). 25. Stanford Universidad, Palo Alto, California, EE.UU..
* Dabbelt, Palmer (7@–11 de febrero de 2015). Referencia vacía (ayuda){{Cita conferencia}} (PDF). Alto-Arquitectura de Ordenador del Rendimiento (HPCA) 2015. San Francisco, California, EE.UU..
* Lee, Yunsup (7@–11 de febrero de 2015). RISC-V "Chip de Cohete" SoC Generador en Chisel (PDF). Alto-Arquitectura de Ordenador del Rendimiento (HPCA) 2015. San Francisco, California, EE.UU..Referencia vacía (ayuda){{Cita conferencia}}
* Waterman, Andrew; Lee, Yunsup; Patterson, David Un.; Asanović, Krste (5 de noviembre de 2015). "Manual del conjunto de instrucciones comprimidas del RISC-V. Versión 1.9 (borrador)" ({{Cita web|url=https://riscv.org/wp-content/uploads/2015/11/riscv-compressed-spec-v1.9.pdf|título=The RISC-V Compressed Instruction Set Manual Version 1.9 (draft)|apellido=Waterman|nombre=Andrew|fecha=5 de noviembre de 2015}}).
* {{cita libro | apellido=Patterson | nombre=David | apellido2=Waterman | nombre2=Andrew | enlaceautor=David_A._Patterson | título=Guía Práctica de RISC-V: El Atlas de una Arquitectura Abierta | url=http://riscvbook.com/espanol/ | año=2018| isbn=978-0-9992491-2-3| páginas=215 |traductores= Alí Lemus, Eduardo Corpeño }}
* {{cita libro | apellido=Patterson | nombre=David | apellido2=Waterman | nombre2=Andrew | enlaceautor=David_A._Patterson | título=Guía Práctica de RISC-V: El Atlas de una Arquitectura Abierta | url=http://riscvbook.com/espanol/ | año=2018| isbn=978-0-9992491-2-3| páginas=215 |traductores= Alí Lemus, Eduardo Corpeño }}


<div class="cx-template-editor-source-container" lang="en" dir="ltr" style="display: none;"><div class="cx-template-editor-source"><div class="cx-template-editor-title" title="Formats a citation to a website using the provided information such as URL and title. Used only for sources that are not correctly described by the specific citation templates for books, journals, news sources, etc.">Cita web</div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="url" class="cx-template-editor-param-key">URL</span><span data-key="url" title="The URL of the online location where the text of the publication can be found. Requires schemes of the type "http://..." or maybe even the  protocol relative scheme "//..."" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="url" style="position: relative;"><nowiki>https://riscv.org/wp-content/uploads/2015/11/riscv-compressed-spec-v1.9.pdf</nowiki></div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="title" class="cx-template-editor-param-key">Title</span><span data-key="title" title="The title of the source page on the website; will display with quotation marks added. Usually found at the top of your web browser. Not the name of the website." class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="title" style="position: relative;">The RISC-V Compressed Instruction Set Manual Version 1.9 (draft)</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="last" class="cx-template-editor-param-key">Last name</span><span data-key="last" title="The surname of the author; don't wikilink, use 'authorlink'; can suffix with a numeral to add additional authors" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="last" style="position: relative;">Waterman</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="first" class="cx-template-editor-param-key">First name</span><span data-key="first" title="Given or first name, middle names, or initials of the author; don't wikilink, use 'authorlink'; can suffix with a numeral to add additional authors" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="first" style="position: relative;">Andrew</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="date" class="cx-template-editor-param-key">Source date</span><span data-key="date" title="Full date when the source was published; if unknown, use access-date instead; do not wikilink" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="date" style="position: relative;">5 November 2015</div></div></div></div>
<div class="cx-template-editor-source-container" lang="en" dir="ltr" style="display: none;"><div class="cx-template-editor-source"><div class="cx-template-editor-title" title="Formats a citation to a website using the provided information such as URL and title. Used only for sources that are not correctly described by the specific citation templates for books, journals, news sources, etc.">Cita web</div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="url" class="cx-template-editor-param-key">URL</span></div><div class="cx-template-editor-param-value" data-key="url" style="position: relative;"><nowiki>https://riscv.org/wp-content/uploads/2015/11/riscv-compressed-spec-v1.9.pdf</nowiki></div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="title" class="cx-template-editor-param-key">Title</span></div><div class="cx-template-editor-param-value" data-key="title" style="position: relative;">The RISC-V Compressed Instruction Set Manual Version 1.9 (draft)</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="last" class="cx-template-editor-param-key">Last name</span></div><div class="cx-template-editor-param-value" data-key="last" style="position: relative;">Waterman</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="first" class="cx-template-editor-param-key">First name</span></div><div class="cx-template-editor-param-value" data-key="first" style="position: relative;">Andrew</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="date" class="cx-template-editor-param-key">Source date</span></div><div class="cx-template-editor-param-value" data-key="date" style="position: relative;">5 November 2015</div></div></div></div>


== Enlaces externos ==
== Enlaces externos ==

* <span class="url">[https://riscv.org/ Sitio web oficial]</span>{{Official website}}
* <span class="url">[https://riscv.org/ Sitio web oficial]</span>{{Official website}}
* "RISC-V: Un Estándar Abierto para SoCs: El caso para un abierto ISA". {{Cita web|url=https://www.eetimes.com/author.asp?doc_id=1323406|título=RISC-V: An Open Standard for SoCs: The case for an open ISA|fecha=8 de julio de 2014|sitioweb=EETimes}} 8 de julio de 2014.


<div class="cx-template-editor-source-container" lang="en" dir="ltr" style="display: none;"><div class="cx-template-editor-source"><div class="cx-template-editor-title" title="Formats a citation to a website using the provided information such as URL and title. Used only for sources that are not correctly described by the specific citation templates for books, journals, news sources, etc.">Cita web</div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="url" class="cx-template-editor-param-key">URL</span></div><div class="cx-template-editor-param-value" data-key="url" style="position: relative;">https://www.eetimes.com/author.asp?doc_id=1323406</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="title" class="cx-template-editor-param-key">Title</span></div><div class="cx-template-editor-param-value" data-key="title" style="position: relative;">RISC-V: An Open Standard for SoCs: The case for an open ISA</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="date" class="cx-template-editor-param-key">Source date</span></div><div class="cx-template-editor-param-value" data-key="date" style="position: relative;">8 July 2014</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="website" class="cx-template-editor-param-key">Website</span></div><div class="cx-template-editor-param-value" data-key="website" style="position: relative;">EETimes</div></div></div></div>
* "RISC-V: Un Estándar Abierto para SoCs: El caso para un abierto ISA". {{Cita web|url=https://www.eetimes.com/author.asp?doc_id=1323406|título=RISC-V: An Open Standard for SoCs: The case for an open ISA|fecha=8 de julio de 2014|sitioweb=EETimes}} 8 de julio de 2014.


* Hruska, Joel (21 de agosto de 2014) "RISC cabalga de nuevo: La nueva arquitectura RISC-V espera luchar contra ARM y x86 por ser totalmente código abierto"{{Cita web|url=https://www.extremetech.com/computing/188405-risc-rides-again-new-risc-v-architecture-hopes-to-battle-arm-and-x86-by-being-totally-open-source|título=RISC rides again: New RISC-V architecture hopes to battle ARM and x86 by being totally open source|apellido=Hruska|nombre=Joel|fecha=21 de agosto de 2014|editorial=ExtremeTech}}
<div class="cx-template-editor-source-container" lang="en" dir="ltr" style="display: none;"><div class="cx-template-editor-source"><div class="cx-template-editor-title" title="Formats a citation to a website using the provided information such as URL and title. Used only for sources that are not correctly described by the specific citation templates for books, journals, news sources, etc.">Cita web</div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="url" class="cx-template-editor-param-key">URL</span><span data-key="url" title="The URL of the online location where the text of the publication can be found. Requires schemes of the type "http://..." or maybe even the  protocol relative scheme "//..."" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="url" style="position: relative;">https://www.eetimes.com/author.asp?doc_id=1323406</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="title" class="cx-template-editor-param-key">Title</span><span data-key="title" title="The title of the source page on the website; will display with quotation marks added. Usually found at the top of your web browser. Not the name of the website." class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="title" style="position: relative;">RISC-V: An Open Standard for SoCs: The case for an open ISA</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="date" class="cx-template-editor-param-key">Source date</span><span data-key="date" title="Full date when the source was published; if unknown, use access-date instead; do not wikilink" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="date" style="position: relative;">8 July 2014</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="website" class="cx-template-editor-param-key">Website</span><span data-key="website" title="Name of the website; may be wikilinked; will display in italics. Having both 'Publisher' and 'Website' is redundant in most cases" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="website" style="position: relative;">EETimes</div></div></div></div>
* Hruska, Joel (21 de agosto de 2014). "RISC cabalga de nuevo: La nueva arquitectura RISC-V espera luchar contra ARM y x86 por ser totalmente código abierto". {{Cita web|url=https://www.extremetech.com/computing/188405-risc-rides-again-new-risc-v-architecture-hopes-to-battle-arm-and-x86-by-being-totally-open-source|título=RISC rides again: New RISC-V architecture hopes to battle ARM and x86 by being totally open source|apellido=Hruska|nombre=Joel|fecha=21 de agosto de 2014|editorial=[[ExtremeTech]]}}.


<div class="cx-template-editor-source-container" lang="en" dir="ltr" style="display: none;"><div class="cx-template-editor-source"><div class="cx-template-editor-title" title="Formats a citation to a website using the provided information such as URL and title. Used only for sources that are not correctly described by the specific citation templates for books, journals, news sources, etc.">Cita web</div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="url" class="cx-template-editor-param-key">URL</span><span data-key="url" title="The URL of the online location where the text of the publication can be found. Requires schemes of the type "http://..." or maybe even the  protocol relative scheme "//..."" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="url" style="position: relative;"><nowiki>https://www.extremetech.com/computing/188405-risc-rides-again-new-risc-v-architecture-hopes-to-battle-arm-and-x86-by-being-totally-open-source</nowiki></div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="title" class="cx-template-editor-param-key">Title</span><span data-key="title" title="The title of the source page on the website; will display with quotation marks added. Usually found at the top of your web browser. Not the name of the website." class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="title" style="position: relative;">RISC rides again: New RISC-V architecture hopes to battle ARM and x86 by being totally open source</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="last" class="cx-template-editor-param-key">Last name</span><span data-key="last" title="The surname of the author; don't wikilink, use 'authorlink'; can suffix with a numeral to add additional authors" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="last" style="position: relative;">Hruska</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="first" class="cx-template-editor-param-key">First name</span><span data-key="first" title="Given or first name, middle names, or initials of the author; don't wikilink, use 'authorlink'; can suffix with a numeral to add additional authors" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="first" style="position: relative;">Joel</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="date" class="cx-template-editor-param-key">Source date</span><span data-key="date" title="Full date when the source was published; if unknown, use access-date instead; do not wikilink" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="date" style="position: relative;">21 August 2014</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="publisher" class="cx-template-editor-param-key">Publisher</span><span data-key="publisher" title="Name of the publisher; may be wikilinked. Having both 'Publisher' and 'Website' is redundant in most cases. " class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="publisher" style="position: relative;">[[ExtremeTech]]</div></div></div></div>
<div class="cx-template-editor-source-container" lang="en" dir="ltr" style="display: none;"><div class="cx-template-editor-source"><div class="cx-template-editor-title" title="Formats a citation to a website using the provided information such as URL and title. Used only for sources that are not correctly described by the specific citation templates for books, journals, news sources, etc.">Cita web</div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="url" class="cx-template-editor-param-key">URL</span></div><div class="cx-template-editor-param-value" data-key="url" style="position: relative;"><nowiki>https://www.extremetech.com/computing/188405-risc-rides-again-new-risc-v-architecture-hopes-to-battle-arm-and-x86-by-being-totally-open-source</nowiki></div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="title" class="cx-template-editor-param-key">Title</span></div><div class="cx-template-editor-param-value" data-key="title" style="position: relative;">RISC rides again: New RISC-V architecture hopes to battle ARM and x86 by being totally open source</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="last" class="cx-template-editor-param-key">Last name</span></div><div class="cx-template-editor-param-value" data-key="last" style="position: relative;">Hruska</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="first" class="cx-template-editor-param-key">First name</span></div><div class="cx-template-editor-param-value" data-key="first" style="position: relative;">Joel</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="date" class="cx-template-editor-param-key">Source date</span></div><div class="cx-template-editor-param-value" data-key="date" style="position: relative;">21 August 2014</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="publisher" class="cx-template-editor-param-key">Publisher</span></div><div class="cx-template-editor-param-value" data-key="publisher" style="position: relative;">[[ExtremeTech]]</div></div></div></div>
* "Analizando la conjunto de instrucciones del RISC-V". {{Cita web|url=http://www.adapteva.com/andreas-blog/analyzing-the-risc-v-instruction-set-architecture/|título=Analyzing the RISC-V Instruction Set Architecture|fecha=11 de agosto de 2014|sitioweb=[[Adapteva]]}} 11 de agosto de 2014.
* "Analizando la conjunto de instrucciones del RISC-V". {{Cita web|url=http://www.adapteva.com/andreas-blog/analyzing-the-risc-v-instruction-set-architecture/|título=Analyzing the RISC-V Instruction Set Architecture|fecha=11 de agosto de 2014|sitioweb=Adapteva}} 11 de agosto de 2014.


<div class="cx-template-editor-source-container" lang="en" dir="ltr" style="display: none;"><div class="cx-template-editor-source"><div class="cx-template-editor-title" title="Formats a citation to a website using the provided information such as URL and title. Used only for sources that are not correctly described by the specific citation templates for books, journals, news sources, etc.">Cita web</div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="url" class="cx-template-editor-param-key">URL</span><span data-key="url" title="The URL of the online location where the text of the publication can be found. Requires schemes of the type "http://..." or maybe even the  protocol relative scheme "//..."" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="url" style="position: relative;"><nowiki>http://www.adapteva.com/andreas-blog/analyzing-the-risc-v-instruction-set-architecture/</nowiki></div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="title" class="cx-template-editor-param-key">Title</span><span data-key="title" title="The title of the source page on the website; will display with quotation marks added. Usually found at the top of your web browser. Not the name of the website." class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="title" style="position: relative;">Analyzing the RISC-V Instruction Set Architecture</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="date" class="cx-template-editor-param-key">Source date</span><span data-key="date" title="Full date when the source was published; if unknown, use access-date instead; do not wikilink" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="date" style="position: relative;">11 August 2014</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="website" class="cx-template-editor-param-key">Website</span><span data-key="website" title="Name of the website; may be wikilinked; will display in italics. Having both 'Publisher' and 'Website' is redundant in most cases" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="website" style="position: relative;">[[Adapteva]]</div></div></div></div>
<div class="cx-template-editor-source-container" lang="en" dir="ltr" style="display: none;"><div class="cx-template-editor-source"><div class="cx-template-editor-title" title="Formats a citation to a website using the provided information such as URL and title. Used only for sources that are not correctly described by the specific citation templates for books, journals, news sources, etc.">Cita web</div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="url" class="cx-template-editor-param-key">URL</span></div><div class="cx-template-editor-param-value" data-key="url" style="position: relative;"><nowiki>http://www.adapteva.com/andreas-blog/analyzing-the-risc-v-instruction-set-architecture/</nowiki></div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="title" class="cx-template-editor-param-key">Title</span></div><div class="cx-template-editor-param-value" data-key="title" style="position: relative;">Analyzing the RISC-V Instruction Set Architecture</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="date" class="cx-template-editor-param-key">Source date</span></div><div class="cx-template-editor-param-value" data-key="date" style="position: relative;">11 August 2014</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="website" class="cx-template-editor-param-key">Website</span></div><div class="cx-template-editor-param-value" data-key="website" style="position: relative;">[[Adapteva]]</div></div></div></div>
* "Búsqueda: RISC-V desde entonces 2013". {{Cita web|url=https://scholar.google.com.au/scholar?q=%22RISC-V%22&btnG=&hl=en&as_sdt=0%2C5&as_ylo=2013|título=search: RISC-V since 2013|sitioweb=[[Google Scholar]]}}.
* "Búsqueda: RISC-V desde entonces 2013". {{Cita web|url=https://scholar.google.com.au/scholar?q=%22RISC-V%22&btnG=&hl=en&as_sdt=0%2C5&as_ylo=2013|título=search: RISC-V since 2013|sitioweb=[[Google Scholar]]}}.


<div class="cx-template-editor-source-container" lang="en" dir="ltr" style="display: none;"><div class="cx-template-editor-source"><div class="cx-template-editor-title" title="Formats a citation to a website using the provided information such as URL and title. Used only for sources that are not correctly described by the specific citation templates for books, journals, news sources, etc.">Cita web</div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="url" class="cx-template-editor-param-key">URL</span><span data-key="url" title="The URL of the online location where the text of the publication can be found. Requires schemes of the type "http://..." or maybe even the  protocol relative scheme "//..."" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="url" style="position: relative;">https://scholar.google.com.au/scholar?q=%22RISC-V%22&btnG=&hl=en&as_sdt=0%2C5&as_ylo=2013</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="title" class="cx-template-editor-param-key">Title</span><span data-key="title" title="The title of the source page on the website; will display with quotation marks added. Usually found at the top of your web browser. Not the name of the website." class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="title" style="position: relative;">search: RISC-V since 2013</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="website" class="cx-template-editor-param-key">Website</span><span data-key="website" title="Name of the website; may be wikilinked; will display in italics. Having both 'Publisher' and 'Website' is redundant in most cases" class="cx-template-editor-param-desc"></span></div><div class="cx-template-editor-param-value" data-key="website" style="position: relative;">[[Google Scholar]]</div></div></div></div>
<div class="cx-template-editor-source-container" lang="en" dir="ltr" style="display: none;"><div class="cx-template-editor-source"><div class="cx-template-editor-title" title="Formats a citation to a website using the provided information such as URL and title. Used only for sources that are not correctly described by the specific citation templates for books, journals, news sources, etc.">Cita web</div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="url" class="cx-template-editor-param-key">URL</span></div><div class="cx-template-editor-param-value" data-key="url" style="position: relative;">https://scholar.google.com.au/scholar?q=%22RISC-V%22&btnG=&hl=en&as_sdt=0%2C5&as_ylo=2013</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="title" class="cx-template-editor-param-key">Title</span></div><div class="cx-template-editor-param-value" data-key="title" style="position: relative;">search: RISC-V since 2013</div></div><div class="cx-template-editor-param"><div class="cx-template-editor-param-title"><span id="website" class="cx-template-editor-param-key">Website</span></div><div class="cx-template-editor-param-value" data-key="website" style="position: relative;">[[Google Scholar]]</div></div></div></div>


{{Control de autoridades}}
{{Control de autoridades}}
[[Categoría:Microprocesadores de código abierto]]
[[Categoría:Microcontroladores]]
[[Categoría:Microcontroladores]]
[[Categoría:Introducciones relacionadas a la ciencia de la computación de 2010]]
[[Categoría:Introducciones relacionadas a la ciencia de la computación de 2010]]

Revisión actual - 16:46 29 sep 2024

RISC-V

RISC-V prototipo de un procesador, enero de 2013.
Información
Tipo RISC ISA
Desarrollador Universidad de California en Berkeley
Datos técnicos
Conjunto de instrucciones RISC-V
Software
Sistema operativo GNU/Linux

RISC-V es una arquitectura de conjunto de instrucciones (ISA) de hardware libre basado en un diseño de tipo RISC (conjunto de instrucciones reducido).

A diferencia de la mayoría de los conjuntos de instrucciones, el de RISC-V es libre y abierto y se puede usar sin regalías para cualquier propósito, lo que permite que cualquiera diseñe, fabrique y venda chips y software de RISC-V. Si bien no es la primera ISA de arquitectura abierta, es significativa porque está diseñada para ser útil en una amplia gama de dispositivos. El conjunto de instrucciones también tiene un cuerpo sustancial de software de soporte, que evita una debilidad habitual de los nuevos conjuntos de instrucciones.

El proyecto comenzó en 2010 en la Universidad de California en Berkeley, pero muchos colaboradores son voluntarios y trabajadores de la industria fuera de la universidad.

El conjunto de instrucciones se ha diseñado pensando en implementaciones pequeñas, rápidas y de bajo consumo para el mundo real,[1][2]​ pero sin una sobre-ingeniería excesiva que buscase una microarquitectura concreta.[3][4][5]

En mayo de 2017, estaba cerrada la versión 2.2 del conjunto de instrucciones del espacio de usuario[6]​. El conjunto de instrucciones privilegiadas estaba disponible como borrador en la versión 1.10.

Importancia

[editar]

Los autores de RISC-V pretenden proporcionar varios diseños de CPU disponibles libremente bajo las licencias BSD, que permiten que los trabajos derivados, como los diseños de chips RISC-V, sean abiertos y gratuitos, al igual que RISC-V, o cerrados y de propiedad exclusiva.

Por el contrario, los proveedores de chips comerciales como ARM Holdings y MIPS Technologies cobran tarifas de licencia sustanciales por el uso de sus patentes.[7][8]​ También requieren acuerdos de no divulgación antes de publicar documentos que describen las ventajas de sus diseños y el conjunto de instrucciones. El secreto impide la auditoría de seguridad.[cita requerida]

El desarrollo de una CPU requiere experiencia en diseño en varias especialidades: lógica digital electrónica, compiladores y sistemas operativos. Es raro encontrar esto fuera de un equipo de ingeniería profesional. El resultado es que los conjuntos modernos de instrucción en computadora de alta calidad para fines generales no han estado ampliamente disponibles en ningún lugar, ni siquiera explicados, excepto en entornos académicos. Debido a esto, muchos colaboradores de RISC-V lo ven como un esfuerzo comunitario unificado. Esta necesidad de una gran base de contribuyentes es parte de la razón por la cual RISC-V se diseñó para adaptarse a tantos usos.

Los autores de RISC-V también tienen una importante investigación y experiencia de usuario que validan sus diseños en silicio y simulación. El RISC-V ISA es un desarrollo directo de una serie de proyectos académicos de diseño de computadoras. Se originó en parte para ayudar a tales proyectos.

Historia

[editar]

Predecesores

[editar]

El término RISC data de alrededor de 1980.[9]​ Antes de esto, existía cierto conocimiento de que las computadoras más simples podrían 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.

Los académicos crearon el conjunto de instrucciones RISC DLX para la primera edición de Arquitectura de Computadora: Un Enfoque Cuantitativo en 1990. David Patterson fue un autor, y luego asistió a RISC-V. DLX era para uso educativo. Académicos y aficionados lo implementaron utilizando arreglos de puertas programables en campo (FPGA). No fue un éxito comercial.

Las CPU ARM, versiones 2 y anteriores, tenían un conjunto de instrucciones de dominio público, y aún es compatible con la Colección de compiladores GNU (GCC), un popular compilador de software libre. Existen tres núcleos de código abierto para esta ISA, pero no se han fabricado.[10][11]

OpenRISC es una ISA de código abierto basada en DLX, con diseños RISC asociados. Es totalmente compatible con implementaciones GCC y Linux. Sin embargo, tiene pocas implementaciones comerciales.

Fundación

[editar]

Krste Asanović en la Universidad de California, Berkeley, encontró muchos usos para un sistema informático de código abierto. 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. David Patterson en Berkeley también ayudó en el esfuerzo. Originalmente identificó las propiedades de Berkeley RISC , y RISC-V es una de sus largas series de proyectos de investigación cooperativa RISC.[12][2]​ basados ​​en RISC en la Universidad de California, Berkeley (RISC -I y RISC-II publicados en 1981 por Patterson, quien se refiere[13]​a la arquitectura SOAR[14]​ de 1984 como "RISC-III" y a la arquitectura SPUR[15]​ de 1988 como "RISC-IV"). En esta etapa, los estudiantes proporcionaron software inicial, simulaciones y diseños de CPU.[16]​ Los primeros fondos de financiación fueron proporcionados por DARPA.

Una lista parcial de organizaciones que apoyan la Fundación RISC-V incluye: AMD, Andes Technology, BAE Systems , Berkeley Architecture Research, Bluespec, Inc. , Cortus , Google , GreenWaves Technologies, Hewlett Packard Enterprise, Huawei, IBM, Imperas Software, Instituto de Tecnología de Computación (ICT) Academia China de las Ciencias, IIT-Madras, Lattice Semiconductor, Mellanox Technologies, Microsemi, Micron Technologies, Nvidia, NXP, Oracle, Qualcomm, Rambus Cryptography Research, Western Digital, SiFive y Raspberry Pi Foundation.[17][18][19][20]

Premios

[editar]
  • 2017: Premio a la elección del analista de The Linley Group a la mejor tecnología (para el conjunto de instrucciones)[21]

Requisitos motivadores

[editar]

Los diseñadores dicen que el conjunto de instrucciones es la interfaz principal en una computadora, porque se encuentra entre el hardware y el software. Si un buen conjunto de instrucciones está abierto, disponible para que todos lo usen, debería reducir drásticamente el costo del software al permitir que se reutilice mucho más. También debería aumentar la competencia entre los proveedores de hardware, que pueden usar más recursos para el diseño y menos para el soporte de software.

Los diseñadores afirman que los nuevos principios son cada vez más 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 fallaron, la mayoría lo hizo porque sus compañías patrocinadoras fallaron comercialmente, no porque los conjuntos de instrucciones fueran técnicamente deficientes. Por lo tanto, un conjunto de instrucciones abiertas bien diseñado y diseñado con principios bien establecidos debería atraer el apoyo a largo plazo de muchos proveedores.

La mayoría de los ISA abiertos utilizaban la Licencia Pública General de GNU (GPL), alentando a los usuarios a abrir sus implementaciones para que otros los copien y los usen.

A diferencia de otros diseños académicos que están optimizados solo para la simplicidad de la exposición, los diseñadores afirman que el conjunto de instrucciones RISC-V es para computadoras prácticas. Se dice que tiene características para aumentar la velocidad de la computadora, y aun así reducir el costo y el uso de energía. Estos incluyen una arquitectura de carga y almacenamiento, patrones de bits para simplificar los multiplexores en una CPU, punto flotante basado en estándares simplificados, un diseño que es arquitectónicamente neutral y que coloca los bits más significativos en una ubicación fija para acelerar la extensión de signo. Se dice que la extensión de la señal a menudo se encuentra en la ruta de sincronización crítica.[2]: 17 

El conjunto de instrucciones está diseñado para una amplia gama de usos. Admite tres anchos de palabra, 32, 64 y 128 bits, y una variedad de subconjuntos. Las definiciones de cada subconjunto varían ligeramente para los tres anchos de palabra. Los subconjuntos son compatibles con sistemas integrados pequeños, computadoras personales, supercomputadoras con procesadores vectoriales y computadoras paralelas montadas en bastidores a escala de almacén.

El conjunto de instrucciones es de ancho variable y extensible, de modo que siempre se pueden agregar más bits de codificación. Se reservó el espacio para la versión extendida de ISA de 128 bits, ya que 60 años de experiencia en la industria han demostrado que el error más irrecuperable en el diseño del conjunto de instrucciones es la falta de espacio de direcciones de memoria. A partir de 2016, la ISA de 128 bits permanece indefinida intencionalmente, porque aún hay muy poca experiencia práctica con sistemas de memoria tan grandes.

Sin embargo, RISC-V también apoya los usos académicos de los diseñadores. La simplicidad del subconjunto de enteros permite los ejercicios básicos de los estudiantes. El subconjunto de enteros es un simple software de ISA que permite controlar máquinas de investigación. La ISA de longitud variable permite extensiones tanto para los ejercicios de los estudiantes como para la investigación. El conjunto de instrucciones privilegiadas separadas permite la investigación en el soporte del sistema operativo, sin rediseñar los compiladores. La propiedad intelectual abierta de RISC-V permite que sus diseños se publiquen, reutilicen y modifiquen.

Software

[editar]

Un problema normal para un nuevo conjunto de instrucciones es la falta de diseños y software 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, software intermedio y software de diseño.

El sitio web de RISC-V tiene una especificación para las instrucciones en modo usuario y una especificación preliminar para un conjunto de instrucciones privilegiadas de propósito general, para soportar sistemas operativos.[22]

Hay varios diseños de CPU de fuente abierta, incluyendo la Máquina de Berkeley fuera de servicio (BOOM) de 64 bits, [21] Cohete de 64 bits, [22] cinco diseños de CPU Sodor de 32 bits de Berkeley, [23] picorv32 por Clifford Wolf, scr1 de Syntacore, PULPino (Riscy and Zero-Riscy) de ETH Zürich / Universidad de Bolonia.[23][24][25][26]​ y otros. La CPU Sodor de tres etapas parece ser adecuada para una pequeña CPU integrada. Rocket puede adaptarse a computadoras intermedias compactas y de bajo consumo, como dispositivos personales. BOOM usa gran parte de la infraestructura creada para Rocket, y puede usarse para computadoras personales, de supercomputadoras y de almacén. Tanto picorv como scr1 son implementaciones RV32IMC de clase de microcontrolador (MCU) de 32 bits en Verilog. Los núcleos en PULPino implementan una ISA RV32IMC simple para microcontroladores (Zero-Riscy) o una ISA RV32IMFC más potente con extensiones DSP personalizadas para el procesamiento de señales incrustadas.

El software de diseño incluye un compilador de diseño, Chisel, que puede reducir los diseños a Verilog para su uso en dispositivos. El sitio web incluye datos de verificación para probar implementaciones principales.[27]

Las herramientas de software RISC-V disponibles incluyen una cadena de herramientas de la colección de compiladores GNU (GCC) (con GDB, el depurador), una cadena de herramientas LLVM , el simulador OVPsim (y la biblioteca de modelos de procesadores rápidos RISC-V), el simulador Spike y un simulador en QEMU .

Existe compatibilidad con el sistema operativo para GNU/Linux, FreeBSD y NetBSD, pero las instrucciones en modo supervisor no están estandarizadas a partir del 10 de noviembre de 2016, por lo que este soporte es provisional. El Ports preliminar de FreeBSD para la arquitectura RISC-V se actualizó en febrero de 2016 y se envió en FreeBSD 11.0.[28][29]​ Los Ports de Debian[30]​ y Fedora[31]​ están estabilizando. Existe un port de Das U-Boot.[32]​ UEFI Spec v2.7 ha definido el enlace RISC-V y un puerto de tianocore ha sido realizado por ingenieros de HPE y se espera que esté actualizado. Hay un puerto preliminar del microkernel seL4 .[33][34]​ Hay un simulador para correr un RISC-V en sistema de Linux en navegador de web que utiliza Javascript. Almatary, Hesham. «heshamelmatary». GitHub. Consultado el 13 de julio de 2018. 

El simulador CREATOR [35][36][37][38][39]​ es portable y permite aprender diversos lenguajes ensamblador de diferentes procesadores (CREATOR dispone de ejemplos con una implementación de las instrucciones RISC-V y MIPS32).

El simulador educativo WepSIM[40][41]​ implementa un subconjunto de instrucciones RISC-V de forma microprogramada (RV32I + M) y permite ejecutar ejemplos de subrutinas en ensamblador. El simulador WepSIM puede usarse desde un navegador Web, y facilita aprender diversos aspectos de cómo una CPU funciona ( microprogramación, interrupciones, llamadas al sistema, etc.) usando ensamblador RISC-V.


Usuarios

[editar]

Comerciales

[editar]
  • SiFive, una compañía establecida específicamente para desarrollar hardware RISC-V, lanzó modelos de procesador en 2017. [33] [34] Estos incluyen un sistema de 64 bits de cuatro núcleos RISC-V SoCa en un chip (SoC). .[42][43][44]
  • SSyntacore, [36] un miembro fundador de la Fundación RISC-V y uno de los primeros proveedores comerciales de IP RISC-V, desarrolla y otorga licencias a la familia de RISC-V IP desde 2015. A partir de 2018 , la línea de productos incluye ocho 32 - y núcleos de 64 bits, incluido el núcleo SCR1 MCU de código abierto. [37] Los primeros SoC comerciales, basados en Syntacore IP, se demostraron en 2016.[45]
  • Andes Technology Corporation, miembro fundador de la Fundación RISC-V [39] que se unió al consorcio en 2016, lanzó sus primeros dos núcleos RISC-V en 2017. Los núcleos, el N25 y el NX25, vienen con un completo diseño de ecosistemas y un Número de socios del RISC-V. Andes está impulsando activamente el desarrollo del ecosistema RISC-V y espera lanzar varios nuevos productos RISC-V en 2018.
  • Codasip y UltraSoC han desarrollado una propiedad intelectual totalmente compatible para los SOC incorporados RISC-V que combinan los núcleos RISC-V de Codasip y otras IP con la depuración, optimización y análisis de UltraSoC.[46]
  • Imperas ha desarrollado una familia de modelos de procesadores rápidos para los diferentes subconjuntos de variantes IS32 RV32GC y RV64GC que forman parte de las distribuciones de simulador precisas de instrucciones OVPsim utilizadas para el desarrollo de software integrado.
  • GreenWaves Technologies anunció la disponibilidad de GAP8, un controlador de 32 bits 1 más 8 núcleos informáticos, SoC de 32 bits y placa de desarrollo en febrero de 2018. Su placa de desarrollo GAPuino GAP8 comenzó a distribuirse en mayo de 2018.[47][48][49]
  • Hex Five anunció la disponibilidad general de MultiZone Security: el primer entorno de ejecución confiable (TEE) de RISC-V que utiliza el estándar ISA de RISC-V y las extensiones de modo privilegiado.[50]
  • CloudBEAR es una empresa de procesadores IP que desarrolla sus propios núcleos RISC-V para una amplia gama de aplicaciones.[51]​A 2018
  • En 2020, el sector estratégico y de defensa de la India comenzó a utilizar el procesador Risecreek basado en RISC-V de 64 bits de 100-350 MHz desarrollado por los Institutos Indios de Tecnología que es fabricado por Intel con una litografía de 22 nm FinFET.[52][53]

En desarrollo

[editar]
  • El Instituto Indio de Tecnología de Madras (IIT-Madras) está desarrollando seis diseños de CPU de código abierto RISC-V para seis usos distintos, desde una pequeña CPU de 32 bits para Internet de las cosas (IoT) hasta grandes CPU de 64 bits diseñadas para computadoras de almacén como granjas de servidores basadas en las tecnologías RapidIO y Hybrid Memory Cube.[54][4][55]​ RISE inició con éxito Moushik de 32 bits para la aplicación de tarjetas de crédito, máquinas de votación electrónica (EVM), cámaras de vigilancia, cerraduras de seguridad y sistemas de gestión de salud personalizados.[53][56]
  • Nvidia planea usar RISC-V para reemplazar su procesador Falcon en sus tarjetas gráficas GeForce .[57]
  • ASTC desarrolló una CPU RISC-V para circuitos integrados incrustados.[58]
  • Adapteva planea utilizar RISC-V, en un sucesor de su producto acelerador de muchos puntos [49]
  • lowRISC es un proyecto sin fines de lucro para implementar un sistema de hardware de fuente completamente abierta en un chip (SoC) basado en el RISC-V ISA de 64 bits.[59]
  • El Laboratorio de Computación de la Universidad de Cambridge, en colaboración con el Proyecto FreeBSD, ha adaptado ese sistema operativo a RISC-V de 64 bits para utilizarlo como una plataforma de investigación de hardware y software.[29]
  • ETH Zúrich y la Universidad de Bolonia han desarrollado de manera cooperativa el procesador de código abierto RISC-V PULPino [51] como parte del proyecto Parallel Ultra-Low Power (PULP) para la computación IoT eficiente en energía.[60][61]
  • Western Digital anunció un plan para integrar procesadores RISC-V en sus futuros productos. [53] .[62]
  • Esperanto Technologies anunció que están desarrollando tres procesadores basados en RISC-V: el núcleo de alto rendimiento ET-Maxion, el núcleo de eficiencia energética ET-Minion y el procesador de gráficos ET-Graphics .[63]

Diseño

[editar]

ISA Base y extensiones

[editar]

RISC-V tiene un diseño modular, que consiste en partes de base alternativas, con extensiones opcionales agregadas. 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 las instrucciones (y su codificación), el flujo de control, los registros (y sus tamaños), la memoria y el direccionamiento, la manipulación lógica (es decir, el número entero) y los elementos auxiliares. Solo la base puede implementar una computadora de propósito general simplificada, con soporte completo de software, 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 conflicto.

Muchas computadoras RISC-V pueden implementar la extensión compacta para reducir el consumo de energía, el tamaño del código y el uso de la memoria. También hay planes futuros para admitir hipervisores y virtualización. [19] Junto con una extensión de conjunto de instrucciones de supervisor, S, un RVGC define todas las instrucciones necesarias para admitir de manera conveniente un sistema operativo de estilo Unix, interfaz de sistema operativo portátil ( POSIX ).

ISA base y extensiones
Nombre Descripción Versión Estado[más bajo-alfa 1]
Base
RV32I Conjunto de instrucciones de base entera, 32-bits 2.0 Sí Cerrada
RV32E Conjunto de instrucciones de base entera (embedded), 32-bits, 16 registros 1.9 No Abierta
RV64I Conjunto de instrucciones de base entera, 64-bits 2.0[64]
RV128I Conjunto de instrucciones de base entera, 128-bits 1.7[65]
Extensión
M Extensión estándar para Multiplicación de Entero y División 2.0 Sí Cerrada
Un Extensión estándar para Instrucciones Atómicas 2.0 No Abierta
F Extensión estándar para punto flotante de precisión simple 2.0 Sí Cerrada
D Extensión estándar para punto flotante de precisión doble 2.0 No Abierta
G Abreviatura para la base y extensiones anteriores
Q Extensión estándar para punto flotante de precisión cuádruple 2.0 Sí Cerrada
L Extensión estándar para punto flotante decimal 0.0 Sí Cerrada
C Extensión estándar para instrucciones comprimidas 2.0
B Extensión estándar para manipulación de bits 0.36
J Extensión estándar para lenguajes traducidos dinámicamente 0.0 Sí Cerrada
T Extensión estándar para Memoria Transaccional 0.0 No Abierta
P Extensión estándar para Empaquetado-SIMD Instrucciones 0.1 Sí Cerrada
V Extensión estándar para Operaciones de Vector 0.2 No Abierta
N Extensión estándar para interrupciones de nivel de usuario 1.1 No Abierta

Para dominar las combinaciones de funcionalidad que pueden implementarse, se define una nomenclatura para especificarlas. [4] La base del conjunto de instrucciones se especifica primero, la codificación para RISC-V, el ancho de bit de registro y la variante; por ejemplo, RV64I o RV32E. Luego sigue las letras que especifican extensiones implementadas en orden canónico (como arriba). La base, los enteros extendidos y los cálculos de punto flotante, y las primitivas de sincronización para la computación multinúcleo, la base y las extensiones MAFD, se consideran necesarias para el cálculo de propósito general, y por lo tanto tienen la taquigrafía, 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, taquigrafía para RV64IMAFDC.

Se ha propuesto un esquema de denominación con Zxxx para extensiones estándar y Yxxx para extensiones no estándar (específicas del proveedor). Por ejemplo, la extensión Ztso para el pedido total de tiendas, un modelo alternativo de consistencia de memoria para el ordenamiento de memoria débil, se encuentra en discusión.[66]

Conjuntos de registro

[editar]

RISC-V tiene 32 (o 16 en la variante embebidas) registros enteros y, cuando se implementa la extensión de punto flotante, 32 registros de punto flotante. A excepción de las instrucciones de acceso a la memoria, las instrucciones solo se refieren a los registros.

El primer registro de enteros es un registro de cero, y el resto son registros de propósito general. Una escritura para el registro cero no tiene ningún efecto, y una lectura siempre proporciona 0. Usar el registro cero como un marcador de posición hace que el conjunto de instrucciones sea más simple. Por ejemplo, move rx to ry se convierte en add r0 to rx and store in ry.

Existen registros de control y estado, pero los programas en modo usuario pueden acceder solo 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 innecesarios, demasiado complejos y quizás demasiado lentos.[67]

Acceso a la memoria

[editar]

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

La memoria consta de y se trata como bytes de 8 bits, con las palabras en orden little-endian. Se puede acceder a las palabras, hasta el tamaño de registro, con las instrucciones de carga y almacenamiento.

Las direcciones de memoria a las que se accede no necesitan estar alineadas a su ancho de palabra, pero los accesos a las direcciones alineadas siempre serán los más rápidos. Como, por ejemplo, las CPU simples pueden implementar accesos no alineados con una emulación de software lenta basada en una interrupción de falla de alineación.

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 los subprocesos y los dispositivos de E / S, RISC-V se simplifica: no garantiza el orden de las operaciones de memoria, excepto por instrucciones específicas, como la instrucción fence.

Una instrucción fence garantiza que los resultados de las operaciones predecesoras sean visibles para las operaciones sucesivas de otros subprocesos o dispositivos de E / S. fence puede garantizar el orden de las combinaciones de memoria y operaciones de E / S asignadas 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, fence no los obliga a esperarse el uno al otro. Una CPU con un hilo puede decodificar la instrucción fence como nop.

Al igual que muchos conjuntos de instrucciones RISC (y algunos conjuntos de instrucciones de computadora de conjuntos de instrucciones complejas (CISC), como las familias x86 y IBM System / 360 ), RISC-V carece de modos de dirección que escriben en los registros. Por ejemplo, no se incrementa automáticamente.

RISC-V es little-endian para parecerse a otras computadoras familiares exitosas, por ejemplo, x86. Esto también reduce la complejidad de la CPU y los costos ligeramente porque lee todos los tamaños de palabras en el mismo orden. Por ejemplo, el conjunto de instrucciones RISC-V se decodifica comenzando en el byte con la dirección más baja de la instrucción. La especificación deja abierta la posibilidad de sistemas big-endian o bi-endian no estándar.

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

Inmediatos

[editar]

RISC-V maneja constantes de 32 bits y direcciones con instrucciones que establecen los 20 bits superiores de un registro de 32 bits. La instrucción carga superior inmediata lui carga 20 bits en los bits 31 a 12. Otra instrucción, auipc genera los mismos 20 bits de dirección superior agregando un desplazamiento al contador del programa y almacenando el resultado en un registro base. Esto permite que el código independiente de la posición tenga direcciones de 32 bits en relación con el contador del programa. El registro base se puede utilizar como está con las compensaciones de 12 bits de las cargas y las tiendas. Si es necesario, addi puede establecer los 12 bits más bajos de un registro. En el ISA de 64 bits, lui y auipc extienden el signo del resultado a 64 bits.

Algunas CPU rápidas pueden interpretar combinaciones de instrucciones como instrucciones fusionadas simples. lui o auipc pueden ser buenos candidatos para fusionarse con cargas o almacenes.

Subrutinas llamadas, saltos y bifurcaciones.

[editar]

Llamada de subrutina de RISC-V jal (saltar y vincular) 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 empujan una dirección de retorno directamente en una pila en la memoria. La instrucción jal tiene un offset de 20 bits con signo (complemento de 2). 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 de manera uniforme por 4), la CPU puede forzar una excepción.

Las CPU RISC-V saltan a direcciones calculadas utilizando un salto y un registro de enlace con la instrucción jalr. La instrucción jalr es similar a jal, pero obtiene su dirección de destino agregando un desplazamiento de 12 bits a un registro base. (En contraste, jal agrega una mayor compensación de 20 bits a la PC.)

Para jalr el formato de bits es como las cargas y almacenamientos relativos al registro. Como ellos, jalr se pueden usar con las instrucciones que establecen los 20 bits superiores de un registro base para hacer bifurcaciones de 32 bits, ya sea a una dirección absoluta (usando lui) o una PC-relativa (utilizando auipc para el código independiente de la posición). (El uso de una dirección de base cero constante permite realizar llamadas de una sola instrucción a una dirección pequeña (la compensación), positiva o negativa fija.)

RISC-V recicla jal y jalr para obtener saltos incondicionales de 20 bits relativos a PC y saltos incondicionales de 12 bits basados en registros. Los saltos solo hacen que se enlace el registro 0 para que no se guarde ninguna dirección de retorno.

RISC-V también recicla jalr para retornar de una subrutina: para hacer esto, en jalr el registro base se establece como el registro de vinculación guardado por jal o jalr. En jalr el desplazamiento es cero y el registro de vinculación 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 guardar varias instrucciones de registro múltiple o restaurar. Se pensó que esto hacía que la CPU fuera demasiado compleja y posiblemente lenta.[68]​ Esto puede tomar más espacio de código. Los diseñadores planearon reducir el tamaño del código con las rutinas de la biblioteca para guardar y restaurar registros.[69]

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 se vuelvan más complejas al forzar las 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.

En cambio, RISC-V tiene bifurcaciones cortas que realizan comparaciones: igual, no igual, menor que, sin signo menor que, mayor que o igual y sin signo mayor o igual que. Se implementan diez operaciones de comparación de bifurcaciones con solo seis instrucciones, invirtiendo el orden de los operandos en el ensamblador. Por ejemplo, bifurcar si es mayor de lo que puede hacerse con menor que con un orden inverso de operandos.

Las bifurcaciones de comparación tienen un rango firmado de doce bits y saltan en relación con la PC.

El ISA RISC-V requiere predicciones de bifurcación por defecto para las CPU: debería predecirse tomaron las bifurcaciones condicionales hacia atrás. Las bifurcaciones condicionales hacia adelante predicen no tomadas. Las predicciones son fáciles de decodificar en una CPU segmentada: las direcciones de las sucursales son números firmados que se agregan a la PC. Las bifurcaciones hacia atrás tienen direcciones de complemento a dos negativas y, por lo tanto, tienen una en el bit más significativo de la dirección. Las bifurcaciones adelantadas tienen un cero. El bit más significativo se encuentra en una ubicación fija en el código de operación para acelerar la tubería. Las CPU complejas pueden agregar predictores de bifurcación para que funcionen bien incluso con datos o situaciones inusuales.

El manual de ISA recomienda que el software se optimice para evitar paradas de sucursales mediante el uso de las predicciones de sucursales predeterminadas. Esto reutiliza el bit más significativo de la dirección relativa firmada como un bit de sugerencia para indicar si la bifurcación condicional se tomará o no. Por lo tanto, no se necesitan otros bits de sugerencia en los códigos de operación de las sucursales RISC-V. Esto hace que haya más bits disponibles en los códigos de operación de bifurcación. Las CPU simples y económicas pueden simplemente seguir las predicciones predeterminadas y seguir funcionando bien con la optimización de los compiladores. Los compiladores aún pueden realizar la optimización de la ruta estadística, si lo desea.

Para evitar la carga innecesaria de la electrónica de predicción de bifurcación (y, por lo tanto, paradas de tuberías innecesarias), los códigos de bifurcación de comparación nunca deben utilizarse para saltos incondicionales.

RISC-V no admite la predicación (la ejecución condicional de las instrucciones) ya que sus diseñadores afirman que las CPU sin predicación son más fáciles de diseñar, y es menos probable que los compiladores de optimización usen la predicación donde no deberían usarse. Los diseñadores afirman que los diseños de CPU fuera de orden muy rápidos hacen predicción de todos modos, al hacer la bifurcación de comparación y el código condicional en paralelo, y luego descartar 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 ramificación , lo que puede evitar la mayoría de los bloqueos asociados con las ramificaciones condicionales. El código sin predicación es mayor, con más bifurcaciones, pero también afirman que un conjunto de instrucciones comprimidas (como el conjunto C de RISC-V) resuelve ese problema en la mayoría de los casos.

Muchos diseños RISC han incluido una ranura de retardo de ramificación, una posición después de una instrucción de bifurcación que se puede completar con una instrucción que se ejecuta independientemente de que se tome la bifurcación. Esta función puede mejorar el rendimiento de las CPU segmentadas al absorber parte del tiempo perdido si una CPU predice incorrectamente el funcionamiento de una bifurcación condicional y la tubería de la CPU se detiene. RISC-V omite una ranura de retardo de bifurcación porque complica las CPU multiciclo, las CPU superescalar y las tuberías largas. Los predictores de ramificación dinámica han tenido el éxito suficiente para reducir la necesidad de ramificaciones retrasadas.

Conjuntos aritméticos y lógicos

[editar]

RISC-V segrega las matemáticas en un conjunto mínimo de instrucciones de enteros (conjunto I ) con suma, resta, cambio, lógica de bits 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 notable excepción.) RISC-V actualmente carece del conteo de cero y las operaciones de campo de bits normalmente utilizadas para acelerar el punto flotante del software en un procesador de entero puro.

Las instrucciones de multiplicación de enteros (conjunto M ) incluyen multiplicación y división con signo y sin signo. Se incluyen los números enteros de precisión doble y se divide, como se multiplica y divide que produce la palabra alta del resultado. El documento ISA recomienda que los implementadores de CPU y compiladores fusionen una secuencia estandarizada de alta y baja multiplicaciones y dividan las instrucciones en una operación si es posible.

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 enteros. Requiere un conjunto adicional de 32 registros de punto flotante. Estos son separados de los registros enteros. Las instrucciones de punto flotante de doble precisión (conjunto D ) generalmente asumen que los registros de punto flotante son de 64 bits (es decir, ancho doble), y el subconjunto F se coordina con el conjunto D. También se define una ISA ( Q ) de coma flotante de 128 bits de precisión cuádruple. Las computadoras RISC-V sin punto flotante pueden usar una biblioteca de software de punto flotante.

RISC-V no causa excepciones en los errores aritméticos, incluyendo desbordamiento, subdesbordamiento, subnormal y división por cero. En su lugar, tanto la aritmética de enteros como la de punto flotante producen valores predeterminados razonables y establecen bits de estado. La división por cero puede ser descubierta por una rama después de la división. Los bits de estado se pueden probar mediante un sistema operativo o una interrupción periódica.

Operaciones de memoria atómica

[editar]

RISC-V admite computadoras que comparten memoria entre varias CPU y subprocesos. El modelo de consistencia de memoria estándar de RISC-V es la consistencia de la versión. Es decir, las cargas y los almacenes generalmente se pueden reordenar, pero algunas cargas pueden designarse como operaciones de adquisición que deben preceder a los accesos de memoria posteriores, y algunas tiendas se pueden designar como operaciones de liberación que deben seguir a los accesos de memoria anteriores.

El conjunto de instrucciones de la base incluye un soporte mínimo en forma de una fence instrucciones para hacer cumplir la ordenación de la memoria. Aunque esto es suficiente ( fence r, rw proporciona adquirir y fence rw, w proporciona lanzamiento ), las operaciones combinadas pueden ser más eficientes.

La extensión de operación de memoria atómica admite dos tipos de operaciones de memoria atómica para la consistencia de la versión. En primer lugar, proporciona lr reservado de propósito general lr y almacenar condicional sc instrucciones. lr realiza una carga e intenta reservar esa dirección para su hilo. Una tienda posterior condicional sc La dirección reservada se realizará solo si la reserva no es interrumpida por una tienda intermedia de otra fuente. Si la tienda 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.

El segundo grupo de instrucciones atómicas realiza secuencias de lectura-modificación-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 una reserva del resultado (que puede ser opcionalmente un lanzamiento de tienda). Hacer las barreras de memoria opcionales permite combinar las operaciones. Las operaciones opcionales están habilitadas por los bits de adquisición y liberación que están presentes en cada instrucción atómica. RISC-V define nueve operaciones posibles: intercambio (use el valor del registro de origen directamente); añadir; bitwise y, o, y exclusivo -o; y mínimo y máximo firmado y sin firmar.

Un diseño de sistema puede optimizar estas operaciones combinadas más que lr y sc. Por ejemplo, si el registro de destino para un swap es el cero constante, la carga puede omitirse. Si el valor almacenado no se modifica desde la carga, la tienda puede omitirse.

El IBM System / 370 y sus sucesores, incluidos z / Architecture, y x86, implementan un sistema de comparación e intercambio (cas) De instrucciones, que pone a prueba y de forma condicionada actualiza una ubicación en la memoria: si la ubicación contiene un valor esperado de edad, cas lo reemplaza con un nuevo valor dado; luego devuelve una indicación de si realizó el cambio. Sin embargo, una instrucción de tipo de carga simple generalmente se realiza antes del cas para recuperar 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 (cas) para reemplazar A por C , no tiene forma de saber si la actividad concurrente en otro hilo reemplazó a A por algún otro valor B y luego restauró la 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 de ABA puede llevar a resultados incorrectos. La solución más común emplea un cas doble ancho. cas instrucciones para actualizar tanto el puntero como un contador adyacente; desafortunadamente, tal 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.

El lr / sc La alternativa es más eficiente. Por lo general, solo requiere una carga de memoria, y es deseable minimizar las operaciones de memoria lenta. También es exacto: controla todos los accesos a la celda de memoria, en lugar de solo asegurar un patrón de bits. Sin embargo, a diferencia de cas cas , puede permitir Livelock , en el que dos o más subprocesos repetidamente hacen que las instrucciones del otro falle. RISC-V garantiza el progreso hacia adelante (no Livelock) si el código sigue las reglas sobre el tiempo y la secuencia de instrucciones: 1) Debe usar solo el subconjunto I. 2) Para evitar las fallas de caché repetitivas, el código (incluido el ciclo de reintento) no debe ocupar más de 16 instrucciones consecutivas. 3) No debe incluir instrucciones de sistema o cerca, o ramas tomadas hacia atrás entre los lr y sc. 4) La rama hacia atrás al bucle de reintento debe ser a la secuencia original.

La especificación proporciona ejemplos de cómo usar este subconjunto para bloquear una estructura de datos.

Subconjunto comprimido

[editar]

El estándar RISC-V ISA especifica que todas las instrucciones son de 32 bits. Esto hace que para una implementación particularmente simple, pero al igual que otros procesadores RISC con tal codificación de instrucciones, resulta en un tamaño de código mayor que en otros conjuntos de instrucciones. Para compensar, instrucciones de 32 bits del RISC-V son en realidad 30 bits; 3/4 de la opcode espacio está reservado para un conjunto de instrucciones opcional (pero recomendado) de longitud variable comprimido, RVC, que incluye instrucciones de 16 bits. Al igual que ARM's Thumb y el MIPS16, las instrucciones comprimidas son simplemente alias para un subconjunto de las instrucciones más grandes. A diferencia del conjunto comprimido ARM's Thumb o MIPS, el espacio se reservó desde el principio para que no haya un modo de operación separado. Las instrucciones estándar y comprimidas se pueden mezclar libremente. (letra C )

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 puede implementarse en el ensamblador, y no es esencial que el compilador lo sepa.

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

El investigador pretendía reducir el tamaño binario del código para computadoras pequeñas, especialmente sistemas informáticos integrados. El prototipo incluyó 33 de las instrucciones utilizadas con mayor frecuencia, recodificadas como formatos compactos de 16 bits utilizando códigos de operación previamente reservados para el conjunto comprimido. La compresión se realizó en el ensamblador, sin cambios en el compilador. Las instrucciones comprimidas omitieron los campos que a menudo son cero, utilizaron valores inmediatos pequeños o subconjuntos accedidos (16 u 8) de los registros. addi Es muy común y a menudo compresible.

Gran parte de la diferencia de tamaño en comparación con el conjunto de ARM Thumb se produjo porque RISC-V, y el prototipo, no tienen instrucciones para guardar y restaurar registros múltiples. En cambio, el compilador generó instrucciones convencionales que acceden a la pila. El prototipo del ensamblador RVC a menudo los convertía en formas comprimidas que tenían la mitad del tamaño. Sin embargo, esto todavía tomó 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 las rutinas de la biblioteca para guardar y restaurar registros. Estas rutinas tienden a permanecer en un caché de código y, por lo tanto, se ejecutan rápidamente, aunque probablemente no tan rápido como una instrucción de guardar varios.

Subconjunto incorporado

[editar]

Un conjunto de instrucciones para las CPU incorporadas más pequeñas (conjunto E) se reduce de otras maneras: solo se admiten 16 de los registros de enteros de 32 bits. Las instrucciones de punto flotante no se deben admitir (la especificación lo prohíbe por ser poco rentable), por lo que se debe usar una biblioteca de software de punto flotante. Se recomienda el conjunto comprimido C. 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.[70]

Se ha producido una discusión para 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 simple para interrupciones, modos de seguridad simplificados y una interfaz binaria de aplicación POSIX simplificada.[71]

Los corresponsales también han propuesto ISA RV16E de 16 bits más pequeñas, no estándar: Se utilizarían registros enteros de 16 × 16 bits, utilizando las ISA EIMC estándar (incluidas las instrucciones de 32 bits). )[72]​ Otra propuesta solo usaría las instrucciones C de 16 bits con registros de 8 × 16 bits. Se dijo que un RV16EG completo era posible con una ISA completamente recodificada.[73]

Conjunto de instrucciones privilegiadas

[editar]

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 partir de julio A 2021 de 12, la versión 1.12 está ratificada por RISC-V International.[70]

  1. Sistemas que solo tienen modo de máquina , tal vez para sistemas embebidos ,
  2. Sistemas con modo de máquina (para el supervisor ) y modo de usuario, tal vez para implementar Linux.
  3. Sistemas con modo máquina, hipervisores, supervisores múltiples y modos de usuario bajo cada supervisor.

Estos corresponden aproximadamente a sistemas con hasta cuatro anillos de privilegio 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.

El plan general para esta ISA es hacer que el modo hipervisor sea ortogonal a los modos de usuario y supervisor.[74]​ 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 que cause una interrupción en los accesos. Este bit permite que el modo supervisor maneje directamente el hardware que necesita un hipervisor. Esto simplifica un hipervisor de tipo 2, alojado por un sistema operativo. Este es un modo popular para ejecutar computadoras a escala de almacén. Para admitir los hipervisores tipo 1, sin publicar, el bit puede hacer que estos accesos se interrumpan a un hipervisor. El bit simplifica el anidamiento de hipervisores, en el que un hipervisor se ejecuta bajo un hipervisor. También se dice que simplifica el código de supervisor al permitir que el kernel use sus propias características de hipervisor con su propio código de kernel. Como resultado, la forma de hipervisor de la ISA admite cinco modos: máquina, supervisor, usuario, supervisor bajo hipervisor y usuario bajo hipervisor.

La especificación de conjunto de instrucciones privilegiadas define explícitamente los hilos de hardware o harts. Múltiples hilos de hardware son una práctica común en computadoras más grandes y más potentes. Cuando un hilo se detiene, a la espera de memoria, otros pueden continuar. Los hilos de hardware pueden ayudar a hacer un mejor uso de la gran cantidad de registros y unidades de ejecución en CPU grandes. Finalmente, los subprocesos de hardware pueden ser una forma simple y poderosa de manejar interrupciones : no es necesario guardar ni restaurar registros, simplemente ejecutando un subproceso de hardware diferente. El único hilo de hardware requerido en una computadora RISC-V es el hilo cero.

Las definiciones de registro de control y estado existentes admiten las excepciones de error y memoria de RISC-V, y un pequeño número de interrupciones. Para sistemas más grandes, la especificación también define un controlador de interrupción. Las interrupciones siempre comienzan en el nivel de máquina con el privilegio más alto, y los registros de control de cada nivel tienen bits de reenvío explícitos para encaminar las interrupciones a un 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 su lugar, en la configuración, puede establecer bits para reenviar la interrupción.

Varios sistemas de memoria son compatibles con la especificación. Físico solo es adecuado para los sistemas embebidos más pequeños. También hay tres sistemas de memoria virtual de estilo UNIX para la memoria caché en sistemas de almacenamiento masivo. Los sistemas de memoria virtual tienen tres tamaños, con direcciones de 32, 39 y 48 bits. Todos los sistemas de memoria virtual son compatibles con 4.   Las páginas de KiB, los árboles de tablas de páginas de niveles múltiples y utilizan algoritmos muy similares para recorrer los árboles de tablas de páginas. Todos están diseñados para la tabla de páginas de hardware o software. Para reducir opcionalmente el costo de las caminatas en la tabla de páginas, las páginas de gran tamaño pueden ser páginas de hoja en niveles más altos del árbol de tabla de páginas de un sistema. SV32 tiene un árbol de tabla de páginas de dos capas y admite 4   Superpáginas de mib SV39 tiene una tabla de páginas de tres niveles, y soporta 2   Superpages mib y 1   GiB gigapages. Se requiere SV48 para soportar SV39. También tiene una tabla de páginas de 4 niveles y soporta 2   Superpages MiB, 1   Gigapages GiB, y 512   GiB terapages. Las súper páginas se alinean en los límites de la página para el siguiente tamaño más bajo de página.

Manipulación de bits

[editar]

Se realizó un trabajo sustancial para producir una ISA preliminar (aunque no aprobada) de manipulación de bits (B) para RISC-V. Hecho bien, un subconjunto de manipulación de bits puede ayudar a las operaciones criptográficas, gráficas y matemáticas. Los criterios de inclusión documentados en el borrador fueron el cumplimiento con las filosofías RV5 y los formatos ISA, mejoras sustanciales en la densidad o velocidad del código (es decir, al menos una reducción de instrucciones de 3 por 1), y aplicaciones sustanciales en el mundo real, incluido el compilador preexistente apoyo. La versión 0.36 incluyó[75]​ instrucciones no controvertidas para contar ceros iniciales, contar un bit, realizar and con complemento, desplazar unos, rotar, un bit invertido y aleatorio generalizados, intercambios de bytes, extractos y depósitos de bits y algunas adiciones de manipulación de bits para el conjunto comprimido (not, neg y reverse). También incluye una propuesta controvertida para la extracción y colocación de campos de bits, utilizando un formato de instrucción de 48 bits no estándar.

Empaquetado SIMD

[editar]

Para sistemas RISC-V simples y con costos reducidos, hay una propuesta para utilizar los bits de los registros de punto flotante para realizar la instrucción aritmética de la sub-palabra de instrucción simple paralela, datos múltiples (SIMD). Esto se usa ampliamente para acelerar el procesamiento multimedia y de otras señales digitales. A partir de 2016 A 2016, esta ISA no está definida, pero podría parecerse a las instrucciones multimedia de PA-RISC: extensiones de aceleración multimedia. Además de su matemática nativa de 64 bits, la CPU PA-RISC MAX2 podría hacer aritmética en cuatro subpuntos de 16 bits a la vez, con varios métodos de desbordamiento. También podría mover subwords a diferentes posiciones. El MAX2 de PA-RISC se simplificó intencionalmente. Carecía de soporte para subwords de 8 bits o de 32 bits. Se seleccionó el tamaño de la subpuesta de 16 bits para admitir la mayoría de las tareas de procesamiento de señales digitales. Estas instrucciones eran económicas de diseñar y construir. Sin embargo, aumentaron el rendimiento de la CPU en las tareas de procesamiento de señal digital en 48 veces o más, lo que permitió la creación de códecs de video en tiempo real en 1995.[76][77]

Conjunto de vectores

[editar]

El conjunto de instrucciones de procesamiento de vectores propuesto puede hacer que el conjunto SIMD empaquetado quede obsoleto. Los diseñadores esperan tener la flexibilidad suficiente 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 a un ISA multimedia, como se indicó anteriormente. Sin embargo, un verdadero coprocesador vectorial podría ejecutar el mismo código con un mayor rendimiento.[78]

A partir del 29 A 2015 de junio del 29 A 2015 de junio del 29 A 2015 de junio del 29 A 2015 de junio del 29 A 2015 de junio del 29, la propuesta de procesamiento de vectores es un diseño conservador y flexible de un procesador de vectores de precisión mixta de propósito general, adecuado para ejecutar núcleos informáticos. El código se trasladaría fácilmente a las CPU con diferentes longitudes de vectores, idealmente sin recompilar.

En contraste, 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 Extensiones SIMD de transmisión de 128 bits (SSE), a 256 bits Avanzado) Extensiones de vectores (AVX), y AVX-512). El resultado es un conjunto de instrucciones en crecimiento y la necesidad de adaptar el código de trabajo a las nuevas instrucciones.

En el vector ISA de RISC-V, en lugar de fijar la longitud del vector en la arquitectura, una instrucción (setvl está disponible, que toma un tamaño solicitado y establece la longitud del vector al mínimo del límite de hardware y el tamaño solicitado. Por lo tanto, la propuesta RISC-V es más como el diseño de vector largo de Cray. Es decir, cada vector en hasta 32 vectores tiene la misma longitud.

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, especificando el número de registros vectoriales de cada ancho disponible necesario. El total no debe ser mayor que el límite direccionable de 32, pero puede ser menor si la aplicación no los requiere a todos. La longitud del vector está limitada por el almacenamiento en chip disponible dividido por la cantidad de bytes de almacenamiento necesarios para cada entrada. (También pueden existir límites de hardware adicionales, que a su vez pueden permitir implementaciones de estilo SIMD. )

Fuera de los bucles vectoriales, la aplicación puede solicitar registros de vector cero, ahorrando al sistema operativo el trabajo de preservarlos en los cambios de contexto.

La longitud del vector no solo es variable arquitectónicamente, sino que también está diseñada para variar en el 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 que utilizan la sobrecarga polimórfica. El plan es que estos pueden reducir el tamaño y la complejidad de la ISA y el compilador.

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

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

Sistema de depuración externa

[editar]

Hay 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.[81][82]

A partir de enero A 2017 de 01 A 2017 de 01 A 2017 de 01, la forma exacta de la interfaz abstracta permanece indefinida, 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. 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.

En la alimentación de instrucciones, la CPU procesará una excepción de depuración para ejecutar instrucciones individuales escritas en un registro. Esto puede complementarse con un registro de paso de datos y un módulo para acceder directamente a la memoria. La alimentación de instrucciones le 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 los 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. Los corresponsales dicen que los sistemas similares son utilizados por MIPS Technologies MIPS, Intel Quark, Tensilica 's Xtensa , y por Freescale potencia CPU' interfaz de modo de fondo de depuración (BDM).

Véase también

[editar]

Referencias

[editar]
  1. «Rocket Core Generator». RISC-V. Regents of the University of California. Archivado desde el original el 6 de octubre de 2014. Consultado el 1 de octubre de 2014. 
  2. a b c Waterman, Andrew; Asanović, Krste, eds. (December 2019). «The RISC-V Instruction Set Manual, Volume I: User-Level ISA, Document Version 20191213». RISC-V Foundation. Consultado el 5 de noviembre de 2021. 
  3. Celio, Christopher. «ucb-bar/riscv-sodor». GitHub Inc. Regents of the University of California. Consultado el 12 de febrero de 2015. 
  4. a b «SHAKTI Processor Program». Indian Institute of Technology Madras. Consultado el 3 de septiembre de 2019. 
  5. Celio, Christopher. «CS 152 Laboratory Exercise 3». UC Berkeley. Regents of the University of California. Consultado el 12 de febrero de 2015. 
  6. Waterman, Andrew; Asanović, Krste (7 de mayo de 2017). «The RISC-V Instruction Set Manual, Volume I: Base User-Level ISA version 2.2». RISC-V International. Consultado el 5 de noviembre de 2021. 
  7. Demerjian, Chuck (7 de agosto de 2013). «A long look at how ARM licenses chips: Part 1». SemiAccurate. Archivado desde el original el 24 de octubre de 2022. Consultado el 11 de enero de 2019. 
  8. Demerjian, Chuck (8 de agosto de 2013). «How ARM licenses its IP for production: Part 2». SemiAccurate. Archivado desde el original el 25 de octubre de 2022. Consultado el 11 de enero de 2019. 
  9. Patterson, David A.; Ditzel, David R. (October 1980). «The Case for the Reduced Instruction Set Computer». ACM SIGARCH Computer Architecture News 8 (6): 25. S2CID 12034303. doi:10.1145/641914.641917. 
  10. «Amber ARM-compatible core». OpenCores. Consultado el 26 de agosto de 2014. 
  11. «ARM4U». OpenCores. Consultado el 26 de agosto de 2014. 
  12. a b Asanović, Krste. «Conjuntos de instrucción Tendrían que Ser Libres: El Caso Para RISC-V». U.C. Berkeley Technical Reports. Regents of the University of California. Consultado el 15 de noviembre de 2016. 
  13. Chen, Tony; Patterson, David (24 de enero de 2016). «RISC-VGeneology» (UCB/EECS-2016-6). University of California at Berkeley. 
  14. Samples, Alan Dain; Klein, Mike; Foley, Pete (1985). «SOAR Architecture» (UCB/CSD-85-226). University of California, Berkeley. 
  15. Hill, Mark Donald; David Patterson, 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, J. M. Pendleton, Scott Allen Ritchie, David A. Wood, Benjamin G. Zorn, Paul N. Hilfinger, D. A. Hodges, Randy H. Katz, and John K. Ousterhout (December 1985). «SPUR: A VLSI Multiprocessor Workstation» (UCB/CSD-86-273). University of California, Berkeley. 
  16. «Contributors». riscv.org. Regents of the University of California. Archivado desde el original el 7 de septiembre de 2018. Consultado el 25 de agosto de 2014. 
  17. Finley, Klint (21 de marzo de 2018). «Turing Prize Winners Paved Way to Smartphone Chips». Wired.com. 
  18. «AndeStar Architecture». Andes Technology. Archivado desde el original el 28 de enero de 2019. Consultado el 11 de enero de 2019. «Andes is a founding member of the RISC-V Foundation.» 
  19. Merritt, Rick. «Google, Oracle and HP Join RISC-V». EE Times. UBM. Consultado el 11 de febrero de 2016. 
  20. «Members at a Glance». riscv.org. Archivado desde el original el 24 de septiembre de 2019. Consultado el 2 de enero de 2018. 
  21. «The Linley Group Announces Winners of Annual Analysts' Choice Awards». The Linley Group. 12 de enero de 2017. Consultado el 21 de enero de 2018. 
  22. «RISC-V The Free and Open Instruction Set». RISC-V Foundation. Consultado el 11 de noviembre de 2016. 
  23. Celio, Christopher. «riscv-boom». GitHub. Regents of the University of California. Consultado el 11 de noviembre de 2016. 
  24. Asanović, Krste. «rocket-chip». GitHub. The RISC-V Foundation. Consultado el 11 de noviembre de 2016. 
  25. Celio, Christopher. «riscv-sodor». GitHub. Regents of the University of California. Consultado el 11 de noviembre de 2016. 
  26. Traber, Andreas. «PULP: Parallel Ultra Low Power». ETH Zurich, University of Bologna. Consultado el 5 de agosto de 2016. 
  27. «Chisel: Constructing Hardware in a Scala Embedded Language». UC Berkeley. Regents of the University of California. Consultado el 12 de febrero de 2015. 
  28. «riscv - FreeBSD Wiki». wiki.freebsd.org. 
  29. a b «FreeBSD Foundation: Initial FreeBSD RISC-V Architecture Port Committed». 4 de febrero de 2016. 
  30. Montezelo, Manuel. «Debian GNU/Linux port for RISC-V 64». Google Groups. Google. Consultado el 19 de julio de 2018. 
  31. «Architectures/RISC-V». Fedora Wiki. Red Hat. Consultado el 26 de septiembre de 2016. 
  32. Begari, Padmarao. «U-Boot port on RISC-V 32-bit is available». Google Groups. Microsemi. Consultado el 15 de febrero de 2017. 
  33. Almatary, Hesham. «RISC-V, seL4». seL4 Documentation. Commonwealth Scientific and Industrial Research Organisation (CSIRO). Consultado el 13 de julio de 2018. 
  34. Almatary, Hesham. «heshamelmatary». GitHub. Consultado el 13 de julio de 2018. 
  35. https://doi.org/10.1109/ACCESS.2024.3406935
  36. https://zenodo.org/record/5130302#.YVSL23UzZNg
  37. https://doi.org/10.1109/CLEI53233.2021.9640144
  38. Código fuente de CREATOR en GitHub: https://github.com/creatorsim/creator
  39. CREATOR Web con ejemplo RISC-V: https://creatorsim.github.io/creator/?example_set=default_rv&example=e12
  40. WepSIM Web con ejemplo RISC-V_im: https://wepsim.github.io/wepsim/ws_dist/wepsim-classic.html?mode=ep&examples_set=Default-RISCV&example=9&simulator=assembly:registers&notify=false
  41. Código fuente de WepSIM en GitHub: https://github.com/wepsim/wepsim
  42. «HiFive1». SiFive. Archivado desde el original el 26 de febrero de 2017. Consultado el 10 de julio de 2018. 
  43. SiFive. «Hi-Five1: Open-source Arduino-Compatible Development Kit». Crowd Supply. Consultado el 2 de diciembre de 2016. 
  44. «FU540 SoC CPU». SiFive. Consultado el 24 de octubre de 2018. 
  45. «RISC-V workshop proceedings». Consultado el 11 de diciembre de 2018. 
  46. Manners, David. «Codasip and UltraSoC Combine on RISC-V». Electronics Weekly. Metropolis International Group, Ltd. Consultado el 23 de noviembre de 2016. 
  47. «GreenWaves GAP8 is a Low Power RISC-V IoT Processor Optimized for Artificial Intelligence Applications». CNXSoft: Embedded Systems News. Consultado el 4 de marzo de 2018. 
  48. «AI Comes to Sensing Devices». 26 de febrero de 2018. Consultado el 10 de julio de 2018. 
  49. «GreenWaves Technologies Announces Availability of GAP8 Software Development Kit and GAPuino Development Board». 22 de mayo de 2018. 
  50. «Hex Five Security Adds MultiZone Trusted Execution Environment to the SiFive Software Ecosystem». Hex Five Security. Consultado el 13 de septiembre de 2018. 
  51. «CloudBEAR». Consultado el 16 de octubre de 2018. 
  52. Desikan, Shubashree (6 de agosto de 2018). «IIT-Madras powers up a desi chip». The Hindu (en Indian English). ISSN 0971-751X. Consultado el 25 de septiembre de 2020. 
  53. a b «Meet India's Atmanirbhar Microprocessor chip 'Moushik', meant for IoT devices». WION (en inglés). Consultado el 25 de septiembre de 2020. 
  54. Halfacree, Gareth (10 de junio de 2021). «RISC-V boffins lay out a plan for bringing the architecture to high-performance computing». The Register (en inglés). Consultado el 9 de julio de 2021. 
  55. {{cite web |title = IIT Madras Open Source Processor Project |url = http://www.rapidio.org/2014/08/iit-madras-open-source-processor-project/ |website = Rapid IO |date = 2014-08-26 |publisher = IIT Madras |access-date = 2014-09-13 |archive-date = 2014-09-14 |archive-url=https://web.archive.org/web/20140914001234/http://www.rapidio.org/2014/08/iit-madras-open-source-processor-project
  56. «IIT Madras Develops and Boots up MOUSHIK Microprocessor for IoT Devices». IIT Madras. 24 de septiembre de 2020. Consultado el 9 de julio de 2021. 
  57. RISC-V International. NVIDIA RISC V Evaluation Story Joe Xie. 
  58. Ashenden, Peter (9 de noviembre de 2016), «Re: [isa-dev RISC V ISA for embedded systems]», Google, https://groups.google.com/a/groups.riscv.org/d/msg/isa-dev/j2okI7akT74/BQdUwjMRAgAJ, consultado el 10 de noviembre de 2016, «At ASTC (www.astc-design.com), we have an implementation of RV32EC as a synthesizable IP core intended for small embedded applications, such as smart sensors and IoT.» 
  59. «lowRISC website». Consultado el 10 de mayo de 2015. 
  60. «PULPino GitHub project». GitHub. Consultado el 2 de febrero de 2018. 
  61. «PULP Platform». PULP Platform. Consultado el 2 de febrero de 2018. 
  62. «Western Digital to Accelerate the Future of Next-Generation Computing Architectures for Big Data and Fast Data Environments». Western Digital. 28 de noviembre de 2017. 
  63. «Esperanto exits stealth mode, aims at AI with a 4,096 core 7nm RISC-V monster». wikichip.org (en inglés estadounidense). Consultado el 2 de enero de 2018. 
  64. Waterman, Andrew; Lee, Yunsup; Avizienas, Rimas; Patterson, David; Asanović, Krste. «Draft Privileged ISA Specification 1.9». RISC-V. RISC-V Foundation. Archivado desde el original el 26 de agosto de 2018. Consultado el 30 de agosto de 2016. 
  65. Frozen parts are expected to have their final feature set and to receive only clarifications before being ratified.
  66. RISC-V International. Memory Consistency Model Status Update. 
  67. Waterman, Andrew; Asanović, Krste (31 de mayo de 2016). «The RISC-V Instruction Set Manual, Volume I: Base User-Level ISA version 2.1». University of California, Berkeley. EECS-2016-118. Consultado el 5 de noviembre de 2021. 
  68. Waterman, Andrew (13 de mayo de 2011). Improving Energy Efficiency and Reducing Code Size with RISC-V Compressed. U.C. Berkeley: Regents of the University of California. p. 32. Consultado el 25 de agosto de 2014. 
  69. Waterman, Andrew. «The RISC-V Compressed Instruction Set Manual Version 1.9 (draft)». RISC-V. Consultado el 18 de julio de 2016. 
  70. a b Waterman, Andrew; Asanović, Krste (3 de diciembre de 2021). «The RISC-V Instruction Set Manual Volume II: Privileged Architecture Document Version 20211203». RISC-V International. Consultado el 5 de noviembre de 2021. 
  71. Ionescu, Liviu. «The RISC-V Microcontroller Profile». Github. Consultado el 5 de abril de 2018. 
  72. Barros, Cesar. «Proposal: RV16E». Google Groups, RISC-V ISA Dev. Google. Consultado el 2 de abril de 2018. 
  73. Brussee, Rogier. «Proposal: Xcondensed, [a] ... Compact ... 16 bit standalone G-ISA». RISC-V ISA Mail Server. Google Groups. Consultado el 10 de noviembre de 2016. 
  74. Bonzini, Paolo. «Proposal for Virtualization without H mode». Google Groups, RISC-V ISA Dev. RISC-V Foundation. Consultado el 24 de febrero de 2017. 
  75. Wolf, Clifford. «Bit Manipulation for RISC-V, Draft». Github. Clifford Wolf. 
  76. «64-bit and Multimedia Extensions in the PA-RISC 2.0 Architecture». Proceedings of Compcon 96: 152-160. 25 de febrero de 1996. Consultado el 21 de septiembre de 2014. 
  77. «Accelerating Multimedia with Enhanced Microprocessors». IEEE Micro 15 (2): 22-32. April 1995. doi:10.1109/40.372347. Consultado el 21 de septiembre de 2014. 
  78. Schmidt, Colin. «RISC-V Vector Extension Proposal». RISC-V. Regents of the University of California. Consultado el 14 de marzo de 2016. 
  79. Ou, Albert. «A Case for MVPs: Mixed-Precision Vector Processors». UC Berkeley EECS. Regents of the University of California. Archivado desde el original el 15 de marzo de 2016. Consultado el 14 de marzo de 2016. 
  80. Lee, Yunsup. «Exploring the Design Space of SPMD Divergence Management on Data-Parallel Architectures». Berkeley's EECS Site. Regents of the University of California. Archivado desde el original el 14 de noviembre de 2014. Consultado el 14 de marzo de 2016. 
  81. Bradbury, Alex. «RISC-V Run Control Debug». Google Docs. RISC-V Foundation. Consultado el 20 de enero de 2017. 
  82. Newsome, Tim. «RISC-V Debug Group > poll results». Google Groups, RISC-V Debug Group. RISC-V Foundation. Consultado el 20 de enero de 2017. 


Bibliografía

[editar]

Enlaces externos

[editar]