RISC V es una arquitectura de conjunto de instrucciones desarrollada por la Universidad de California, Berkeley. El concepto de RISC fue motivado por el hecho de que la mayoría de las instrucciones del procesador no fueron utilizadas por la mayoría de los programas informáticos. Por lo tanto, la lógica de decodificación innecesaria se estaba utilizando en los diseños de procesadores , consumiendo más energía y área. Para acortar el conjunto de instrucciones e invertir más dentro de los recursos de registro, el Procesador RISC V Fue implementado.
Esta tecnología fue notada por muchos gigantes tecnológicos y nuevas empresas porque es completamente de código abierto y gratuito. La mayoría de los tipos de procesadores están disponibles con un acuerdo de licencia, sin embargo, con este tipo de procesador; cualquiera puede hacer sus nuevos diseños de procesador. Entonces, este artículo analiza una descripción general de un procesador RISC V: su funcionamiento y sus aplicaciones.
¿Qué es el procesador RISC V?
En el procesador RISC V, el término RISC significa 'computadora de conjunto de instrucciones reducido' que ejecuta pocas instrucciones de computadora, mientras que 'V' significa la quinta generación. Es una ISA (arquitectura de conjunto de instrucciones) de hardware de código abierto basada en el principio establecido de RIESGO .
En comparación con otros diseños de ISA, este ISA está disponible con una licencia de código abierto. Por lo tanto, varias empresas de fabricación han anunciado y también han proporcionado hardware RISC-V, con sistemas operativos de código abierto.
Esta es una nueva arquitectura y está disponible en licencias abiertas, no restrictivas y gratuitas. Este procesador cuenta con un amplio apoyo de las industrias de fabricantes de chips y dispositivos. Por lo tanto, está diseñado principalmente para ser libremente extensible y personalizable para usar en muchas aplicaciones.
Historia de RISC V
El RISC fue inventado por el Prof. David Patterson alrededor de 1980 en la Universidad de California, Berkeley. El Prof. David con el Prof. John Hennessy presentaron sus esfuerzos en dos libros, a saber, 'Organización y diseño de computadoras' y 'Arquitectura de computadoras en la Universidad de Stanford'. Entonces, recibieron el ACM A.M. Premio Turing en el año 2017.
Desde el año 1980 hasta el año 2010, se inició la investigación de desarrollo de quinta generación de RISC y finalmente se identificó como RISC-V, que se pronuncia como riesgo cinco.
RISC V Arquitectura y Trabajo
La arquitectura RV12 RISC V se muestra a continuación. El RV12 es altamente configurable con una CPU RISC compatible con RV32I y RV64I de un solo núcleo que se utiliza en campos integrados. El RV12 también pertenece a una familia de CPU de 32 o 64 bits, según el conjunto de instrucciones RISC-V del estándar industrial.
El RV12 simplemente ejecuta una arquitectura Harvard para el acceso simultáneo a la instrucción y a la memoria de datos. También incluye una canalización de 6 etapas que ayuda a optimizar las superposiciones entre la ejecución y los accesos a la memoria para mejorar la eficiencia. Esta arquitectura incluye principalmente predicción de bifurcación, caché de datos, unidad de depuración, caché de instrucciones y unidades multiplicadoras o divisoras opcionales.
Las características principales de RV12 RISC V incluyen lo siguiente.
- Es un conjunto de instrucciones estándar de la industria.
- Parametrizado con datos de 32 o 64 bits.
- Tiene interrupciones precisas y rápidas.
- Las instrucciones personalizadas permiten agregar aceleradores de hardware patentados.
- Ejecución de ciclo único.
- Tubería de seis etapas con plegado de optimización.
- Soporte con protección de memoria.
- Cachés opcionales o parametrizados.
- Extremadamente parametrizado.
- Los usuarios pueden seleccionar datos de 32/64 bits y unidad de predicción de sucursales.
- Los usuarios pueden seleccionar cachés de instrucciones/datos.
- Estructura, tamaño y arquitectura de caché seleccionables por el usuario.
- Compatibilidad con divisor o multiplicador de hardware por latencia definida por el usuario.
- La arquitectura del autobús es flexible y admite Wishbone y AHB.
- Este diseño optimiza la potencia y el tamaño.
- El diseño está completamente parametrizado, lo que proporciona compensaciones de rendimiento o potencia.
- Diseño CLK cerrado para disminuir la potencia.
- Soporte de software por estándar de la industria.
- Simulador arquitectónico.
- Eclipse IDE se utiliza para Linux/Windows.
El canal de ejecución de RISC V
Incluye cinco etapas como IF (búsqueda de instrucciones), ID (decodificación de instrucciones), EX (ejecución), MEM (acceso a memoria) y WB (reescritura de registros).
Obtención de instrucciones
En la etapa de obtención de instrucciones o IF, se lee una sola instrucción del contador de programa (PC) y la memoria de instrucciones, que se actualiza a la siguiente instrucción.
Instrucción Pre-Decodificación
Una vez que se permite el soporte de RVC, la etapa de decodificación previa de instrucciones decodificará una instrucción comprimida de 16 bits en una instrucción nativa de 32 bits.
Decodificación de instrucciones
En la etapa de decodificación de instrucciones (ID), se permite el archivo de registro y se deciden los controles de omisión.
Ejecutar
En la etapa de ejecución, el resultado se calcula para una instrucción ALU, DIV, MUL, la memoria permitida para una instrucción de almacenamiento o carga, y las bifurcaciones y saltos se miden con respecto a los resultados esperados.
Memoria
En esta etapa de memoria, se accede a la memoria a través de la canalización. La inclusión de esta fase asegura el alto rendimiento del gasoducto.
Respóndeme
En esta etapa, el resultado de la etapa de Ejecución se registra en el Archivo de Registro.
Predictor de rama
Este procesador incluye una unidad predictora de bifurcación o BPU que se utiliza para almacenar datos anteriores para guiar al procesador RISC V a decidir si se toma o no una bifurcación específica. Estos datos predictores simplemente se actualizan una vez que se ejecuta la rama.
Esta unidad incluye diferentes parámetros que determinan su comportamiento. Por ejemplo, HAS_BPU se usa para determinar si una rama predice que una unidad está presente, BPU_GLOBAL_BITS determinará cuántos bits pasados se deben usar y BPU_LOCAL_BITS determinará cuántos LSB del contador del programa se deben usar. La combinación de BPU_LOCAL_BITS y BPU_GLOBAL_BITS creará un vector que se utiliza principalmente para abordar la tabla de predicción de ramas.
caché de datos
Esto se utiliza principalmente para acelerar el acceso a la memoria de datos al almacenar en búfer las ubicaciones de memoria a las que se accede recientemente. Esto es capaz de manejar accesos de media palabra, byte y palabra cuando XLEN = 32 si están en sus propios límites. También es capaz de manejar accesos de media palabra, byte, palabra y palabra doble cuando XLEN=64 si están en sus propios límites.
A lo largo de una pérdida de caché, se puede volver a escribir un bloque completo en la memoria, por lo que, si es necesario, se puede cargar un nuevo bloque en el caché. La caché de datos se desactiva al establecer DCACHE_SIZE en cero. Después de eso, se accede directamente a las ubicaciones de la memoria a través del Interfaz de datos .
Caché de instrucciones
Esto se utiliza principalmente para acelerar la obtención de instrucciones al almacenar en búfer las instrucciones recién obtenidas. Este caché se utiliza para obtener una parcela para cada ciclo en cualquier límite de 16 bits, pero no a través de un límite de bloque. Durante un error de caché, se puede cargar un bloque completo desde la memoria de instrucciones. La configuración de esta caché se puede realizar en función de las necesidades del usuario. El tamaño de la memoria caché, el algoritmo de reemplazo y la longitud del bloque se pueden configurar.
El ciclo de instrucción se deshabilitará configurando ICACHE_SIZE a cero. Después de eso, los paquetes se recuperan directamente de la memoria a través del Interfaz de instrucción.
Unidad de depuración
La unidad de depuración permitirá que el entorno de depuración se detenga y examine la CPU. Las características principales de esto son el seguimiento de ramas, el seguimiento de un solo paso hasta 8 puntos de interrupción de hardware.
Registrar archivo
Esto está diseñado con 32 ubicaciones de registro de X0 a X31 donde el registro X9 es cero siempre. El archivo de registro incluye 1 puerto de escritura y 2 puertos de lectura.
Interfaz configurable
Esta es una interfaz externa donde este procesador admite diferentes interfaces de bus externo.
¿Cómo funciona RISC V?
RISC-V es una arquitectura de conjunto de instrucciones basada en los principios de RISC (computadora con conjunto de instrucciones reducido). Este procesador es único y también revolucionario, ya que es un ISA gratuito, común y de código abierto en el que se puede desarrollar hardware, se puede portar el software y se pueden diseñar procesadores para soportarlo.
Diferencia B/N RISC V Vs MIPS
La diferencia entre RISC V y MIPS incluye lo siguiente.
RISC V |
MIPS |
El término RISC V significa Computadora con conjunto de instrucciones reducido, donde 'V' es la quinta generación. | El término 'MIPS' significa 'millones de instrucciones por segundo'. |
RISC-V simplemente permite a los fabricantes de dispositivos más pequeños diseñar hardware sin pagar. | MIPS permite al fabricante medir la velocidad del procesador pagando porque no es gratis. |
MIPS está eficientemente muerto. | RISC-V no está eficientemente muerto. |
Este procesador proporciona instrucciones de bifurcación para comparar dos registros. | MIPS depende de una instrucción de comparación que ubica un registro en 1 o 0 en función de si el contraste es verdadero. |
El esquema de codificación ISA es fijo y variable en RISC V. | El esquema de codificación ISA está arreglado en MIPS |
El tamaño del conjunto de instrucciones es de 16 bits, 32 bits, 64 bits o 128 bits. | El tamaño del conjunto de instrucciones es de 32 o 64 bits. |
Tiene 32 registros de punto flotante y de propósito general | Tiene 31 registros de punto flotante y de propósito general. |
Tiene 26 operaciones de punto flotante de precisión simple y doble. | Tiene 15 operaciones de punto flotante de precisión simple y doble. |
Diferencia B/N RISC V Vs ARM
La diferencia entre RISC V Vs ARM incluye lo siguiente.
RISC V |
BRAZO |
RISC-V es de código abierto, por lo que no requiere ninguna licencia. | ARM es un código cerrado, por lo que necesita una licencia. |
Es una nueva plataforma de procesador, por lo que hay muy poco soporte para software y entornos de programación. | ARM tiene una comunidad en línea muy grande, que admite bibliotecas y estructuras para ayudar a los diseñadores objetivo en varias plataformas como microprocesadores, microcontroladores y también servidores. |
Los chips basados en RISC V utilizan 1 vatio de potencia. | Los chips basados en ARM usan menos de 4 vatios de potencia. |
Tiene un sistema de codificación ISA fijo y variable. | Dispone de un sistema de codificación ISA fijo. |
El tamaño del conjunto de instrucciones RISC V varía de 16 bits a 128 bits. | Su tamaño de instrucción varía de 16 bits a 64 bits. |
Incluye 32 registros de punto flotante y de propósito general. | Incluye 31 registros de punto flotante y de propósito general. |
Tiene 26 operaciones de punto flotante de precisión simple. | Tiene 33 operaciones de punto flotante de precisión simple. |
Tiene 26 operaciones de punto flotante de precisión doble. | Tiene 29 operaciones de punto flotante de precisión doble. |
Código Verilog RISC V
El código verilog de la memoria de instrucciones para RISC se muestra a continuación.
// código Verilog para el procesador RISC
// Código Verilog para memoria de instrucciones
módulo Instrucción_Memoria(
entrada [15:0] pc,
instrucción de salida [15:0]
);
registro [`col – 1:0] memoria [`row_i – 1:0];
cable [3 : 0] rom_addr = pc[4 : 1];
inicial
empezar
$readmemb(“./prueba/prueba.prog”, memoria,0,14);
final
asignar instrucción = memoria[rom_addr];
módulo final
Código Verilog para el procesador RISC V de 16 bits:
módulo Risc_16_bit(
reloj de entrada
);
salto de cable,bne,beq,mem_read,mem_write,alu_src,reg_dst,mem_to_reg,reg_write;
cable[1:0] alu_op;
cable [3:0] código de operación;
// Ruta de datos
Datapath_Unit DU
(
.clk(clk),
.Salta Salta),
.rana(rana),
.mem_read(mem_read),
.mem_write(mem_write),
.alu_src(alu_src),
.reg_dst(reg_dst),
.mem_to_reg(mem_to_reg),
.reg_write(reg_write),
.bne(bne),
.alu_op(alu_op),
.opcode(código de operación)
);
// unidad de control
Control de unidad de control
(
.opcode(código de operación),
.reg_dst(reg_dst),
.mem_to_reg(mem_to_reg),
.alu_op(alu_op),
.Salta Salta),
.bne(bne),
.rana(rana),
.mem_read(mem_read),
.mem_write(mem_write),
.alu_src(alu_src),
.reg_write(reg_write)
);
módulo final
Conjuntos de instrucciones
Los conjuntos de instrucciones RISC V se analizan a continuación.
Operaciones aritmeticas
Las operaciones aritméticas RISC V se enumeran a continuación.
Mnemotécnico | Escribe | Instrucción | Descripción |
AÑADIR rd, rs1, rs2 |
R |
Agregar | rdß rs1 + rs2 |
SUB rd, rs1, rs2 |
R |
Sustraer | rdß rs1 – rs2 |
ADDI rd, rs1, imm12 |
yo |
Añadir inmediato | rdß rs1 + imm12 |
SLT rd, rs1, rs2 |
R |
Establecer menos de | rdß rs1 -< rs2 |
SLTI rd, rs1, imm12 |
yo |
Establecer menos que inmediato | rdß rs1 -< imm12 |
SLTU rd, rs1, rs2 |
R |
Establecer menos que sin firmar | rdß rs1 -< rs2 |
SLTIU rd, rs1, imm12 |
yo |
Establecer menos que inmediato sin firmar | rdß rs1 -< imm12 |
LUI rd, imm20 |
EN |
Carga superior inmediata | rdß imm20<<12 |
AUIP rd, imm20 |
EN |
Agregar inmediato superior a la PC | rdß PC+imm20<<12 |
Operaciones lógicas
Las operaciones lógicas de RISC V se enumeran a continuación.
Mnemotécnico | Escribe | Instrucción | Descripción |
Y rd, rs1, rs2 |
R |
Y | rdß rs1 y rs2 |
O rd, rs1, rs2 |
R |
O | rdß rs1 | rs2 |
XOR rd, rs1, rs2 |
R |
LIBRE | rdß rs1 ^ rs2 |
ANDI rd, rs1, imm12 |
yo |
Y inmediato | rdß rs1 & imm2 |
ORI rd, rs1, imm12 |
yo |
O Inmediato | rdß rs1 | imm12 |
OXRI rd, rs1, imm12 |
yo |
XOR inmediato | rdß rs1 ^ rs2 |
SLL rd, rs1, rs2 |
R |
Desplazamiento lógico a la izquierda | rdß rs1 << rs2 |
SRL rd, rs1, rs2 |
R |
Desplazamiento lógico a la derecha | rdß rs1 >> rs2 |
SRA rd, rs1, rs2 |
R |
Desplazar aritmética a la derecha | rdß rs1 >> rs2 |
SLLI rd, rs1, falso |
yo |
Desplazamiento a la izquierda lógico inmediato | rdß rs1 << impostor |
SRLI rd, rs1, falso |
yo |
Desplazamiento a la derecha lógico inmediato | rdß rs1 >> farsa |
SRAI rd, rs1, falso |
yo |
Desplazamiento aritmético inmediato a la derecha | rdß rs1 >> farsa |
Operaciones de carga/almacenamiento
Las operaciones de carga/almacenamiento de RISC V se enumeran a continuación.
Mnemotécnico | Escribe | Instrucción | Descripción |
LD rd, imm12 (rs1) |
yo |
Cargar palabra doble | rdß mem [rs1 +imm12] |
LW rd, imm12 (rs1) |
yo |
Cargar palabra | rdß mem [rs1 +imm12] |
LH rd, imm12 (rs1) |
yo |
Cargar a la mitad | rdß mem [rs1 +imm12] |
LB rd, imm12 (rs1) |
yo |
Cargar byte | rdß mem [rs1 +imm12] |
LWU rd, imm12 (rs1) |
yo |
Cargar palabra sin firmar | rdß mem [rs1 +imm12] |
LHU rd, imm12 (rs1) |
yo |
Cargar media palabra sin firmar | rdß mem [rs1 +imm12] |
LBU rd, imm12 (rs1) |
yo |
Cargar byte sin firmar | rdß mem [rs1 +imm12] |
SD rs2, imm12 (rs1) |
S |
Almacenar palabra doble | rs2 a memoria [rs1 +imm12] |
SW rs2, imm12 (rs1) |
S |
Almacenar palabra | rs2 (31:0) a memoria [rs1 +imm12] |
SH rs2, imm12 (rs1) |
S |
Almacenar a mitad de camino | rs2 (15:0) a memoria [rs1 +imm12] |
SB rs2, imm12 (rs1) |
S |
Almacenar byte | rs2 (15:0) a memoria [rs1 +imm12] |
SRAI rd, rs1, falso |
yo |
Desplazamiento aritmético inmediato a la derecha | rs2 (7:0) a memoria [rs1 +imm12] |
Operaciones de ramificación
Las operaciones de ramificación de RISC V se enumeran a continuación.
Mnemotécnico | Escribe | Instrucción | Descripción |
BEQ rs1, rs2, imm12 |
SB |
rama igual | Si rs1== rs2 PC ß PC+imm12 |
BNE rs1, rs2, imm12 |
SB |
Rama no igual | Si rs1!= rs2 PC ß PC+imm12 |
BGE rs1, rs2, imm12 |
SB |
Rama mayor o igual | Si rs1>= rs2 PC ß PC+imm12 |
BGEU rs1, rs2, imm12 |
SB |
Rama mayor o igual que sin firmar | Si rs1>= rs2 PC ß PC+imm12 |
BLT rs1, rs2, imm12 |
SB |
Rama menos de | Si rs1 < rs2 PC ß PC+imm12 |
BLTU rs1, rs2, imm12 |
SB |
Sucursal menor que sin firmar | Si rs1 < rs2 PC ß PC+imm12 <<1 |
JAL rd, imm20 |
UJ |
Saltar y vincular | rdßPC+4 PCß PC+imm20 |
JALR rd, imm12(rs1) |
yo |
Saltar y vincular registro | rdßPC+4 PCß rs1+imm12 |
Ventajas
los ventajas del RISC procesador V Incluya lo siguiente.
- Al usar RISCV, podemos ahorrar tiempo de desarrollo, desarrollo de software, verificación, etc.
- Este procesador tiene muchas ventajas como la simplicidad, la apertura, la modularidad, el diseño de borrón y cuenta nueva y la extensibilidad.
- Esto es compatible con varios compiladores de lenguajes como GCC (GNU Compiler Collection), un compilador de software libre y mediante el sistema operativo Linux .
- Esto puede ser utilizado por las empresas libremente sin regalías, sin tarifas de licencia y sin ataduras.
- El procesador RISC-V no incluye ninguna característica nueva o innovadora porque simplemente sigue los principios establecidos de RISC.
- Al igual que otras ISA, esta especificación de procesador simplemente define varios niveles de conjunto de instrucciones. Esto contiene variantes de 32 y 64 bits, así como extensiones para dar soporte a las instrucciones de coma flotante.
- Estos son gratuitos, simples, modulares, estables, etc.
Desventajas
los desventajas del procesador RISC V Incluya lo siguiente.
- Los compiladores y programadores utilizan con frecuencia instrucciones complejas.
- El o/p de un RISC puede cambiar según el código cuando las instrucciones posteriores dentro de un bucle dependen de la instrucción anterior para su ejecución.
- Estos procesadores necesitan guardar una variedad de instrucciones rápidamente, lo que requiere un gran conjunto de memoria caché para responder a la instrucción de manera oportuna.
- Las características, capacidades y beneficios completos de RISC dependen principalmente de la arquitectura.
Aplicaciones
los aplicaciones del RISC V procesador Incluya lo siguiente.
- RISC-V se utiliza en sistemas integrados, inteligencia artificial y aprendizaje automático.
- Estos procesadores se utilizan en aplicaciones de sistemas integrados basados en alto rendimiento.
- Este procesador es apropiado para usar en algunos campos particulares, como la computación perimetral, la IA y las aplicaciones de almacenamiento.
- RISC-V es importante ya que permite a los fabricantes de dispositivos más pequeños diseñar hardware sin pagar.
- Este procesador simplemente permite a los investigadores y desarrolladores diseñar e investigar con una arquitectura ISA o de conjunto de instrucciones disponible gratuitamente.
- Las aplicaciones de RISC V van desde pequeños microcontroladores integrados hasta PC de escritorio y supercomputadoras, incluidos los procesadores vectoriales.
Así, esto es una descripción general de un procesador RISC V – arquitectura, trabajando con aplicaciones. Aquí hay una pregunta para usted, ¿qué es un procesador CISC?