Ce este procesorul RISC V: arhitectură, lucru și aplicațiile sale

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





RISC V este o arhitectură de set de instrucțiuni dezvoltată de Universitatea din California, Berkeley. Conceptul de RISC a fost motivat de adevărul că majoritatea instrucțiunilor procesorului nu au fost utilizate de majoritatea programelor de calculator. Deci, logica de decodare inutilă a fost utilizată în cadrul proiectelor procesoare , consumând mai multă energie, precum și suprafață. Pentru a scurta setul de instrucțiuni și pentru a investi mai mult în resursele registrului, procesor RISC V a fost implementat.


Această tehnologie a fost observată de mulți giganți din tehnologie și start-up-uri, deoarece este complet open source și gratuită. Cele mai multe tipuri de procesoare sunt disponibile cu un acord de licență, totuși cu acest tip de procesor; oricine își poate realiza noile modele de procesoare. Deci, acest articol discută o privire de ansamblu asupra unui procesor RISC V - funcționarea și aplicațiile sale.



Ce este procesorul RISC V?

În procesorul RISC V, termenul RISC înseamnă „calculator cu set de instrucțiuni redus”, care execută puține instrucțiuni de calculator, în timp ce „V” reprezintă a 5-a generație. Este un ISA hardware open-source (arhitectură set de instrucțiuni) bazat pe principiul stabilit al RISC .

În comparație cu alte modele ISA, acest ISA este disponibil cu o licență open source. Așadar, o serie de companii producătoare au anunțat și au furnizat, de asemenea, hardware RISC-V, cu sisteme de operare open-source.



Aceasta este o arhitectură nouă și este disponibilă în licențe deschise, nerestrictive și gratuite. Acest procesor are suport extins din partea industriilor producătorilor de cipuri și dispozitive. Deci, este conceput în principal pentru a fi extensibil și personalizabil pentru a fi utilizat în multe aplicații.

RISC V Istorie

RISC a fost inventat de prof. David Patterson în jurul anului 1980 la Universitatea din California, Berkeley. Prof. David împreună cu Prof. John Hennessy și-au prezentat eforturile în două cărți și anume „Organizarea și designul computerelor” și „Arhitectura computerelor la Universitatea Stanford. Deci, au primit ACM A.M. Premiul Turing în anul 2017.

Din anul 1980 până în anul 2010, cercetarea de dezvoltare de generația a cincea RISC a fost începută și, în cele din urmă, a ajuns să fie identificată ca RISC-V, care se pronunță drept riscul cinci.

RISC V Arhitectură și lucru

Arhitectura RV12 RISC V este prezentată mai jos. RV12 este foarte configurabil cu un procesor RISC cu un singur nucleu RV32I și RV64I, care este utilizat în câmpurile încorporate. RV12 este, de asemenea, dintr-o familie de procesoare pe 32 sau 64 de biți, în funcție de setul de instrucțiuni RISC-V standard industrial.

RV12 execută pur și simplu o arhitectură Harvard pentru acces simultan la instrucțiuni, precum și la memoria de date. Include, de asemenea, o conductă în 6 etape care ajută la optimizarea suprapunerilor între execuție, precum și a acceselor la memorie pentru a îmbunătăți eficiența. Această arhitectură include în principal predicție de ramificație, cache de date, unitate de depanare, cache de instrucțiuni și unități opționale multiplicatoare sau divizor.

  Arhitectura procesorului RISC
Arhitectura procesorului RISC

Principalele caracteristici ale RV12 RISC V includ următoarele.

  • Este un set de instrucțiuni standard din industrie.
  • Parametrat cu date pe 32 sau 64 de biți.
  • Are întreruperi precise și rapide.
  • Instrucțiuni personalizate permit adăugarea de acceleratoare hardware proprietare.
  • Executarea unui singur ciclu.
  • Conductă în șase trepte cu optimizare pliată.
  • Suport cu protecție de memorie.
  • Cache-uri opționale sau parametrizate.
  • Extrem de parametrizat.
  • Utilizatorii pot selecta date pe 32/64 de biți și unitatea de predicție a ramurilor.
  • Utilizatorii pot selecta cache-urile de instrucțiuni/date.
  • Structura, dimensiunea și arhitectura cache-ului selectabile de utilizator.
  • Suport pentru divizor sau multiplicator hardware prin latență definită de utilizator.
  • Arhitectura autobuzului este flexibilă, care acceptă Wishbone și AHB.
  • Acest design optimizează puterea și dimensiunea.
  • Designul este complet parametrizat, ceea ce oferă compromisuri de performanță sau putere.
  • Design CLK cu porțiune pentru a reduce puterea.
  • Suport software conform standardului industrial.
  • Simulator arhitectural.
  • Eclipse IDE este folosit pentru Linux/Windows.

