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.
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?