Cos'è il processore RISC V: architettura, funzionamento e sue applicazioni

Prova Il Nostro Strumento Per Eliminare I Problemi





RISC V è un'architettura di set di istruzioni sviluppata dall'Università della California, Berkeley. Il concetto di RISC era motivato dal fatto che la maggior parte delle istruzioni del processore non erano utilizzate dalla maggior parte dei programmi per computer. Quindi, la logica di decodifica non necessaria è stata utilizzata all'interno dei progetti di processori , consumando più energia e area. Per abbreviare il set di istruzioni e investire di più nelle risorse del registro, il Processore RISC V è stato implementato.


Questa tecnologia è stata notata da molti giganti della tecnologia e start-up perché è completamente open source e gratuita. La maggior parte dei tipi di processori sono disponibili con un contratto di licenza, tuttavia con questo tipo di processore; chiunque può realizzare i propri nuovi progetti di processori. Quindi questo articolo discute una panoramica di un processore RISC V: il funzionamento e le sue applicazioni.



Che cos'è il processore RISC V?

Nel processore RISC V, il termine RISC sta per 'computer con set di istruzioni ridotto' che esegue poche istruzioni del computer mentre 'V' sta per la 5a generazione. Si tratta di un hardware open source ISA (instruction set architecture) basato sul principio stabilito di RISCHIO .

Rispetto ad altri progetti ISA, questo ISA è disponibile con una licenza open source. Pertanto, un certo numero di aziende manifatturiere ha annunciato e fornito anche hardware RISC-V, con sistemi operativi open source.



Questa è una nuova architettura ed è disponibile con licenze aperte, non restrittive e gratuite. Questo processore ha un ampio supporto dalle industrie dei produttori di chip e dispositivi. Quindi è principalmente progettato per essere liberamente estensibile e personalizzabile da utilizzare in molte applicazioni.

RISC V Storia

Il RISC è stato inventato dal Prof. David Patterson intorno al 1980 presso l'Università della California, Berkeley. Il Prof. David e il Prof. John Hennessy hanno presentato i loro sforzi in due libri: 'Computer Organization and Design' e 'Computer Architecture at Stanford University. Quindi, hanno ricevuto l'ACM A.M. Premio Turing nell'anno 2017.

Dall'anno 1980 all'anno 2010, la ricerca sullo sviluppo di quinta generazione RISC è stata avviata e alla fine è stata identificata come RISC-V che è pronunciato come rischio cinque.

RISC V Architettura e funzionamento

L'architettura RV12 RISC V è mostrata di seguito. L'RV12 è altamente configurabile con una CPU RISC single-core conforme a RV32I e RV64I utilizzata nei campi embedded. L'RV12 appartiene anche a una famiglia di CPU a 32 o 64 bit a seconda del set di istruzioni RISC-V dello standard industriale.

L'RV12 esegue semplicemente un'architettura Harvard per l'accesso simultaneo alle istruzioni e alla memoria dei dati. Include anche una pipeline a 6 fasi che aiuta a ottimizzare le sovrapposizioni tra l'esecuzione e gli accessi alla memoria per migliorare l'efficienza. Questa architettura include principalmente Branch Prediction, Data Cache, Debug Unit, Instruction Cache e unità moltiplicatore o divisore opzionali.

  Architettura del processore RISC
Architettura del processore RISC

Le caratteristiche principali di RV12 RISC V includono quanto segue.

  • È un set di istruzioni standard del settore.
  • Parametrizzato con dati a 32 o 64 bit.
  • Ha interruzioni precise e veloci.
  • Le istruzioni personalizzate consentono l'aggiunta di acceleratori hardware proprietari.
  • Esecuzione di ciclo unico.
  • Tubazione a sei stadi con ottimizzazione piegata.
  • Supporto con protezione della memoria.
  • Cache opzionali o parametrizzate.
  • Estremamente parametrizzato.
  • Gli utenti possono selezionare dati a 32/64 bit e Branch Prediction Unit.
  • Gli utenti possono selezionare cache di istruzioni/dati.
  • Struttura, dimensione e architettura della cache selezionabili dall'utente.
  • Supporto per divisore o moltiplicatore hardware per latenza definita dall'utente.
  • L'architettura del bus è flessibile e supporta Wishbone e AHB.
  • Questo design ottimizza la potenza e le dimensioni.
  • Il design è completamente parametrizzato che fornisce prestazioni o compromessi di potenza.
  • Design Gated CLK per ridurre la potenza.
  • Supporto software per standard di settore.
  • Simulatore architettonico.
  • Eclipse IDE è usato per Linux/Windows.