Conducta de execuție RISC V

Include cinci etape precum IF (preluare instrucțiuni), ID (decodare instrucțiuni), EX (execuție), MEM (acces la memorie) și WB (rescrierea înregistrării).

Preluare instrucțiuni

În etapa Instruction Fetch sau IF, o singură instrucțiune este citită din contorul de programe (PC) și din memoria de instrucțiuni care este actualizată la următoarea instrucțiune.

Instrucțiuni Pre-Decode

Odată ce suportul RVC este permis, atunci etapa de pre-decodare a instrucțiunii va decoda o instrucțiune comprimată pe 16 biți într-o instrucțiune nativă pe 32 de biți.

Decodificarea instrucțiunilor

În etapa de decodificare a instrucțiunilor (ID), fișierul de înregistrare este permis și controalele de ocolire sunt decise.

A executa

În etapa de execuție, rezultatul este calculat pentru o instrucțiune ALU, DIV, MUL, memoria permisă pentru o instrucțiune de stocare sau încărcare, iar ramificațiile și salturile sunt măsurate în raport cu rezultatele așteptate.

Memorie

În această etapă de memorie, memoria este accesată prin conductă. Includerea acestei faze asigură performanța ridicată a conductei.

Scrie înapoi

În această etapă, rezultatul etapei de execuție este scris în Fișierul de registru.

Predictor de ramură

Acest procesor include o unitate de predicție a ramurilor sau BPU care este utilizată pentru a stoca date anterioare pentru a ghida procesorul RISC V în a decide dacă o anumită ramificare este luată sau nu. Aceste date de predictor sunt pur și simplu actualizate odată ce ramura se execută.

Această unitate include diferiți parametri care îi determină comportamentul. De exemplu, HAS_BPU este folosit pentru a determina dacă o ramură prezice că este prezentă o unitate, BPU_GLOBAL_BITS va determina câți biți din trecut ar trebui să fie utilizați și BPU_LOCAL_BITS va determina câți din LSB-ul contorului programului ar trebui să fie utilizați. Combinația dintre BPU_LOCAL_BITS și BPU_GLOBAL_BITS va crea un vector care este utilizat în principal pentru a aborda tabelul de predicție al ramurilor.

Cache de date

Aceasta este folosită în principal pentru a accelera accesul la memoria de date prin salvarea noilor locații de memorie accesate. Acesta este capabil să gestioneze accesul la jumătate de cuvânt, octet și cuvânt atunci când  XLEN = 32 dacă se află pe propriile limite. Este, de asemenea, capabil să gestioneze accesări de jumătate de cuvânt, octet, cuvânt și cuvânt dublu atunci când XLEN=64 dacă se află la propriile limite.

Pe parcursul unei pierderi de cache, un bloc întreg poate fi scris înapoi în memorie, deci, dacă este necesar, un bloc nou poate fi încărcat în cache. Cache-ul de date este dezactivat prin setarea DCACHE_SIZE la zero. După aceea, locațiile de memorie sunt accesate direct prin intermediul Interfață de date .

Cache de instrucțiuni

Acesta este folosit în principal pentru a accelera preluarea instrucțiunilor prin salvarea în tampon a instrucțiunilor nou preluate. Acest cache este folosit pentru a prelua o parcelă pentru fiecare ciclu pe orice graniță de 16 biți, dar nu peste granița unui bloc. Pe parcursul unei erori de cache, un bloc întreg poate fi încărcat din memoria de instrucțiuni. Configurarea acestui cache se poate face în funcție de nevoile utilizatorului. Mărimea memoriei cache, algoritmul de înlocuire și lungimea blocului sunt configurabile.

Ciclul de instrucțiuni va fi dezactivat prin setarea ICACHE_SIZE la zero. După aceea, coletele sunt preluate direct din memorie prin intermediul Interfață de instrucțiuni.

Unitate de depanare

