O que é o Processador RISC V: Arquitetura, Funcionamento e Suas Aplicações

Experimente Nosso Instrumento Para Eliminar Problemas





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.

  Arquitetura do processador RISC
Arquitetura do processador RISC

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?