
El 2 de marzo, en la primera Conferencia Ecológica RISC-V de Xuantie celebrada por Ali Pingtou, dijo con confianza David Patterson, el padre de RISC-V y ganador del Premio Turing.
Desde su introducción a 10 mil millones de procesadores, la arquitectura x86 de Intel tomó décadas, ARM tomó 17 años y RISC-V solo tomó alrededor de 10 años, lo que no tiene precedentes en la historia del desarrollo de la arquitectura de chips.
Algunos datos predicen que para 2025, el número de procesadores que utilizan la arquitectura RISC-V superará los 80 mil millones. En el campo de IoT, se prevé que RISC-V ocupará el 28% del mercado para 2025.
Entonces, ¿qué es RISC-V? (El siguiente contenido proviene principalmente de la serie de artículos "El nacimiento de CKB-VM")
Introducción a RISC-V
RISC-V es una arquitectura de conjunto de instrucciones de CPU clara, simple y de código abierto, nacida en la Universidad de California, Berkeley.
En 2010, debido a las limitaciones de otros conjuntos de instrucciones comerciales de código cerrado, un equipo de investigación de la escuela diseñó un nuevo conjunto de instrucciones de código abierto desde cero al iniciar un nuevo proyecto. Este nuevo conjunto de instrucciones tiene una gran cantidad de registros y una velocidad de ejecución de instrucciones transparente, lo que puede ayudar a los compiladores y programadores de lenguaje ensamblador a convertir problemas prácticos e importantes en código apropiado y eficiente, y contiene menos de 50 instrucciones.
Este conjunto de instrucciones es RISC-V, por lo que RISC-V es un conjunto de instrucciones muy joven.
Entonces, ¿cuáles son los principales conjuntos de instrucciones antes de esto?
En la era de las PC, x86 es el señor inquebrantable. x86 es una CISC (computadora con conjunto de instrucciones complejas), que es diferente de RISC (computadora con conjunto de instrucciones reducidas). El número de conjuntos de instrucciones CISC continúa aumentando con el desarrollo. Esto hará que los costes sigan aumentando y el rendimiento y el consumo de energía también se verán afectados. Además, la longitud del conjunto de instrucciones CISC y el tiempo de ejecución no son fijos, lo que dificulta encontrar una ruta de diseño universal eficiente para completar la ejecución de las instrucciones.
Tras la popularidad de los smartphones, ARM se ha convertido en el favorito de los terminales móviles. ARM es un conjunto de instrucciones reducido (RISC) con bajo consumo de energía y bajo costo. Sin embargo, para mantener la compatibilidad con versiones anteriores, ARM necesita conservar muchas definiciones obsoletas, lo que resulta en una importante redundancia del conjunto de instrucciones, lo que hace que la documentación de la arquitectura ARM sea cada vez más compleja. alto y más alto.
En el actual monopolio de x86 y ARM, RISC-V ha aportado nueva vitalidad al mercado.
El objetivo de RISC-V es proporcionar una arquitectura de conjunto de instrucciones de CPU común para respaldar el desarrollo de arquitecturas de sistemas de próxima generación sin la carga de problemas arquitectónicos heredados en las próximas décadas.
RISC-V puede cumplir con los requisitos de implementación, desde pequeños microprocesadores de bajo consumo hasta procesadores de centros de datos (DC) de alto rendimiento. En comparación con otros conjuntos de instrucciones de CPU, el conjunto de instrucciones RISC-V tiene las siguientes ventajas:
Transparencia (código abierto)
ARM y x86 son proyectos de código cerrado y los términos de la licencia son extremadamente estrictos: Intel no permite que ninguna empresa, excepto AMD y VIA, utilice el conjunto de instrucciones x86; obtener una licencia para el conjunto de instrucciones ARM puede requerir decenas de millones de dólares; Se cobrarán tarifas de licencia y será necesario renegociar la autorización una vez que expire.
RISC-V es un verdadero proyecto de código abierto, conocido como Linux en el campo del hardware. De hecho, la intención original del profesor David Patterson, el profesor Krste Asanovic, Andrew Waterman y Yunsup Lee, quienes inventaron RISC-V, era "Los conjuntos de instrucciones quieren ser libres", y cualquier empresa, universidad, institución de investigación e individuo de todo el mundo puede hacerlo. Desarrollar procesadores compatibles con RISC con el conjunto de instrucciones -V se puede integrar en el ecosistema de software y hardware creado en RISC-V.
RISC-V utiliza el acuerdo de código abierto de licencia BSD (uno de los acuerdos de licencia más utilizados en software libre). El acuerdo de código abierto BSD permite a los usuarios modificar y redistribuir código fuente abierto, y también permite el desarrollo y venta de software comercial. en código fuente abierto y puede crear nuevo software/hardware sin restricciones.
sencillez
Después de décadas de desarrollo, los documentos de arquitectura de x86 y ARM han alcanzado miles de páginas, lo que a un ingeniero le lleva casi un mes leer, mientras que leer documentos RISC-V solo lleva de 1 a 2 días.
Esto se debe a que RISC-V solo selecciona los conjuntos de instrucciones más utilizados y luego los optimiza específicamente. En cuanto a las instrucciones poco comunes, se pueden completar combinando varias instrucciones básicas, lo que puede mejorar en gran medida la eficiencia. Por lo tanto, bajo la premisa de proporcionar las mismas funciones, el conjunto de instrucciones RISC-V es más fácil de implementar y puede evitar errores que el conjunto de instrucciones x86 con miles de instrucciones.
Por ejemplo, si usamos x86, entonces tenemos que comprar un supermercado completo para disfrutar de los artículos que necesitamos, pero RISC-V es un supermercado donde puedes comprar artículos individualmente y los clientes solo necesitan elegir los artículos que necesitan. solo paga por ello.
Modular
RISC-V utiliza un núcleo simplificado y un mecanismo modular para proporcionar configuraciones de conjunto de instrucciones más extendidas.
amplitud de apoyo
Compiladores como GCC y LLVM admiten el conjunto de instrucciones RISC-V y el backend de Go para RISC-V también está en desarrollo.
madurez
El conjunto de instrucciones principales de RISC-V finalmente se confirmó y corrigió, y todas las implementaciones futuras de RISC-V deben ser compatibles con versiones anteriores. Además, el conjunto de instrucciones RISC-V se ha implementado en hardware y se ha verificado en escenarios de aplicaciones reales, y no existen riesgos potenciales que existan en otros conjuntos de instrucciones con menos soporte.
Cuando CKB-VM se encuentra con RISC-V
CKB es la capa básica de Nervos Network y su objetivo es proporcionar suficiente seguridad y descentralización para las aplicaciones de la capa superior. En el proceso de investigación y selección de CKB-VM, pensamos repetidamente en: ¿Qué características debería tener CKB-VM?
Evidentemente, para que una máquina virtual pueda utilizarse en una blockchain, hay dos características clave que deben cumplirse en cualquier caso:
1. Determinismo: para programas y entradas fijos, la máquina virtual siempre debe devolver resultados de salida fijos y los resultados no cambiarán debido al tiempo, el entorno operativo y otras condiciones externas;
2. Seguridad: La ejecución de una máquina virtual no afectará el funcionamiento de la plataforma en sí.
Pero estas condiciones sólo son obligatorias y esperamos diseñar una máquina virtual que pueda cumplir mejor los objetivos de CKB. Después de una cuidadosa consideración, creemos que dicha máquina virtual debe cumplir con las siguientes características:
flexibilidad
Nuestro objetivo es diseñar una máquina virtual que sea lo suficientemente flexible como para funcionar durante mucho tiempo para que CKB pueda seguir el ritmo del desarrollo de la criptografía. La historia de la criptografía es una batalla eterna entre "empuñar la espada" y "romper el muro": en la historia del desarrollo de la criptografía durante miles de años, el cifrado y el descifrado son una competencia intelectual interminable. será lo mismo en el futuro. Algunos algoritmos de cifrado que son adecuados para la actualidad, como secp256k1, pueden quedar obsoletos en el futuro; en el futuro seguirán surgiendo nuevos algoritmos y tecnologías más valiosas (como Schnorr o firmas poscuánticas, etc.). Los programas que se ejecutan en la máquina virtual de blockchain deberían poder utilizar nuevos algoritmos de manera más libre y conveniente y, al mismo tiempo, esos algoritmos obsoletos deberían eliminarse de forma natural.
Para facilitar la comprensión, utilizamos Bitcoin como ejemplo. Actualmente, Bitcoin utiliza SIGHASH para las firmas de transacciones y utiliza el algoritmo hash SHA-256 en el protocolo de consenso. Entonces, ¿podemos asegurarnos de que este enfoque SIGHASH utilizado por Bitcoin seguirá siendo la mejor opción dentro de unos años? O, con una potencia informática cada vez mayor, ¿SHA-256 sigue siendo adecuado como algoritmo hash estable? Para todos los protocolos blockchain que estamos estudiando actualmente, si es necesario actualizar el algoritmo de cifrado, inevitablemente será necesaria una bifurcación dura. Al diseñar CKB, queríamos explorar cómo reducir la posibilidad de bifurcaciones duras a través del diseño de la VM.
Estamos pensando, ¿puede la máquina virtual permitir actualizar el algoritmo de cifrado? ¿O es posible agregar una nueva lógica de validación de transacciones a la VM? Por ejemplo, mientras seguimos usando secp256k1, si existen incentivos económicos o la necesidad de actualizar el algoritmo, ¿podemos implementar un algoritmo de verificación de firmas más eficiente sin bifurcar? O, si alguien encuentra una manera de implementar un mejor algoritmo en CKB, o necesita introducir un nuevo algoritmo de cifrado, ¿podemos asegurarnos de que pueda implementarlo libremente?
Esperamos que CKB-VM pueda proporcionar a todos más espacio de implementación, maximizar la flexibilidad y permitir a los usuarios utilizar nuevos algoritmos de cifrado sin esperar a que se formen bifurcaciones duras.
transparencia operativa
Después de investigar la generación actual de máquinas virtuales blockchain, notamos un problema, aún tomando Bitcoin como ejemplo: la capa de máquinas virtuales de Bitcoin solo proporciona una pila, y la pila no puede saber qué se puede almacenar en la pila durante la ejecución, el tamaño de los datos o la profundidad de la pila. , es el mismo problema para todas las demás máquinas virtuales implementadas en modo de pila, aunque la capa de consenso puede proporcionar una definición de profundidad de pila o proporcionar profundidad de pila indirectamente (según la longitud de la instrucción o los límites de gas). Esto obligará a los desarrolladores de programas en la VM a adivinar el estado del programa cuando se está ejecutando. Este tipo de VM impide que el programa utilice todo su potencial.
Con base en este problema, creemos que debería ser una prioridad definir los límites de todos los recursos durante la operación de la VM, incluidos los límites de gas y el tamaño del espacio de la pila, y permitir que los programas que se ejecutan en la VM consulten el uso de recursos. la VM para Se emplean diferentes algoritmos según la disponibilidad de recursos. Con este diseño, los programas pueden explotar todo el potencial de la VM. Y en los siguientes escenarios, podemos ver una mayor flexibilidad de VM:
1. Puede elegir diferentes estrategias para contratos inteligentes que almacenen datos según el espacio de almacenamiento (capacidad de la celda) disponible para los usuarios en CKB. Cuando la capacidad de la celda es suficiente, el programa puede almacenar datos directamente para reducir la cantidad de ciclos de CPU utilizados (los pasos que toma la CPU para ejecutar una instrucción de la máquina cuando la capacidad de la celda es limitada, el programa puede comprimir los datos para adaptarse); a la menor capacidad y utilizar más muchos ciclos de CPU.
2. Se pueden seleccionar diferentes mecanismos de procesamiento para el contrato inteligente en función de la cantidad total de datos (datos de celda) almacenados por el usuario y el tamaño de la memoria restante. Cuando hay una pequeña cantidad de datos de celda o una gran cantidad de memoria restante, todos los datos de celda se pueden leer en la memoria para su procesamiento. Cuando hay una gran cantidad de datos de celda o poca memoria restante, cada operación puede leer solo una parte de la memoria, similar a la operación de intercambio de memoria.
3. Para algunos contratos comunes, como los algoritmos hash, se pueden seleccionar diferentes métodos de procesamiento según la cantidad de ciclos de CPU proporcionados por el usuario. Por ejemplo, la seguridad de SHA3-256 es suficiente para satisfacer las necesidades de la mayoría de los escenarios; sin embargo, el contrato puede utilizar el algoritmo SHA3-512 para cumplir con requisitos de seguridad más altos mediante el uso de más ciclos de CPU.
Sobrecarga de tiempo de ejecución
El mecanismo de gas en la máquina virtual Ethereum (EVM) es un diseño muy genial. Resuelve elegantemente el problema de apagado en escenarios de aplicaciones blockchain (debido a que Ethereum está completo en Turing, se permiten declaraciones de bucle, pero las declaraciones de bucle infinito pueden causar fácilmente problemas de apagado). El mecanismo de gas limita la cantidad máxima de cálculo de un bloque, evitando así este problema) y permitiendo que el programa realice cálculos en una máquina virtual completamente descentralizada. Sin embargo, descubrimos que es muy difícil diseñar un método de cálculo de gas razonable para diferentes códigos de operación (operadores) en EVM. EVM tiene que ajustar el mecanismo de cálculo de gas casi cada vez que se actualiza (el nivel de abstracción de EVM es relativamente más alto). La instrucción EVM puede corresponder a varias instrucciones de hardware subyacentes. Al ejecutar el programa, la cantidad de datos procesados y la complejidad computacional solo se pueden valorar mediante estimación, por lo que EVM necesita ajustar continuamente el mecanismo de cálculo de Gas.
Por lo tanto, nos preguntamos: ¿Se puede utilizar el diseño de VM para garantizar que el método de cálculo del consumo de recursos cuando el programa se está ejecutando sea más razonable y preciso?
Esperábamos encontrar un diseño de VM que proporcionara todas las capacidades anteriores, pero descubrimos que no existía una solución disponible que pudiera lograr nuestra visión de CKB. Por lo tanto, decidimos rediseñar una máquina virtual que pudiera cumplir con todas las características anteriores para realizar mejor la visión de CKB.
Si bien otros conjuntos de instrucciones pueden compartir algunas de estas características, en nuestra evaluación, el conjunto de instrucciones RISC-V es el único que las tiene todas.
Por lo tanto, finalmente optamos por implementar CKB-VM utilizando el conjunto de instrucciones RISC-V.
Lectura recomendada:
1. Después de esperar y observar, probar las aguas y enfrentar obstáculos, RISC-V se ha colocado en el trampolín para entrar en la edad de oro.
2. RISC-V realmente se ha convertido en una realidad y la velocidad está un poco más allá de la imaginación.
3. Cuando CKB-VM se encuentra con RISC-V: el nacimiento de CKB-VM
https://talk.nervos.org/t/ckb-vm-risc-v-ckb-vm/1667
4. El nacimiento de CKB-VM, una máquina virtual blockchain basada en RISC-V (1)
https://talk.nervos.org/t/risc-v-ckb-vm/1726
5. Inspiración, diseño y ventajas: el nacimiento de CKB-VM (2)
https://talk.nervos.org/t/ckb-vm/1730
6. Cómo jugar felizmente en CKB-VM - El nacimiento de CKB-VM (3)
https://talk.nervos.org/t/ckb-vm-ckb-vm/1765
7. La pregunta central de Zaki Manian: Máquina virtual Blockchain, ¿cuál es más adecuada, WASM o RISC-V?
https://talk.nervos.org/t/zaki-manian-wasm-risc-v/463