Unitatea de depanare va permite împrejurimilor de depanare să se oprească și să examineze procesorul. Principalele caracteristici ale acestuia sunt urmărirea ramurilor, urmărirea unui singur pas până la 8 puncte de întrerupere hardware.

Fișier de înregistrare

Acesta este proiectat cu 32 de locații de registru de la X0 la X31, unde Registrul X9 este întotdeauna zero. Fișierul de înregistrare include 1 port de scriere și 2 porturi de citire.

Interfață configurabilă

Aceasta este o interfață externă unde acest procesor acceptă diferite interfețe de magistrală externă.

Cum funcționează RISC V?

RISC-V este o arhitectură de set de instrucțiuni bazată pe principiile RISC (computer cu set de instrucțiuni redus). Acest procesor este foarte unic și, de asemenea, revoluționar, deoarece este un ISA gratuit, comun și open-source, unde hardware-ul poate fi dezvoltat, software-ul poate fi portat și procesoarele pot fi proiectate pentru a-l susține.

Diferența B/N RISC V vs MIPS

Diferența dintre RISC V și MIPS include următoarele.

RISC V

MIPS

Termenul RISC V înseamnă computer cu set de instrucțiuni redus, unde „V” este a cincea generație. Termenul „MIPS” înseamnă „Milioane de instrucțiuni pe secundă”.
RISC-V le permite producătorilor de dispozitive mai mici să proiecteze hardware fără a plăti. MIPS permite producătorului să măsoare viteza procesorului plătind, deoarece nu este gratuit.
MIPS este eficient mort. RISC-V nu este mort eficient.
Acest procesor oferă instrucțiuni de ramificare pentru compararea a două registre. MIPS depinde de o instrucțiune de comparare care localizează un registru la 1 sau 0 în funcție de faptul că contrastul este adevărat.
Schema de codare ISA este fixă ​​și variabilă în RISC V. Schema de codare ISA este fixată în MIPS
Dimensiunea setului de instrucțiuni este de 16 biți sau 32 de biți sau 64 de biți sau 128 de biți. Dimensiunea setului de instrucțiuni este de 32 de biți sau 64 de biți.
Are 32 de registre de uz general și în virgulă mobilă Are 31 de registre de uz general și în virgulă mobilă.
Are 26 de operațiuni cu virgulă mobilă cu precizie simplă și dublă. Are 15 operațiuni cu virgulă mobilă cu precizie simplă și dublă.

Diferența B/N RISC V vs ARM

Diferența dintre RISC V și ARM include următoarele.

RISC V

BRAŢ

RISC-V este open source, deci nu necesită nicio licență. ARM este o sursă închisă, deci are nevoie de o licență.
Este o platformă nouă de procesor, deci există un suport foarte mic pentru mediile software și de programare. ARM are o comunitate online foarte mare, care acceptă biblioteci și structuri pentru a ajuta designerii țintă în diverse platforme, cum ar fi microprocesoare, microcontrolere și, de asemenea, servere.
Cipurile bazate pe RISC V folosesc 1 watt de putere. Cipurile bazate pe ARM folosesc o putere sub 4 wați.
Are un sistem de codare ISA fix și variabil. Are un sistem de codare ISA fix.
Dimensiunea setului de instrucțiuni RISC V variază de la 16 la 128 de biți. Dimensiunea instrucțiunii sale variază de la 16 la 64 de biți.
Include 32 de registre de uz general și în virgulă mobilă. Include 31 de registre de uz general și în virgulă mobilă.
Are 26 de operații cu virgulă mobilă cu precizie simplă. Are 33 de operații cu virgulă mobilă cu precizie simplă.
Are 26 de operații în virgulă mobilă de precizie dublă. Are 29 de operații în virgulă mobilă de precizie dublă.

Codul RISC V Verilog

Codul verilog al memoriei de instrucțiuni pentru RISC este prezentat mai jos.

// Cod Verilog pentru procesorul RISC
// Cod Verilog pentru memoria de instrucțiuni

modul Instruction_Memory(
intrare[15:0] pc,
instrucțiune de ieșire[15:0].
);

reg [`col – 1:0] memorie [`row_i – 1:0];
fir [3 : 0] rom_addr = pc[4 : 1];
iniţială
ÎNCEPE
$readmemb(“./test/test.prog”, memorie,0,14);
Sfârşit
assign instruction = memorie[rom_addr];

modul final

Cod Verilog pentru procesorul RISC V pe 16 biți:

