RISC-V
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. ImportanciaLos 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. HistoriaPredecesoresEl 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ónKrste 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
Requisitos motivadoresLos 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. SoftwareUn 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.
UsuariosComerciales
En desarrollo
DiseñoISA Base y extensionesRISC-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 ).
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 registroRISC-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, 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 memoriaAl 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 Una instrucción 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. InmediatosRISC-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 Algunas CPU rápidas pueden interpretar combinaciones de instrucciones como instrucciones fusionadas simples. Subrutinas llamadas, saltos y bifurcaciones.Llamada de subrutina de RISC-V Las CPU RISC-V saltan a direcciones calculadas utilizando un salto y un registro de enlace con la instrucción Para RISC-V recicla RISC-V también recicla 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ógicosRISC-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ómicaRISC-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 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 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 El IBM System / 370 y sus sucesores, incluidos z / Architecture, y x86, implementan un sistema de comparación e intercambio ( El La especificación proporciona ejemplos de cómo usar este subconjunto para bloquear una estructura de datos. Subconjunto comprimidoEl 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. 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 incorporadoUn 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 privilegiadasISA 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]
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 bitsSe 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 Empaquetado SIMDPara 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 vectoresEl 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 ( 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 ( 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 externaHay 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énReferencias
Bibliografía
Enlaces externos
|
Portal di Ensiklopedia Dunia