La pipeline di esecuzione RISC V

Include cinque fasi come IF (recupero istruzioni), ID (decodifica istruzioni), EX (esecuzione), MEM (accesso alla memoria) e WB (registrazione write-back).

Recupero istruzioni

Nella fase Instruction Fetch o IF, una singola istruzione viene letta dal contatore del programma (PC) e dalla memoria delle istruzioni che viene aggiornata all'istruzione successiva.

Pre-decodifica delle istruzioni

Una volta consentito il supporto RVC, la fase di pre-decodifica dell'istruzione decodificherà un'istruzione compressa a 16 bit in un'istruzione nativa a 32 bit.

Decodifica istruzioni

Nella fase Instruction Decode (ID), il file di registro è consentito e vengono decisi i controlli di bypass.

Eseguire

Nella fase di esecuzione, il risultato viene calcolato per un'istruzione ALU, DIV, MUL, la memoria consentita per un'istruzione Store o Load e le diramazioni e i salti vengono misurati rispetto ai risultati previsti.

Memoria

In questa fase di memoria, si accede alla memoria tramite la pipeline. L'inclusione di questa fase garantisce le elevate prestazioni del gasdotto.

Rispondere

In questa fase, il risultato della fase di esecuzione viene scritto nel file di registro.

Predittore di ramo

Questo processore include un'unità di predizione di filiale o BPU che viene utilizzata per archiviare i dati passati per guidare il processore RISC V nel decidere se una filiale specifica viene presa o meno. Questi dati del predittore vengono semplicemente aggiornati una volta eseguito il ramo.

Questa unità include diversi parametri che ne determinano il comportamento. Ad esempio, HAS_BPU viene utilizzato per determinare se un ramo prevede la presenza di un'unità, BPU_GLOBAL_BITS determinerà quanti bit passati devono essere utilizzati e BPU_LOCAL_BITS determinerà quanti LSB del contatore del programma devono essere utilizzati. La combinazione di BPU_LOCAL_BITS e BPU_GLOBAL_BITS creerà un vettore utilizzato principalmente per indirizzare la tabella di previsione del ramo.

Data Cache

Viene utilizzato principalmente per accelerare l'accesso alla memoria dei dati memorizzando nel buffer le posizioni di memoria a cui si accede di recente. Questo è in grado di gestire accessi a mezza parola, byte e parola quando  XLEN = 32 se si trovano ai propri limiti. È anche in grado di gestire accessi a mezza parola, byte, parola e doppia parola quando XLEN=64 se si trovano ai propri limiti.

Durante un errore di cache, un intero blocco può essere riscritto in memoria, quindi, se necessario, un nuovo blocco può essere caricato nella cache. La cache dei dati viene disabilitata impostando DCACHE_SIZE su zero. Successivamente, si accede alle posizioni di memoria direttamente tramite il Interfaccia dati .

Cache di istruzioni

Viene utilizzato principalmente per accelerare il recupero delle istruzioni memorizzando nel buffer le istruzioni appena recuperate. Questa cache viene utilizzata per recuperare un pacco per ogni ciclo su qualsiasi limite a 16 bit ma non oltre un limite di blocco. Durante un errore di cache, un intero blocco può essere caricato dalla memoria delle istruzioni. La configurazione di questa cache può essere eseguita in base alle esigenze dell'utente. La dimensione della cache, l'algoritmo di sostituzione e la lunghezza del blocco sono configurabili.

Il ciclo di istruzione verrà disabilitato impostando ICACHE_SIZE su zero. Successivamente, i pacchi vengono prelevati direttamente dalla memoria tramite il Interfaccia di istruzioni.

Unità di debug

L'unità di debug consentirà all'ambiente di debug di arrestarsi ed esaminare la CPU. Le caratteristiche principali di questo sono Branch Tracing, Single Step Tracing fino a 8 punti di interruzione hardware.

