RISC V on juhiste komplekti arhitektuur, mille on välja töötanud California ülikool Berkeleys. RISCi kontseptsiooni ajendiks oli tõde, et enamik protsessori juhiseid ei kasutanud enamikus arvutiprogrammides. Seega kasutati kujunduses tarbetut dekodeerimisloogikat protsessorid , tarbides rohkem energiat kui ka pindala. Käskude komplekti lühendamiseks ja registriressurssidesse rohkem investeerimiseks RISC V protsessor viidi ellu.
Seda tehnoloogiat märkasid paljud tehnoloogiahiiglased ja idufirmad, kuna see on täiesti avatud lähtekoodiga ja tasuta. Enamik protsessoreid on saadaval litsentsilepinguga, kuid seda tüüpi protsessoritega; igaüks saab teha oma uue protsessori kujunduse. Seega käsitletakse selles artiklis ülevaadet RISC V protsessori tööst ja selle rakendustest.
Mis on RISC V protsessor?
RISC V protsessoris tähistab termin RISC 'vähendatud käsukomplektiga arvutit', mis täidab vähe arvutikäske, samas kui 'V' tähistab viiendat põlvkonda. See on avatud lähtekoodiga riistvara ISA (käsukomplekti arhitektuur), mis põhineb kehtestatud põhimõttel RISK .
Võrreldes teiste ISA kujundustega on see ISA saadaval avatud lähtekoodiga litsentsiga. Niisiis on mitmed tootmisettevõtted teatanud ja varustanud avatud lähtekoodiga operatsioonisüsteemidega RISC-V riistvara.
See on uus arhitektuur ja see on saadaval avatud, mittepiiravate ja tasuta litsentsidena. Sellel protsessoril on laialdane tugi kiipide ja seadmete tootjatelt. Seega on see peamiselt loodud olema vabalt laiendatav ja kohandatav paljudes rakendustes kasutamiseks.
RISC V ajalugu
RISC-i leiutas prof David Patterson 1980. aasta paiku California ülikoolis Berkeleys. Prof David koos prof John Hennessyga esitasid oma jõupingutused kahes raamatus, nimelt 'Arvutikorraldus ja disain' ja 'Arvutiarhitektuur Stanfordi ülikoolis. Niisiis, nad said ACM A.M. Turingi auhind 2017. aastal.
Aastatel 1980 kuni 2010 alustati RISC viienda põlvkonna arendusuuringuid ja lõpuks hakati seda identifitseerima kui RISC-V, mida hääldatakse viie riskina.
RISC V arhitektuur ja töö
RV12 RISC V arhitektuur on näidatud allpool. RV12 on hästi konfigureeritav ühetuumalise RV32I ja RV64I-ga ühilduva RISC-protsessoriga, mida kasutatakse manustatud väljadel. RV12 on ka 32- või 64-bitise protsessori perekonnast, olenevalt tööstusstandardi RISC-V käsukomplektist.
RV12 täidab lihtsalt Harvardi arhitektuuri, et pääseda samaaegselt nii juhistele kui ka andmemälule. See sisaldab ka 6-astmelist konveier, mis aitab optimeerida täitmise kattuvust ja mälujuurdepääsu tõhususe parandamiseks. See arhitektuur sisaldab peamiselt haru ennustamist, andmevahemälu, silumisüksust, juhiste vahemälu ja valikulisi kordaja või jagaja ühikuid.
RV12 RISC V peamised omadused hõlmavad järgmist.
- See on tööstusharu standardne juhiste komplekt.
- Parameetristatud 32- või 64-bitiste andmetega.
- Sellel on täpsed ja kiired katkestused.
- Kohandatud juhised võimaldavad lisada patenteeritud riistvarakiirendeid.
- Ühe tsükli teostamine.
- Kuueastmeline torujuhe optimeerimisega volditud.
- Toetus mälukaitsega.
- Valikulised või parameetrilised vahemälud.
- Äärmiselt parameetritega.
- Kasutajad saavad valida 32/64-bitise andme- ja haruennustusüksuse.
- Kasutajad saavad valida juhiste/andmete vahemälu.
- Kasutaja valitav vahemälu struktuur, suurus ja arhitektuur.
- Riistvarajagaja või -kordaja tugi kasutaja määratud latentsusaja järgi.
- Bussi arhitektuur on paindlik, mis toetab Wishbone'i ja AHB-d.
- See disain optimeerib võimsust ja suurust.
- Disain on täielikult parameetritega, mis tagab jõudluse või võimsuse kompromissid.
- Piiratud CLK disain võimsuse vähendamiseks.
- Tarkvara tugi tööstusstandardi järgi.
- Arhitektuurne simulaator.
- Eclipse IDE-d kasutatakse Linuxi / Windowsi jaoks.
RISC V täitmistoru
See sisaldab viit etappi, nagu IF (käskude toomine), ID (käskude dekodeerimine), EX (käivita), MEM (juurdepääs mälule) ja WB (registri tagasikirjutamine).
Juhend Hangi
Instruction Fetch või IF etapis loetakse programmiloendurilt (PC) ja käskude mälust üks käsk, mida värskendatakse järgmisele käsule.
Juhend Dekodeerimise eel
Kui RVC tugi on lubatud, dekodeerib juhiste eeldekodeerimise etapp 16-bitise tihendatud käsu natiivseks 32-bitiseks käsuks.
Juhend dekodeerida
Käskude dekodeerimise (ID) etapis on registrifail lubatud ja möödaviigu juhtelemendid on otsustatud.
Käivitage
Käivitatapis arvutatakse tulemus ALU, DIV, MUL käsu jaoks, salvestamise või laadimise käsu jaoks lubatud mälu ning harusid ja hüppeid mõõdetakse nende eeldatavate tulemuste põhjal.
Mälu
Selles mäluetapis pääseb mälule juurde torujuhtme kaudu. Selle faasi kaasamine tagab torujuhtme kõrge jõudluse.
Kirjuta tagasi
Selles etapis kirjutatakse täitmisetapi tulemus registrifaili.
Filiaali ennustaja
See protsessor sisaldab haru ennustavat üksust või BPU-d, mida kasutatakse varasemate andmete salvestamiseks, et suunata RISC V protsessor otsustama, kas konkreetne haru võetakse või mitte. Neid ennustavaid andmeid värskendatakse lihtsalt pärast haru käivitamist.
See seade sisaldab erinevaid parameetreid, mis määravad selle käitumise. Näiteks kasutatakse HAS_BPU-d selleks, et teha kindlaks, kas haru ennustab üksuse olemasolu, BPU_GLOBAL_BITS määrab, kui palju varasemaid bitte tuleks kasutada ja BPU_LOCAL_BITS määrab, kui palju programmiloenduri LSB-d tuleks kasutada. Kombinatsioon BPU_LOCAL_BITS ja BPU_GLOBAL_BITS loob vektori, mida kasutatakse peamiselt haru-ennustuse tabeli käsitlemiseks.
Andmete vahemälu
Seda kasutatakse peamiselt andmemälule juurdepääsu kiirendamiseks, puhverdades äsja juurdepääsetavad mälukohad. See on võimeline käsitlema poole sõna, baidi ja sõna juurdepääsu, kui XLEN = 32, kui need on oma piirides. Samuti on see võimeline käsitlema poole sõna, baidi, sõna ja kahesõnalisi pöördumisi, kui XLEN=64, kui need on oma piirides.
Vahemälu vahelejäämise ajal saab terve ploki mällu tagasi kirjutada, nii et vajadusel saab vahemällu laadida uue ploki. Andmevahemälu on keelatud, kui määrate DCACHE_SIZE väärtuseks null. Pärast seda pääseb mälukohtadele juurde otse rakenduse kaudu Andmeliides .
Juhendi vahemälu
Seda kasutatakse peamiselt juhiste toomise kiirendamiseks, puhverdades värskelt toodud juhised. Seda vahemälu kasutatakse ühe paki toomiseks iga tsükli kohta mis tahes 16-bitisel piiril, kuid mitte üle ploki piiri. Vahemälu vahelejäämise ajal saab käsumälust laadida terve ploki. Seda vahemälu saab seadistada vastavalt kasutaja vajadustele. Vahemälu suurus, asendusalgoritm ja ploki pikkus on konfigureeritavad.
Käskude tsükkel keelatakse, kui määrate ICACHE_SIZE väärtuseks null. Pärast seda tuuakse pakid otse mälust läbi Juhendi liides.
Silumisüksus
Silumisüksus võimaldab silumiskeskkonnal peatada ja protsessorit uurida. Selle peamised funktsioonid on haru jälgimine, üheastmeline jälgimine kuni 8 riistvaralise katkestuspunktini.
Registreeri fail
See on loodud 32 registri asukohaga vahemikus X0 kuni X31, kus X9 register on alati null. Registrifail sisaldab 1 kirjutusporti ja 2 lugemisporti.
Konfigureeritav liides
See on väline liides, kus see protsessor toetab erinevaid väliseid siiniliideseid.
Kuidas RISC V töötab?
RISC-V on käsukomplekti arhitektuur, mis põhineb RISC (vähendatud käsukomplekti arvuti) põhimõtetel. See protsessor on väga ainulaadne ja ka revolutsiooniline, kuna see on tasuta, tavaline ja avatud lähtekoodiga ISA, kus saab arendada riistvara, portida tarkvara ja kujundada protsessorid seda toetama.
Erinevus B/W RISC V vs MIPS
Erinevus RISC V ja MIPS-i vahel hõlmab järgmist.
RISC V |
MIPS |
Mõiste RISC V tähistab lühendatud juhiste komplekti arvutit, kus V on viies põlvkond. | Mõiste 'MIPS' tähendab 'miljonit juhiseid sekundis'. |
RISC-V lubab väiksemate seadmete tootjatel lihtsalt riistvara ilma maksmata kujundada. | MIPS võimaldab tootjal mõõta protsessori kiirust makstes, kuna see pole tasuta. |
MIPS on tõhusalt surnud. | RISC-V ei ole tõhusalt surnud. |
See protsessor pakub harujuhiseid kahe registri võrdlemiseks. | MIPS sõltub võrdlusjuhisest, mis määrab registri asukoha 1 või 0 järgi vastavalt sellele, kas kontrast on tõene. |
ISA kodeerimisskeem on RISC V-s fikseeritud ja muutuv. | ISA kodeerimisskeem on fikseeritud MIPS-is |
Käskude komplekti suurus on 16-bitine või 32-bitine või 64-bitine või 128-bitine. | Käskude komplekti suurus on 32-bitine või 64-bitine. |
Sellel on 32 üldotstarbelist ja ujukomaregistrit | Sellel on 31 üldotstarbelist ja ujukomaregistrit. |
Sellel on 26 ühe ja kahe täpsusega ujukomaoperatsioonid. | Sellel on 15 ühe ja kahe täpsusega ujukomaoperatsiooni. |
Erinevus B/W RISC V vs ARM
Erinevus RISC V ja ARM vahel hõlmab järgmist.
RISC V |
ARM |
RISC-V on avatud lähtekoodiga, seega ei vaja see litsentsi. | ARM on suletud lähtekoodiga, seega vajab see litsentsi. |
See on uus protsessoriplatvorm, seega on tarkvara ja programmeerimiskeskkondade tugi väga väike. | ARM-il on väga suur veebikogukond, mis toetab teeke ja struktuure, et abistada sihtdisainereid erinevatel platvormidel, nagu mikroprotsessorid, mikrokontrollerid ja ka serverid. |
RISC V-põhised kiibid kasutavad 1 vatti võimsust. | ARM-põhised kiibid kasutavad alla 4 vatti võimsust. |
Sellel on fikseeritud ja muutuv ISA-kodeerimissüsteem. | Sellel on fikseeritud ISA kodeerimissüsteem. |
RISC V käsukomplekti suurus on vahemikus 16-bitist kuni 128-bitiseks. | Selle juhiste suurus on vahemikus 16-bitist kuni 64-bitiseks. |
See sisaldab 32 üldotstarbelist ja ujukomaregistrit. | See sisaldab 31 üldotstarbelist ja ujukomaregistrit. |
Sellel on 26 ühekordse täpsusega ujukomaoperatsiooni. | Sellel on 33 ühekordse täpsusega ujukomaoperatsiooni. |
Sellel on 26 kahekordse täpsusega ujukomatehteid. | Sellel on 29 kahekordse täpsusega ujukomatehteid. |
RISC V Verilogi kood
Allpool on näidatud RISC käsumälu verilogi kood.
// Verilogi kood RISC protsessori jaoks
// Käsumälu Verilog-kood
moodul Instruction_Memory(
sisend[15:0] arvuti,
väljund[15:0] käsk
);
reg [`col – 1:0] mälu [`rida_i – 1:0];
juhe [3 : 0] rom_addr = pc[4 : 1];
esialgne
alustada
$readmemb(“./test/test.prog”, mälu,0,14);
lõpp
määra käsk = mälu[rom_adr];
lõppmoodul
Verilogi kood 16-bitise RISC V protsessori jaoks:
moodul Risk_16_bit(
sisend clk
);
traathüpe,bne,beq,mem_read,mem_write,alu_src,reg_dst,mem_to_reg,reg_write;
traat[1:0] alu_op;
juhe [3:0] opkood;
// Andmetee
Datapath_Unit DU
(
.clk(clk),
.jump(hüppa),
.konn(konn),
.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)
);
// juhtseade
Juhtimisüksuse juhtimine
(
.opcode(opcode),
.reg_dst(reg_dst),
.mem_to_reg(mem_to_reg),
.alu_op(alu_op),
.jump(hüppa),
.bne(bne),
.konn(konn),
.mem_read(mem_read),
.mem_write(mem_write),
.alu_src(alu_src),
.reg_write(reg_write)
);
lõppmoodul
Juhendi komplektid
RISC V käsukomplekte käsitletakse allpool.
Aritmeetilised tehted
RISC V aritmeetilised tehted on loetletud allpool.
Mnemooniline | Tüüp | Juhend | Kirjeldus |
LISA rd, rs1, rs2 |
R |
Lisama | rdß rs1 + rs2 |
SUB rd, rs1, rs2 |
R |
Lahutage | rdß rs1 – rs2 |
ADDI rd, rs1, imm12 |
I |
Lisa kohe | rdß rs1 + imm12 |
SLT rd, rs1, rs2 |
R |
Määra vähem kui | rdß rs1 -< rs2 |
SLTI rd, rs1, imm12 |
I |
Määra vähem kui kohene | rdß rs1 -< imm12 |
SLTU rd, rs1, rs2 |
R |
Määra vähem kui allkirjastamata | rdß rs1 -< rs2 |
SLTIU rd, rs1, imm12 |
I |
Määra vähem kui kohe allkirjastamata | rdß rs1 -< imm12 |
LUI rd, imm20 |
IN |
Laadige ülemine kohe | rdß imm20<<12 |
AUIP rd, imm20 |
IN |
Lisa kohe ülemine arvutisse | rdß PC+imm20<<12 |
Loogilised operatsioonid
RISC V loogilised toimingud on loetletud allpool.
Mnemooniline | Tüüp | Juhend | Kirjeldus |
JA rd, rs1, rs2 |
R |
JA | rdß rs1 ja rs2 |
VÕI rd, rs1, rs2 |
R |
VÕI | rdß rs1 | rs2 |
XOR rd, rs1, rs2 |
R |
TASUTA | rdß rs1 ^ rs2 |
ANDI rd, rs1, imm12 |
I |
JA kohe | rdß rs1 ja imm2 |
ORI rd, rs1, imm12 |
I |
VÕI kohe | rdß rs1 | imm12 |
OXRI rd, rs1, imm12 |
I |
XOR kohe | rdß rs1 ^ rs2 |
SLL rd, rs1, rs2 |
R |
Loogiline nihe vasakule | rdß rs1 << rs2 |
SRL rd, rs1, rs2 |
R |
Loogiline nihe paremale | rdß rs1 >> rs2 |
RAS rd, rs1, rs2 |
R |
Nihuta aritmeetikat paremale | rdß rs1 >> rs2 |
SLLI rd, rs1, shamt |
I |
Vahetu loogiline nihe vasakule | rdß rs1 << shamt |
SRLI rd, rs1, shamt |
I |
Vahetu loogiline nihe paremale | rdß rs1 >> shamt |
SRAI rd, rs1, shamt |
I |
Vahetu aritmeetika nihutamine paremale | rdß rs1 >> shamt |
Laadimise/poe toimingud
RISC V laadimis-/salvestamistoimingud on loetletud allpool.
Mnemooniline | Tüüp | Juhend | Kirjeldus |
LD rd, imm12 (rs1) |
I |
Laadi topeltsõna | rdß mem [rs1 +imm12] |
LW rd, imm12 (rs1) |
I |
Laadi sõna | rdß mem [rs1 +imm12] |
LH rd, imm12 (rs1) |
I |
Laadige poole peale | rdß mem [rs1 +imm12] |
LB rd, imm12 (rs1) |
I |
Laadi bait | rdß mem [rs1 +imm12] |
LWU rd, imm12 (rs1) |
I |
Laadi sõna allkirjastamata | rdß mem [rs1 +imm12] |
LHU rd, imm12 (rs1) |
I |
Laadi pool sõna allkirjastamata | rdß mem [rs1 +imm12] |
LBU rd, imm12 (rs1) |
I |
Laadimisbait allkirjastamata | rdß mem [rs1 +imm12] |
SD rs2, imm12 (rs1) |
S |
Salvestage topeltsõna | rs2 mälule [rs1 +imm12] |
SW rs2, imm12 (rs1) |
S |
Salvestage sõna | rs2 (31:0) mälule [rs1 +imm12] |
SH rs2, imm12 (rs1) |
S |
Hoida poolel teel | rs2 (15:0) mälule [rs1 +imm12] |
SB rs2, imm12 (rs1) |
S |
Salvesta bait | rs2 (15:0) mälule [rs1 +imm12] |
SRAI rd, rs1, shamt |
I |
Vahetu aritmeetika nihutamine paremale | rs2 (7:0) mälule [rs1 +imm12] |
Hargnemistoimingud
RISC V hargnemistoimingud on loetletud allpool.
Mnemooniline | Tüüp | Juhend | Kirjeldus |
BEQ rs1, rs2, imm12 |
SB |
Haru võrdne | Kui rs1== rs2 PC ß PC+imm12 |
BNE rs1, rs2, imm12 |
SB |
Filiaal ei ole võrdne | Kui rs1!= rs2 PC ß PC+imm12 |
BGE rs1, rs2, imm12 |
SB |
Haru, mis on suurem või võrdne | Kui rs1>= rs2 PC ß PC+imm12 |
BGEU rs1, rs2, imm12 |
SB |
Haru, mis on suurem kui märgita või sellega võrdne | Kui rs1>= rs2 PC ß PC+imm12 |
BLT rs1, rs2, imm12 |
SB |
Filiaal vähem kui | Kui rs1< rs2 PC ß PC+imm12 |
BLTU rs1, rs2, imm12 |
SB |
Haru väiksem kui allkirjastamata | Kui rs1< rs2 PC ß PC+imm12 <<1 |
JAL rd, imm20 |
UJ |
Hüppa ja link | rdßPC+4 PCß PC+imm20 |
JALR rd, imm12(rs1) |
I |
Jump and Link register | rdßPC+4 PCß rs1+imm12 |
Eelised
The RISC eelised V protsessor sisaldama järgmist.
- RISCV-d kasutades saame säästa arendusaega, tarkvaraarendust, verifitseerimist jne.
- Sellel protsessoril on palju eeliseid, nagu lihtsus, avatus, modulaarsus, puhas disain ja laiendatavus.
- Seda toetavad mitmed keelekompilaatorid, nagu GCC (GNU Compiler Collection), vabatarkvaraline kompilaator ja Linux OS .
- Seda saavad ettevõtted vabalt kasutada, kuna puuduvad autoritasud, litsentsitasud ja ühendatud stringid.
- RISC-V protsessor ei sisalda uusi ega uuenduslikke funktsioone, kuna see järgib lihtsalt RISC-i väljakujunenud põhimõtteid.
- Sarnaselt mitmetele teistele ISA-dele määratleb see protsessori spetsifikatsioon lihtsalt erinevad käsukomplekti tasemed. Seega sisaldab see 32- ja 64-bitisi variante ning laiendusi, mis toetavad ujukomajuhiseid.
- Need on tasuta, lihtsad, modulaarsed, stabiilsed jne.
Puudused
The RISC V protsessori puudused sisaldama järgmist.
- Kompilaatorid ja programmeerijad kasutavad sageli keerulisi juhiseid.
- RISC-i o/p võib koodi alusel muutuda, kui tsükli järgnevad käsud sõltuvad varasemast täitmise käsust.
- Need protsessorid peavad kiiresti salvestama mitmesuguseid juhiseid, mis nõuab käsklustele õigeaegseks reageerimiseks suurt vahemälu.
- RISC-i täielikud funktsioonid, võimalused ja eelised sõltuvad peamiselt arhitektuurist.
Rakendused
The RISC V rakendused protsessor sisaldama järgmist.
- RISC-V-d kasutatakse manussüsteemides, tehisintellektis ja masinõppes.
- Neid protsessoreid kasutatakse suure jõudlusega manustatud süsteemirakendustes.
- See protsessor sobib kasutamiseks mõnes konkreetses valdkonnas, näiteks servade andmetöötlus, AI ja salvestusrakendused.
- RISC-V on oluline, kuna see võimaldab väiksematel seadmetootjatel kujundada riistvara maksmata.
- See protsessor võimaldab lihtsalt teadlastel ja arendajatel kujundada ja uurida vabalt saadaoleva ISA või käsukomplekti arhitektuuriga.
- RISC V rakendused ulatuvad väikestest sisseehitatud mikrokontrolleritest kuni lauaarvutite ja superarvutiteni, sealhulgas vektorprotsessoriteni.
Seega on see ülevaade RISC V protsessorist – arhitektuur, rakendustega töötamine. Siin on teile küsimus, mis on CISC-protsessor?