modul Risc_16_bit(
clk de intrare
);

wire jump,bne,beq,mem_read,mem_write,alu_src,reg_dst,mem_to_reg,reg_write;
fir[1:0] alu_op;
fir [3:0] opcode;

// Calea datelor

Datapath_Unit DU
(
.clk(clk),
.sări (sări),
.broasca(broasca),
.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)
);

// Unitatea de comandă
Control_controlul unității
(
.opcode(opcode),
.reg_dst(reg_dst),
.mem_to_reg(mem_to_reg),
.alu_op(alu_op),
.sări (sări),
.bne(bne),
.broasca(broasca),
.mem_read(mem_read),
.mem_write(mem_write),
.alu_src(alu_src),
.reg_write(reg_write)
);
modul final

Seturi de instrucțiuni

Seturile de instrucțiuni RISC V sunt discutate mai jos.

Operatii aritmetice

Operațiile aritmetice RISC V sunt enumerate mai jos.

Mnemonic Tip Instruire Descriere
ADAUGĂ rd, rs1, rs2

R

Adăuga rdß rs1 + rs2
SUB rd, rs1, rs2

R

Scădea rdß rs1 –  rs2
ADDI rd, rs1, imm12

eu

Adăugați imediat rdß rs1 + imm12
SLT rd, rs1, rs2

R

Setați mai puțin de rdß rs1 -< rs2
SLTI rd, rs1, imm12

eu

Setați mai puțin decât imediat rdß rs1 -< imm12
SLTU rd, rs1, rs2

R

Setați mai puțin decât nesemnat rdß rs1 -< rs2
SLTIU rd, rs1, imm12

eu

Setați mai puțin decât imediat nesemnat rdß rs1 -< imm12
LUI rd,imm20

ÎN

Încărcare superioară imediată rdß imm20<<12
AUIP rd,imm20

ÎN

Adăugați imediat partea superioară pe computer rdß PC+imm20<<12

Operații logice

Operațiile logice RISC V sunt enumerate mai jos.

Mnemonic Tip Instruire Descriere
ȘI  rd, rs1, rs2

R

ȘI rdß rs1 și rs2
SAU rd, rs1, rs2

R

SAU rdß rs1 | rs2
XOR  rd, rs1, rs2

R

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

eu

ȘI imediat rdß rs1 & imm2
ORI rd, rs1, imm12

eu

SAU Imediat rdß rs1 | imm12
OXRI rd, rs1, imm12

eu

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

R

Schimbați la stânga logic rdß rs1 <<  rs2
SRL rd, rs1, rs2

R

Schimbați la dreapta logic rdß rs1 >>  rs2
RAS rd, rs1, rs2

R

Schimbați aritmetica la dreapta rdß rs1 >>  rs2
SLLI rd, rs1, shamt

eu

Schimbați imediat logic la stânga rdß rs1 << shamt
SRLI rd, rs1, shamt

eu

Schimbați la dreapta imediat logic rdß rs1 >> shamt
SRAI rd, rs1, shamt

eu

Schimbați imediat aritmetica la dreapta rdß rs1 >> shamt

Operațiuni de încărcare/stocare

Operațiunile de încărcare/stocare RISC V sunt enumerate mai jos.

Mnemonic Tip Instruire Descriere
LD  rd, imm12 (rs1)

eu

Încărcați cuvânt dublu rdß mem [rs1 +imm12]
LW rd, imm12 (rs1)

eu

Încărcați cuvântul rdß mem [rs1 +imm12]
LH rd, imm12 (rs1)

eu

Încărcați la jumătate rdß mem [rs1 +imm12]
LB rd, imm12 (rs1)

eu

Încărcare octet rdß mem [rs1 +imm12]
LWU rd, imm12 (rs1)

eu

Încărcați cuvântul nesemnat rdß mem [rs1 +imm12]
LHU rd, imm12 (rs1)

eu

Încărcați jumătate de cuvânt nesemnat rdß mem [rs1 +imm12]
LBU rd, imm12 (rs1)

eu

Încărcare octet nesemnat rdß mem [rs1 +imm12]
SD  rs2, imm12 (rs1)

S

Păstrați cuvânt dublu rs2 la mem [rs1 +imm12]
SW rs2, imm12 (rs1)

S

Păstrați cuvântul rs2 (31:0) către mem [rs1 +imm12]
SH rs2, imm12 (rs1)

S

