
RISC V é uma arquitetura de conjunto de instruções desenvolvida pela Universidade da Califórnia, Berkeley. O conceito de RISC foi motivado pelo fato de que a maioria das instruções do processador não era utilizada pela maioria dos programas de computador. Assim, a lógica de decodificação desnecessária estava sendo utilizada nos projetos de processadores , consumindo mais energia e área. Para encurtar o conjunto de instruções e investir mais em recursos de registro, o Processador RISC V foi implementado.
Essa tecnologia foi notada por muitos gigantes da tecnologia e startups porque é totalmente de código aberto e gratuito. A maioria dos tipos de processadores está disponível com um contrato de licença, mas com esse tipo de processador; qualquer um pode fazer seus novos designs de processador. Portanto, este artigo discute uma visão geral de um processador RISC V – funcionando e suas aplicações.
O que é o processador RISC V?
No processador RISC V, o termo RISC significa “computador de conjunto de instruções reduzido” que executa poucas instruções de computador, enquanto ‘V’ representa a 5ª geração. É um ISA de hardware de código aberto (arquitetura de conjunto de instruções) baseado no princípio estabelecido de RISCO .
Em comparação com outros designs de ISA, este ISA está disponível com uma licença de código aberto. Assim, várias empresas de manufatura anunciaram e também forneceram hardware RISC-V, com sistemas operacionais de código aberto.
Esta é uma nova arquitetura e está disponível em licenças abertas, não restritivas e gratuitas. Este processador tem amplo suporte das indústrias de fabricantes de chips e dispositivos. Portanto, foi projetado principalmente para ser extensível e personalizável livremente para uso em muitos aplicativos.
Histórico do RISC V
O RISC foi inventado pelo Prof. David Patterson por volta de 1980 na Universidade da Califórnia, Berkeley. O Prof. David com o Prof. John Hennessy apresentou seus esforços em dois livros, “Computer Organization and Design” e “Computer Architecture at Stanford University. Então, eles receberam o ACM A.M. Prêmio Turing no ano de 2017.
Do ano de 1980 ao ano de 2010, iniciou-se a pesquisa de desenvolvimento de quinta geração do RISC e, finalmente, passou a ser identificado como RISC-V que se pronuncia como risco cinco.
RISC V Arquitetura e Trabalho
A arquitetura RV12 RISC V é mostrada abaixo. O RV12 é altamente configurável com uma CPU RISC de núcleo único compatível com RV32I e RV64I que é usada em campos incorporados. O RV12 também é de uma família de CPU de 32 ou 64 bits, dependendo do conjunto de instruções RISC-V padrão industrial.
O RV12 simplesmente executa uma arquitetura Harvard para acesso simultâneo à instrução e à memória de dados. Ele também inclui um pipeline de 6 estágios que ajuda a otimizar as sobreposições entre a execução, bem como os acessos à memória para melhorar a eficiência. Essa arquitetura inclui principalmente previsão de ramificação, cache de dados, unidade de depuração, cache de instruções e unidades multiplicadoras ou divisoras opcionais.