Registra file

Questo è progettato con 32 posizioni di registro da X0 a X31 dove X9 Register è sempre zero. Il file di registro include 1 porta di scrittura e 2 porte di lettura.

Interfaccia configurabile

Questa è un'interfaccia esterna in cui questo processore supporta diverse interfacce bus esterne.

Come funziona RISC V?

RISC-V è un'architettura di set di istruzioni radicata all'interno dei principi RISC (computer con set di istruzioni ridotto). Questo processore è davvero unico e anche rivoluzionario in quanto è un ISA gratuito, comune e open source in cui è possibile sviluppare hardware, trasferire il software e progettare processori per supportarlo.

Differenza B/N RISC V Vs MIPS

La differenza tra RISC V e MIPS include quanto segue.

RISC V

MIPS

Il termine RISC V sta per Reduced Instruction Set Computer dove 'V' è la quinta generazione. Il termine 'MIPS' sta per 'Milioni di istruzioni al secondo'.
RISC-V consente semplicemente ai produttori di dispositivi più piccoli di progettare hardware senza pagare. MIPS consente al produttore di misurare la velocità del processore pagando perché non è gratuito.
MIPS è efficientemente morto. RISC-V non è efficientemente morto.
Questo processore fornisce istruzioni di diramazione per confrontare due registri. MIPS dipende da un'istruzione di confronto che individua un registro su 1 o 0 a seconda che il contrasto sia vero.
Lo schema di codifica ISA è fisso e variabile in RISC V. Lo schema di codifica ISA è corretto in MIPS
La dimensione del set di istruzioni è 16 bit o 32 bit o 64 bit o 128 bit. La dimensione del set di istruzioni è 32 bit o 64 bit.
Dispone di 32 registri generici e in virgola mobile Dispone di 31 registri generici e in virgola mobile.
Dispone di 26 operazioni in virgola mobile a precisione singola e doppia. Dispone di 15 operazioni in virgola mobile a precisione singola e doppia.

Differenza B/N RISC V Vs ARM

La differenza tra RISC V Vs ARM include quanto segue.

RISC V

BRACCIO

RISC-V è open source, quindi non richiede alcuna licenza. ARM è un closed source, quindi necessita di una licenza.
È una nuova piattaforma di processori, quindi c'è un supporto molto piccolo per ambienti software e di programmazione. ARM ha una comunità online molto ampia, che supporta librerie e strutture per assistere i progettisti di destinazione in varie piattaforme come microprocessori, microcontrollori e anche server.
I chip basati su RISC V utilizzano 1 watt di potenza. I chip basati su ARM utilizzano meno di 4 watt di potenza.
Ha un sistema di codifica ISA fisso e variabile. Ha un sistema di codifica ISA fisso.
La dimensione del set di istruzioni RISC V varia da 16 bit a 128 bit. La sua dimensione delle istruzioni varia da 16 bit a 64 bit.
Include 32 registri generici e in virgola mobile. Include 31 registri generici e in virgola mobile.
Dispone di 26 singole operazioni in virgola mobile di precisione. Dispone di 33 singole operazioni in virgola mobile di precisione.
Dispone di 26 operazioni in virgola mobile a doppia precisione. Dispone di 29 operazioni in virgola mobile di precisione doppia.

Codice RISC V Verilog

Il codice verilog della memoria istruzioni per RISC è mostrato di seguito.

// Codice Verilog per il processore RISC
// Codice Verilog per la memoria di istruzioni

modulo Istruzione_Memoria(
ingresso[15:0] pc,
istruzione uscita[15:0].
);

reg [`col – 1:0] memoria [`row_i – 1:0];
filo [3 : 0] rom_addr = pc[4 : 1];
iniziale
inizio
$readmemb(“./test/test.prog”, memoria,0,14);
fine
assegna istruzione = memoria[rom_addr];

modulo terminale

Codice Verilog per il processore RISC V a 16 bit:

modulo Risc_16_bit(
ingresso clk
);

wire jump,bne,beq,mem_read,mem_write,alu_src,reg_dst,mem_to_reg,reg_write;
filo[1:0] alluminio_op;
filo [3:0] codice operativo;

// Percorso dati