Depozitați la jumătatea drumului rs2 (15:0) către mem [rs1 +imm12]
SB rs2, imm12 (rs1)

S

Stocare octet rs2 (15:0) către mem [rs1 +imm12]
SRAI rd, rs1, shamt

eu

Schimbați imediat aritmetica la dreapta rs2 (7:0) către mem [rs1 +imm12]

Operațiuni de ramificație

Operațiunile de ramificare RISC V sunt enumerate mai jos.

Mnemonic Tip Instruire Descriere
BEQ rs1, rs2, imm12

SB

Ramura egala Dacă rs1== rs2

PC ß PC+imm12

BNE rs1, rs2, imm12

SB

Ramura nu este egală Dacă rs1!= rs2

PC ß PC+imm12

BGE  rs1, rs2, imm12

SB

Ramura mai mare sau egală Dacă rs1>= rs2

PC ß PC+imm12

BGEU  rs1, rs2, imm12

SB

Ramura mai mare sau egală cu nesemnată Dacă rs1>= rs2

PC ß PC+imm12

BLT  rs1, rs2, imm12

SB

Ramură mai puțin de Dacă rs1< rs2

PC ß PC+imm12

BLTU  rs1, rs2, imm12

SB

Sucursală mai mică decât  nesemnată Dacă rs1< rs2

PC ß PC+imm12 <<1

JAL rd, imm20

UJ

Salt și Link rdßPC+4
PCß PC+imm20
JALR  rd, imm12(rs1)

eu

Registrul Jump and Link rdßPC+4
PCß rs1+imm12

Avantaje

The avantajele RISC procesor V includ următoarele.

  • Prin utilizarea RISCV, putem economisi timp de dezvoltare, dezvoltare software, verificare etc.
  • Acest procesor are multe avantaje precum simplitatea, deschiderea, modularitatea, designul curat și extensibilitatea.
  • Acest lucru este susținut de mai multe compilatoare de limbi, cum ar fi GCC (GNU Compiler Collection), un compilator de software gratuit și prin intermediul OS Linux .
  • Aceasta poate fi folosită de companii în mod liber, fără drepturi de autor, fără taxe de licență și fără șiruri conectate.
  • Procesorul RISC-V nu include caracteristici noi sau inovatoare, deoarece pur și simplu urmează principiile consacrate ale RISC.
  • Similar cu mai multe alte ISA-uri, această specificație de procesor definește pur și simplu diferite niveluri de set de instrucțiuni. Deci, acesta conține variante pe 32 și 64 de biți, precum și extensii pentru a oferi suport pentru instrucțiuni în virgulă mobilă.
  • Acestea sunt gratuite, simple, modulare, stabile etc.

Dezavantaje

The dezavantajele procesorului RISC V includ următoarele.

  • Instrucțiuni complexe sunt frecvent utilizate de compilatori și programatori.
  • O/p-ul unui RISC se poate schimba pe baza codului atunci când instrucțiunile ulterioare dintr-o buclă depind de instrucțiunea anterioară pentru execuție.
  • Aceste procesoare trebuie să salveze rapid o varietate de instrucțiuni, ceea ce necesită un set de memorie cache mare pentru a răspunde la instrucțiuni în timp util.
  • Caracteristicile, capacitățile și beneficiile complete ale RISC depind în principal de arhitectură.

Aplicații

The aplicații ale RISC V procesor includ următoarele.

  • RISC-V este utilizat în sisteme încorporate, inteligență artificială și învățare automată.
  • Aceste procesoare sunt utilizate în aplicații de sistem încorporat bazate pe performanțe înalte.
  • Acest procesor este potrivit pentru a fi utilizat în anumite domenii, cum ar fi edge computing, AI și aplicații de stocare.
  • RISC-V este important, deoarece permite producătorilor mai mici de dispozitive să proiecteze hardware fără a plăti.
  • Acest procesor permite pur și simplu cercetătorilor și dezvoltatorilor să proiecteze și să cerceteze cu o arhitectură ISA sau set de instrucțiuni disponibile gratuit.
  • Aplicațiile RISC V variază de la microcontrolere încorporate mici la PC-uri desktop și supercomputere, inclusiv procesoare vectoriale.

Astfel, aceasta este o prezentare generală a unui procesor RISC V – arhitectura, lucrul cu aplicatii. Iată o întrebare pentru tine, ce este un procesor CISC?