As principais características do RV12 RISC V incluem o seguinte.
- É um conjunto de instruções padrão da indústria.
- Parametrizado com dados de 32 ou 64 bits.
- Possui interrupções precisas e rápidas.
- As instruções personalizadas permitem a adição de aceleradores de hardware proprietários.
- Execução de ciclo único.
- Pipeline de seis estágios com otimização dobrada.
- Suporte com proteção de memória.
- Caches opcionais ou parametrizados.
- Extremamente Parametrizado.
- Os usuários podem selecionar dados de 32/64 bits e unidade de previsão de ramificação.
- Os usuários podem selecionar caches de instruções/dados.
- Estrutura, tamanho e arquitetura de cache selecionáveis pelo usuário.
- Suporte a divisor ou multiplicador de hardware por latência definida pelo usuário.
- A arquitetura de barramento é flexível e suporta Wishbone e AHB.
- Este design otimiza a potência e o tamanho.
- O design é completamente parametrizado, o que fornece desempenho ou compensação de energia.
- Design CLK fechado para diminuir a potência.
- Suporte de software por padrão da indústria.
- Simulador de arquitetura.
- O Eclipse IDE é usado para Linux/Windows.
O pipeline de execução RISC V
Ele inclui cinco estágios como IF (busca de instruções), ID (decodificação de instruções), EX (executar), MEM (acesso à memória) e WB (registrar write-back).
Busca de instruções
No estágio de busca de instruções ou IF, uma única instrução é lida do contador de programa (PC) e da memória de instruções que é atualizada para a próxima instrução.
Pré-decodificação de instruções
Uma vez que o Suporte RVC é permitido, então o estágio de Pré-Decodificação de Instrução decodificará uma instrução compactada de 16 bits em uma instrução nativa de 32 bits.
Decodificação de instruções
No estágio de Decodificação de Instrução (ID), o Arquivo de Registro é permitido e os controles de bypass são decididos.
Executar
No estágio Execute, o resultado é calculado para uma instrução ALU, DIV, MUL, a memória permitida para uma instrução Store ou Load, e os desvios e saltos são medidos em relação aos resultados esperados.
Memória
Neste estágio de Memória, a memória é acessada por meio do pipeline. A inclusão desta fase garante o alto desempenho do pipeline.
Escreva de volta
Nesta etapa, o resultado da etapa de Execução é gravado no Arquivo de Registro.
Previsor de Ramo
Este processador inclui uma unidade de previsão de ramificação ou BPU que é usada para armazenar dados passados para orientar o processador RISC V na decisão se uma ramificação específica é tomada ou não. Esses dados do preditor são simplesmente atualizados assim que a ramificação é executada.
Esta unidade inclui diferentes parâmetros que determinam o seu comportamento. Por exemplo, HAS_BPU é usado para determinar se uma ramificação prevê que uma unidade está presente, BPU_GLOBAL_BITS determinará quantos bits anteriores devem ser usados e BPU_LOCAL_BITS determinará quantos LSB do contador de programa devem ser usados. A combinação de BPU_LOCAL_BITS & BPU_GLOBAL_BITS criará um vetor que é utilizado principalmente para endereçar a tabela de previsão de ramificação.
Cache de dados
Isso é usado principalmente para acelerar o acesso à memória de dados armazenando em buffer os locais de memória recém-acessados. Isso é capaz de lidar com acessos de meia palavra, byte e palavra quando XLEN = 32 se estiverem em seus próprios limites. Também é capaz de lidar com acessos de meia palavra, byte, palavra e palavra dupla quando XLEN=64 se estiverem em seus próprios limites.
Ao longo de uma falta de cache, um bloco inteiro pode ser escrito de volta na memória, portanto, se necessário, um novo bloco pode ser carregado no cache. O Cache de Dados é desabilitado definindo DCACHE_SIZE como zero. Depois disso, os locais de memória são acessados diretamente através do Interface de dados .
Cache de instruções
Isso é usado principalmente para acelerar a busca de instruções armazenando em buffer as instruções recém-buscadas. Esse cache é usado para buscar um pacote para cada ciclo em qualquer limite de 16 bits, mas não em um limite de bloco. Ao longo de uma falta de cache, um bloco inteiro pode ser carregado da memória de instruções. A configuração deste cache pode ser feita com base nas necessidades do usuário. O tamanho do cache, o algoritmo de substituição e o comprimento do bloco são configuráveis.
O ciclo de instrução será desabilitado configurando ICACHE_SIZE para zero. Depois disso, os pacotes são buscados diretamente da memória através do Interface de instruções.
Unidade de depuração
A unidade de depuração permitirá que o ambiente de depuração pare e examine a CPU. As principais características disso são Rastreamento de Ramificação, Rastreamento de Etapa Única até 8- Pontos de Interrupção de Hardware.
Arquivo de registro
Isso é projetado com 32 locais de registro de X0 a X31, onde o registro X9 é sempre zero. O Arquivo de Registro inclui 1 porta de gravação e 2 portas de leitura.
Interface configurável
Esta é uma interface externa onde este processador suporta diferentes interfaces de barramento externo.
Como funciona o RISC V?
O RISC-V é uma arquitetura de conjunto de instruções enraizada nos princípios RISC (computador de conjunto de instruções reduzido). Este processador é muito único e também revolucionário, pois é um ISA gratuito, comum e de código aberto, onde o hardware pode ser desenvolvido, o software pode ser portado e os processadores podem ser projetados para suportá-lo.
Diferença B/W RISC V vs MIPS
A diferença entre RISC V e MIPS inclui o seguinte.
RISCO V |
MIPS |
O termo RISC V significa Computador de Conjunto de Instruções Reduzido, onde ‘V’ é a quinta geração. | O termo “MIPS” significa “Milhões de instruções por segundo”. |
O RISC-V simplesmente permite que os fabricantes de dispositivos menores projetem hardware sem pagar. | O MIPS permite ao fabricante medir a velocidade do processador pagando porque não é gratuito. |
MIPS está eficientemente morto. | O RISC-V não está eficientemente morto. |
Este processador fornece instruções de desvio para comparar dois registradores. | O MIPS depende de uma instrução de comparação que localiza um registro em 1 ou 0 com base em se o contraste é verdadeiro. |
O esquema de codificação ISA é fixo e variável no RISC V. | O esquema de codificação ISA é corrigido no MIPS |
O tamanho do conjunto de instruções é de 16 bits ou 32 bits ou 64 bits ou 128 bits. | O tamanho do conjunto de instruções é de 32 bits ou 64 bits. |
Possui 32 registradores de uso geral e de ponto flutuante | Possui 31 registradores de uso geral e de ponto flutuante. |
Possui 26 operações de ponto flutuante de precisão simples e dupla. | Possui 15 operações de ponto flutuante de precisão simples e dupla. |
Diferença B/W RISC Vs ARM
A diferença entre RISC V Vs ARM inclui o seguinte.
RISCO V |
BRAÇO |
O RISC-V é de código aberto, portanto, não requer nenhuma licença. | ARM é um código fechado, então precisa de uma licença. |
É uma nova plataforma de processador, portanto, há um suporte muito pequeno para ambientes de software e programação. | A ARM tem uma comunidade online muito grande, que suporta bibliotecas e estruturas para auxiliar os designers de destino em várias plataformas, como microprocessadores, microcontroladores e também servidores. |
Os chips baseados em RISC V usam 1 watt de potência. | Os chips baseados em ARM usam menos de 4 watts de potência. |
Possui um sistema de codificação ISA fixo e variável. | Possui um sistema de codificação ISA fixo. |
O tamanho do conjunto de instruções RISC V varia de 16 bits a 128 bits. | Seu tamanho de instrução varia de 16 bits a 64 bits. |
Inclui 32 registradores de uso geral e de ponto flutuante. | Inclui 31 registradores de uso geral e de ponto flutuante. |
Possui 26 operações de ponto flutuante de precisão simples. | Possui 33 operações de ponto flutuante de precisão simples. |
Possui 26 operações de ponto flutuante de precisão dupla. | Possui 29 operações de ponto flutuante de precisão dupla. |
Código RISC V Verilog
O código verilog da memória de instruções para RISC é mostrado abaixo.
// Código Verilog para Processador RISC
// Código Verilog para memória de instruções
módulo Instruction_Memory(
entrada[15:0] pc,
instrução de saída[15:0]
);
reg [`col – 1:0] memória [`row_i – 1:0];
fio [3 : 0] rom_addr = pc[4 : 1];
inicial
começar
$readmemb(“./test/test.prog”, memory,0,14);
fim
atribuir instrução = memory[rom_addr];
módulo final
Código Verilog para o processador RISC V de 16 bits:
módulo Risc_16_bit(
clique de entrada
);
salto de fio,bne,beq,mem_read,mem_write,alu_src,reg_dst,mem_to_reg,reg_write;
fio[1:0] alu_op;
fio [3:0] opcode;
// Caminho de dados
Datapath_Unit DU
(
.clk(clk),
.jump(salto),
.frog(rã),
.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(opcode)
);
// unidade de controle
Controle de unidade_controle
(
.opcode(opcode),
.reg_dst(reg_dst),
.mem_to_reg(mem_to_reg),
.alu_op(alu_op),
.jump(salto),
.bne(bne),
.frog(rã),
.mem_read(mem_read),
.mem_write(mem_write),
.alu_src(alu_src),
.reg_write(reg_write)
);
módulo final
Conjuntos de instruções
Os conjuntos de instruções RISC V são discutidos abaixo.
Operaçoes aritimeticas
As operações aritméticas RISC V estão listadas abaixo.
Mnemônico | Modelo | Instrução | Descrição |
ADICIONAR rd, rs1, rs2 |
R |
Adicionar | rsrs1 + rs2 |
SUB rd, rs1, rs2 |
R |
Subtrair | rdß rs1 – rs2 |
ADDI rd, rs1, imm12 |
EU |
Adicionar imediato | rdß rs1 + imm12 |
SLT rd, rs1, rs2 |
R |
Definir menos de | rsrs1 -< rs2 |
SLTI rd, rs1, imm12 |
EU |
Definir menos que imediato | rdß rs1 -< imm12 |
SLTU rd, rs1, rs2 |
R |
Definir menos que não assinado | rsrs1 -< rs2 |
SLTIU rd, rs1, imm12 |
EU |
Definir menos do que imediato sem assinatura | rdß rs1 -< imm12 |
LUI rd, imm20 |
DENTRO |
Carregar superior imediato | rdß imm20<<12 |
AUIP rd,imm20 |
DENTRO |
Adicionar superior imediato ao PC | rdß PC+imm20<<12 |
Operações lógicas
As operações lógicas do RISC V estão listadas abaixo.
Mnemônico | Modelo | Instrução | Descrição |
E rd, rs1, rs2 |
R |
E | rs1 e rs2 |
OU rd, rs1, rs2 |
R |
OU | rdß rs1 | rs2 |
XOR rd, rs1, rs2 |
R |
GRATUITAMENTE | rs1 ^ rs2 |
ANDI rd, rs1, imm12 |
EU |
E imediato | rdß rs1 & imm2 |
ORI rd, rs1, imm12 |
EU |
OU Imediato | rdß rs1 | imm12 |
OXRIrd, rs1, imm12 |
EU |
XOR imediato | rsrs1 ^ rs2 |
SLL rd, rs1, rs2 |
R |
Deslocar para a esquerda lógico | rsrs1 << rs2 |
SRL rd, rs1, rs2 |
R |
Deslocar para a direita lógico | rs1 >> rs2 |
RAS rd, rs1, rs2 |
R |
Deslocar aritmética para a direita | rs1 >> rs2 |
SLLI rd, rs1, shamt |
EU |
Deslocar para a esquerda imediato lógico | rdß rs1 << shamt |
SRLI rd, rs1, shamt |
EU |
Deslocar para a direita lógico imediato | rs1 >> shamt |
SRAI rd, rs1, shamt |
EU |
Deslocar aritmética direita imediata | rs1 >> shamt |
Operações de carregamento/armazenamento
As operações de carregamento/armazenamento do RISC V estão listadas abaixo.
Mnemônico | Modelo | Instrução | Descrição |
LD rd, imm12 (rs1) |
EU |
Carregar palavra dupla | rdß mem [rs1 +imm12] |
LW rd, imm12 (rs1) |
EU |
Carregar palavra | rdß mem [rs1 +imm12] |
LH rd, imm12 (rs1) |
EU |
Carregar até a metade | rdß mem [rs1 +imm12] |
LB rd, imm12 (rs1) |
EU |
Carregar byte | rdß mem [rs1 +imm12] |
LWU rd, imm12 (rs1) |
EU |
Carregar palavra não assinada | rdß mem [rs1 +imm12] |
LHU rd, imm12 (rs1) |
EU |
Carregar meia palavra sem sinal | rdß mem [rs1 +imm12] |
LBU rd, imm12 (rs1) |
EU |
Carregar byte não assinado | rdß mem [rs1 +imm12] |
SD rs2, imm12 (rs1) |
S |
Armazenar palavra dupla | rs2 para mem [rs1 +imm12] |
SW rs2, imm12 (rs1) |
S |
Palavra da loja | rs2 (31:0) para mem [rs1 +imm12] |
SH rs2, imm12 (rs1) |
S |
Armazenar a meio caminho | rs2 (15:0) para mem [rs1 +imm12] |
SB rs2, imm12 (rs1) |
S |
Armazenar byte | rs2 (15:0) para mem [rs1 +imm12] |
SRAI rd, rs1, shamt |
EU |
Deslocar aritmética direita imediata | rs2 (7:0) para mem [rs1 +imm12] |
Operações de ramificação
As operações de ramificação do RISC V estão listadas abaixo.
Mnemônico | Modelo | Instrução | Descrição |
BEQ rs1, rs2, imm12 |
SB |
Ramo igual | Se rs1== rs2 PC ß PC+imm12 |
BNE rs1, rs2, imm12 |
SB |
Ramo não igual | Se rs1!= rs2 PC ß PC+imm12 |
BGE rs1, rs2, imm12 |
SB |
Ramo maior ou igual | Se rs1>= rs2 PC ß PC+imm12 |
BGEU rs1, rs2, imm12 |
SB |
Ramo maior ou igual a não assinado | Se rs1>= rs2 PC ß PC+imm12 |
BLT rs1, rs2, imm12 |
SB |
Filial inferior a | Se rs1 < rs2 PC ß PC+imm12 |
BLTU rs1, rs2, imm12 |
SB |
Filial menos de não assinada | Se rs1 < rs2 PC ß PC+imm12 <<1 |
JAL rd, imm20 |
UJ |
Saltar e Ligar | rdßPC+4 PCß PC+imm20 |
JALR rd, imm12(rs1) |
EU |
Registro de salto e link | rdßPC+4 PCß rs1+imm12 |
Vantagens
o vantagens do RISC Processador V inclui o seguinte.
- Ao usar o RISCV, podemos economizar tempo de desenvolvimento, desenvolvimento de software, verificação, etc.
- Este processador tem muitos prós como simplicidade, abertura, modularidade, design clean e extensibilidade.
- Isso é suportado por vários compiladores de linguagem como o GCC (GNU Compiler Collection), um compilador de software livre e através do SO Linux .
- Isso pode ser usado por empresas livremente sem royalties, sem taxas de licenciamento e sem strings conectadas.
- O processador RISC-V não inclui nenhum recurso novo ou inovador porque simplesmente segue os princípios estabelecidos do RISC.
- Semelhante a vários outros ISAs, esta especificação de processador simplesmente define vários níveis de conjunto de instruções. Portanto, contém variantes de 32 e 64 bits, bem como extensões para dar suporte a instruções de ponto flutuante.
- Estes são gratuitos, simples, modulares, estáveis, etc.
Desvantagens
o desvantagens do processador RISC V inclui o seguinte.
- Instruções complexas são frequentemente usadas por compiladores e programadores.
- O o/p de um RISC pode mudar com base no código quando as instruções subsequentes dentro de um loop dependem da instrução anterior para execução.
- Esses processadores precisam salvar uma variedade de instruções rapidamente, o que requer um grande conjunto de memória cache para responder à instrução em tempo hábil.
- Os recursos completos, capacidades e benefícios do RISC dependem principalmente da arquitetura.
Formulários
o aplicações do RISC V processador inclui o seguinte.
- O RISC-V é usado em sistemas embarcados, inteligência artificial e aprendizado de máquina.
- Esses processadores são usados em aplicativos de sistemas embarcados baseados em alto desempenho.
- Este processador é apropriado para uso em alguns campos específicos, como computação de borda, IA e aplicativos de armazenamento.
- O RISC-V é importante, pois permite que fabricantes de dispositivos menores projetem hardware sem pagar.
- Este processador simplesmente permite que os pesquisadores e desenvolvedores projetem e pesquisem com um ISA ou arquitetura de conjunto de instruções disponível gratuitamente.
- As aplicações do RISC V variam de pequenos microcontroladores incorporados a PCs de mesa e supercomputadores, incluindo processadores vetoriais.
Assim, isso é uma visão geral de um processador RISC V – arquitetura, trabalhando com aplicativos. Aqui está uma pergunta para você, o que é um processador CISC?