Datapath_Unità DU
(
.clk(clk),
.salto (salto),
.rana (rana),
.mem_read(mem_read),
.scrittura_mem(scrittura_mem),
.alu_src(alu_src),
.reg_dst(reg_dst),
.mem_to_reg(mem_to_reg),
.reg_write(reg_write),
.bne(bne),
.alu_op(alu_op),
.codice operativo(codice operativo)
);

// unità di controllo
Controllo_Unità di controllo
(
.codice operativo(codice operativo),
.reg_dst(reg_dst),
.mem_to_reg(mem_to_reg),
.alu_op(alu_op),
.salto (salto),
.bne(bne),
.rana (rana),
.mem_read(mem_read),
.scrittura_mem(scrittura_mem),
.alu_src(alu_src),
.reg_write(reg_write)
);
modulo terminale

Set di istruzioni

I set di istruzioni RISC V sono discussi di seguito.

Operazioni aritmetiche

Le operazioni aritmetiche RISC V sono elencate di seguito.

Mnemonico Tipo Istruzione Descrizione
AGGIUNGI rd, rs1, rs2

R

Aggiungere rdß rs1 + rs2
SUB rd, rs1, rs2

R

Sottrarre rdß rs1 –  rs2
ADDI rd, rs1, imm12

io

Aggiungi immediato rdß rs1 + imm12
SLT rd, rs1, rs2

R

Imposta meno di rdß rs1 -< rs2
SLTI rd, rs1, imm12

io

Impostato meno che immediato rdß rs1 --< imm12
SLTU rd, rs1, rs2

R

Imposta meno di unsigned rdß rs1 -< rs2
SLTIU rd, rs1, imm12

io

Imposta meno che immediata senza segno rdß rs1 --< imm12
LUI rd, imm20

IN

Carica immediatamente superiore rdß imm20<<12
AUIP rd,imm20

IN

Aggiungi immediatamente superiore al PC rdß PC+imm20<<12

Operazioni logiche

Le operazioni logiche RISC V sono elencate di seguito.

Mnemonico Tipo Istruzione Descrizione
E rd, rs1, rs2

R

E rdß rs1 e rs2
OPPURE rd, rs1, rs2

R

O rdß rs1 | rs2
XOR  rd, rs1, rs2

R

GRATUITO rdß rs1 ^  rs2
ANDI  rd, rs1, imm12

io

E immediato rdß rs1 e imm2
ORI rd, rs1, imm12

io

O Immediato rdß rs1 | imm12
OXRI rd, rs1, imm12

io

XOR immediato rdß rs1 ^ rs2
SLL rd, rs1, rs2

R

Sposta a sinistra logica rdß rs1 <<  rs2
SRL rd, rs1, rs2

R

Sposta a destra logica rdß rs1 >>  rs2
RAS rd, rs1, rs2

R

Sposta a destra l'aritmetica rdß rs1 >>  rs2
SLLI rd, rs1, shamt

io

Spostamento logico sinistro immediato rdß rs1 << peccato
SRLI rd, rs1, shamt

io

Sposta a destra logico immediato rdß rs1 >> peccato
SRAI rd, rs1, shamt

io

Sposta a destra aritmetica immediata rdß rs1 >> peccato

Carica/Memorizza operazioni

Le operazioni di caricamento/store RISC V sono elencate di seguito.

Mnemonico Tipo Istruzione Descrizione
LD rd, imm12 (rs1)

io

Carica doppia parola rdß mem [rs1 +imm12]
LW rd, imm12 (rs1)

io

Carica parola rdß mem [rs1 +imm12]
LH rd, imm12 (rs1)

io

Carica a metà rdß mem [rs1 +imm12]
LB rd, imm12 (rs1)

io

Carica byte rdß mem [rs1 +imm12]
LWU rd, imm12 (rs1)

io

Carica parola senza segno rdß mem [rs1 +imm12]
LHU rd, imm12 (rs1)

io

Carica mezza parola senza segno rdß mem [rs1 +imm12]
LBU rd, imm12 (rs1)

io

Carica byte senza segno rdß mem [rs1 +imm12]
SD rs2, imm12 (rs1)

S

Memorizza doppia parola rs2 a mem [rs1 +imm12]
SW rs2, imm12 (rs1)

S

Memorizza la parola rs2 (31:0) a mem [rs1 +imm12]
SH rs2, imm12 (rs1)

S

Conservare a metà rs2 (15:0) a mem [rs1 +imm12]
SB rs2, imm12 (rs1)

S

Memorizza byte rs2 (15:0) a mem [rs1 +imm12]
SRAI rd, rs1, shamt

io

Sposta a destra aritmetica immediata rs2 (7:0) a mem [rs1 +imm12]

Operazioni di ramificazione

Le operazioni di diramazione RISC V sono elencate di seguito.

Mnemonico Tipo Istruzione Descrizione
BEQ rs1, rs2, imm12

SB

Ramo uguale Se rs1== rs2

PC ß PC+imm12

BNE rs1, rs2, imm12

SB

Ramo non uguale Se rs1!= rs2

PC ß PC+imm12

BGE rs1, rs2, imm12

SB

Ramo maggiore o uguale Se rs1>= rs2

PC ß PC+imm12

BGEU rs1, rs2, imm12

SB

Ramo maggiore o uguale a unsigned Se rs1>= rs2

PC ß PC+imm12

BLT rs1, rs2, imm12

SB

Ramo meno di Se rs1< rs2

PC ß PC+imm12

BLTU rs1, rs2, imm12

SB

Ramo inferiore a  non firmato Se rs1< rs2

PC ß PC+imm12 <<1

JAL rd, imm20

UJ

Salta e collega rdßPC+4
PCß PC+imm20
JALR rd, imm12(rs1)

io

Salta e collega il registro rdßPC+4
PCß rs1+imm12

Vantaggi

Il vantaggi del RISC Processore V include il seguente.

  • Utilizzando RISCV, possiamo risparmiare tempo di sviluppo, sviluppo software, verifica, ecc.
  • Questo processore ha molti vantaggi come semplicità, apertura, modularità, design pulito ed estensibilità.
  • Questo è supportato da diversi compilatori di linguaggio come GCC (GNU Compiler Collection), un compilatore di software libero e tramite il Sistema operativo Linux .
  • Questo può essere utilizzato dalle aziende liberamente senza royalties, senza costi di licenza e senza stringhe collegate.
  • Il processore RISC-V non include funzionalità nuove o innovative perché segue semplicemente i principi stabiliti di RISC.
  • Simile a molti altri ISA, questa specifica del processore definisce semplicemente vari livelli di set di istruzioni. Quindi questo contiene varianti a 32 e 64 bit, nonché estensioni per supportare le istruzioni in virgola mobile.
  • Questi sono gratuiti, semplici, modulari, stabili, ecc.

Svantaggi

Il svantaggi del processore RISC V include il seguente.

  • Le istruzioni complesse sono usate frequentemente da compilatori e programmatori.
  • L'o/p di un RISC può cambiare in base al codice quando le istruzioni successive all'interno di un ciclo dipendono dall'istruzione precedente per l'esecuzione.
  • Questi processori devono salvare rapidamente una serie di istruzioni, il che richiede un grande set di memoria cache per rispondere alle istruzioni in modo tempestivo.
  • Le caratteristiche complete, le capacità ei vantaggi di RISC dipendono principalmente dall'architettura.

Applicazioni

Il applicazioni del RISC V processore include il seguente.

  • RISC-V è utilizzato nei sistemi embedded, nell'intelligenza artificiale e nell'apprendimento automatico.
  • Questi processori sono utilizzati in applicazioni di sistema embedded basate su prestazioni elevate.
  • Questo processore è appropriato per l'uso in alcuni campi particolari come l'edge computing, l'intelligenza artificiale e le applicazioni di archiviazione.
  • RISC-V è importante in quanto consente ai produttori di dispositivi più piccoli di progettare hardware senza pagare.
  • Questo processore consente semplicemente a ricercatori e sviluppatori di progettare e ricercare con un'architettura ISA o set di istruzioni disponibile gratuitamente.
  • Le applicazioni di RISC V vanno da piccoli microcontrollori embedded a PC desktop e supercomputer, inclusi i processori vettoriali.

Così, questo è una panoramica di un processore RISC V – architettura, lavorare con le applicazioni. Ecco una domanda per te, cos'è un processore CISC?