From Wikipedia, the free encyclopedia
RISC-V (risc-five[1] ahoskatua, Kaliforniako Unibertsitatean (Berkeley, 1981) garatu ziren RISC arkitekturan oinarritutako 5.belaunaldien kopuruari dagokio. Estandar irekien agindu-multzo arkitektura da (ISA ingelesez), RISCn ezarritako printzipioetan oinarritua.[3] Beste diseinu gehienetan ez bezala, RISC-V kode irekiko lizentzien bidez ematen da, erabiltzeko tasarik behar ez dutenak. Zenbait konpainia RISC-V-en oinarritutako hardwarea eskaintzen dute edo iragartzen ari dira, RISC-V euskarria duten kode irekiko sistema eragileak sortu dira, eta agindu-multzoa hainbat software famatu eta tresna-katetan euskarria du.
Diseinatzailea | University of California, Berkeley |
---|---|
Bit kopurua | 32, 64, 128 |
Aurkeztua | 2010 |
Bertsioa | |
Diseinua | RISC |
Mota | Load-store |
Kodeketa | Aldakorra |
Adarkatzea | Compare-and-branch |
Endiantasuna | Txikia[1]or9)[lower-alpha 1] |
Horri tamaina | 4 KiB |
Luzapenak |
|
Irekia | Bai |
Erregistroak | |
Erabilera generikoko erregistroak |
|
Koma-higikorra |
|
RISCren arkitektura gisa, RISC-V-ren ISA kargatze-/biltegiratze-arkitektura da. Honen koma-higikariaren implementazioa IEEE-ren 754 erabiltzen du. ISA honen ezaugarri azpimarragarrien artean, aginduetarako bit eremu kokalekuak, PUZ batean multiplexadoreen erabilera sinplifikatzeko aukeratuak, arkitektura aldetik neutroa den diseinua, eta berehalako balioen bit garrantzitsuenak leku finkoetan kokatzea zeinu-luzapenak azkartzeko.
Erabilera-sorta zabal baterako diseinatuta dago agindu-multzoa. Oinarrizko agindu-multzoak berez 32 biteko agindu-luzera finkoa du, eta luzera aldakorreko luzapenak onartzen ditu ISAk, non agindu bakoitza 16 biteko edozein pakete luzera izan baitaiteke. Azpimultzoek sistema txertatu txikiak, ordenagailu pertsonalak, bektore-prozesadoreak dituzten superkonputagailuak eta 19 hazbeteko eskalan muntatutako ekipo paraleloak onartzen dituzte.
Agindu-multzoaren zehaztapenak 32 eta 64 biteko helbideen aldaera espazialak definitzen ditu. Zehaztapenean, 128 biteko helbide-espazio lau baten deskribapena jasotzen da, 32 eta 64 biteko aldagaien estrapolazioa bezala, baina 128 biteko ISA "ez izoztuta" nahita mantentzen da, oraindik esperientzia praktiko gutxi baitago hain memoria-sistema handiekin.
Proiektua 2010ean hasi zen Kaliforniako Unibertsitatean (Berkeley), baina orain gaur egungo kolaboratzaile asko unibertsitatera afiliatu gabeko boluntarioak dira. Beste diseinu akademiko batzuk ez bezala, erakusketarako soilik optimizatu ohi direla, RISC-V-ren diseinatzaileek agindu-multzoa konputagailu praktikoetarako erabilgarria izatea nahi zuten. 2019ko ekainetik aurrera, ISA-ren erabiltzaile-espazioaren 2.2 bertsioa eta ISA pribilegiatuaren 1.11 bertsioa "izoztuta" bezala utzi dira, softwarea eta hardwarea garatzea ahalbidetuz. ISA-ren erabiltzaile-espazioaren, orain ISA ez-pribilegiatua bezala ezaguna, 20191213 bertsio gisa eguneratu, berretsi eta izoztu zen. Kanpoko arazketa-zehaztapen bat zirriborro gisa erabil daiteke, 0.13.2 bertsioan.
PUZaren diseinuak hurrengo diseinu-espezialitateetan esperientzia izatea eskatzen du: logika digital elektronikoa, konpiladoreak eta sistema eragileak. Tamaina honetako talde baten kostuak ordaintzeko, diseinu informatikoen hornitzaile komertzialek, hala nola Arm Ltd. eta MIPS Technologies-ek, egile-eskubideak kobratzen dituzte beraien diseinuak, patenteak eta egile-eskubideak erabiltzeagatik.[4][5][6] Askotan, hauen diseinuen abantaila zehatzak deskribatzen dituzten dokumentuak argitaratu aurretik, ez dibulgatzeko akordioak sinatzea eskatzen dute. Kasu askotan, hauen diseinu-aukeren arrazoiak ez dituzte ematen.
RISCV-ren helburua ISA praktiko ireki bat sortzea da, akademikoki erabil daitekeena eta egile-eskubiderik gabeko hardware edo softwareen edozein diseinutan zabal daitekeena. Proiektuaren diseinu-erabaki bakoitza justifikatzen duten arrazoiak ere azaltzen dira, oro har bederen.[7] RISCren sortzaileak ordenagailuen diseinuan funtsezko esperientzia duten akademikoak dira, eta RISC-V-ren ISA hainbat konputagailu-diseinu proiektu akademikoren zuzeneko garapena da, bereziki Berkeley RISCrena. RISC-V proiektu horiei guztiei laguntzeko sortu zen hasiera batean.[7]
Erabiltzaile-komunitate zabal eta etengabea eraikitzeko eta, hartara, diseinuak eta softwarea metatzeko, RISC-V-ren ISA diseinatzaileek erabilera praktikoko kasu ugari babesten dituzte nahita: trinkotasuna, errendimendua eta ahalmen txikiko mundu errealeko inplementazioak, mikro-arkitektura jakin baterako gehiegi arkitekturatu gabe. Kolaboratzaile-oinarri handi baten beharrak zirela eta, RISC-V hainbat erabileratarako diseinatu zen.[8][9]
Diseinatzaileen baieztapen nagusia da agindu-multzoa ordenagailuko interfaze giltzarria dela, hardwarearen eta softwarearen arteko interfazean baitago. Agindu-multzo on bat irekia izanda eta guztiek erabiltzeko moduan egonda, softwarearen kostua nabarmen murritz dezake berrerabilpena gehiago erabiltzeko aukera ematen baitu. Halaber, hardware-hornitzaileen artean lehia handiagoa sortuko luke, hauek baliabide gehiago eskaini baititzakete diseinuari eta gutxiago softwarearen euskarriari.[7]
Diseinatzaileek diotenez, printzipio berriak arraro bihurtzen ari dira agindu-multzoen diseinuan, azken berrogei urteetako diseinu arrakastatsuenak gero eta antzekoagoak baitira. Porrot egin zuten diseinuen artean, gehienek enpresa babesleek arrakasta ekonomikorik izan ez zutelako porrot egin zuten, eta ez agindu-multzoak teknikoki eskasak zirelako. Beraz, ongi diseinatutako eta ondo ezarritako printzipioen arabera diseinatutako agindu-multzo ireki batek hornitzaile askoren epe luzeko laguntza erakarri dezake.[7]
RISC-Vk ere erabilera akademikoa sustatzen du. Osoen azpimultzoaren sinpletasunak ikaslearen oinarrizko ariketak ahalbidetzen ditu, eta ikerketa-makinak software bidez kontrolatzeko bezain sinplea den ISA bat da. Luzera-aldakorreko ISAak agindu-multzoen luzapenetarako espazioa eskaintzen du, bai ikasleen ariketetarako, bai ikerkuntzarako, eta bereizitako agindu-multzo pribilegiatuak sistema eragilearen aldeko ikerketa ahalbidetzen du, konpiladoreak birdiseinatu gabe. RISCren jabetza intelektual irekiaren paradigmak diseinu eratorriak argitaratu, berrerabili eta aldatzeko aukera ematen du.
RISC hitza 1980 ingurukoa da. Ordurako, bazekiten ordenagailurik sinpleenak eraginkorrak izan zitezkeela (adibidez, John Cocke IBM Research-en), baina diseinuaren printzipioak ez zeuden guztiz deskribatuta. Ordenagailu sinple eta eraginkorrak interes akademikokoak izan dira beti, eta ondorioz 1990ean RISC DLX agindu-multzoa Computer Architecture: A Quantitative Approach lehen ediziorako aurkeztu zen, David Patterson egilekide zela, eta ondoren RISC-V sorreran parte hartu zuena. DLX hezkuntza-erabilerarako zen; akademikoek eta zaleek ate programagarrien multzoak (FPGA) erabiliz ezarri zuten, baina inoiz ez zen merkataritza-hedapenerako erabili. ARMren PUZek, 2. bertsioak eta aurrekoak, jabetza publikoko agindu-multzoak zituzten, eta oraindik software libreko GNUren Konpiladoreen Bildumentzat (GCC) euskarria du. ISA honetarako iturri irekiko hiru diseinu proposamen daude, baina ez dira inoiz fabrikatu. OpenRISC kode irekiko ISA bat da, DLXn oinarritua, RISCrekin lotutako diseinuekin, eta GCC eta Linux-en inplementazioetan euskarri osoa dauka, baina inplementazio komertzial gutxi ditu.
Kaliforniako Unibertsitatean, Berkeley, Krste Asanoviipv-ek, kode irekiko sistema informatiko bat ikertzeko beharra zuen, eta 2010ean proiektu labur bat garatzea eta argitaratzea erabaki zuen, hiru hilabetez udan zehar, graduatu ondoko zenbait ikaslerekin batera. Asmoa erabiltzaile akademikoei zein industrialei laguntzea zen.[7] David Pattersonek, Berkeleyn, bat egin zuen lankidetzarekin, Berkeleyko RISCa sortu baitzuen, eta RISC-Va izen bereko bosgarren belaunaldia da, RISCen oinarritutako lankidetza-ikerketako hainbat proiekturen emaitza da. Etapa horretan, ikasleek hasierako softwarea, simulazioak eta PUZren diseinuak hornitu zituzten.
RISC-Vren eta bere erakundearen egileek ISAren dokumentuak eta BSD lizentzien bidezko PUZren hainbat diseinu eskaini zituzten jatorriz, eta horiei esker RISC-V txipen diseinuak irekiak eta askeak izan daitezke, edo itxiak eta patentatuak.[10] ISA espezifikazioa bera (agindu-multzoaren kodeketa) 2011n argitaratu zen kode ireki gisa, eskubide guztiak erreserbatuta.[11] Txosten tekniko erreala (zehaztapenaren adierazpen bat), Creative Commons lizentzia pean argitaratu zen beranduago, kanpo-kontribuitzaileek RISC-V Fundazioaren bidez eta, ondorioz, RISC-V Internationalen bidez hobetzea ahalbidetzeko.
RISCren historia osoa argitaratu da RISCren web gunean.[12]
Merkataritza-erabiltzaileek ISA egonkor bat behar dute urte asko iraun dezakeen produktu batean erabili ahal izateko. Gai horri heltzeko, RISC-V Fundazioa 2015. urtean eratu zen, RISCren definizioarekin lotutako jabetza intelektuala eduki, mantendu eta argitaratzeko.[13] Jatorrizko egileek eta jabeek beraien eskubideak eman dizkiote fundazioari.[14] Calista Redmond CEOak zuzentzen du fundazioa, eta 2019an bere gain hartu zuen eginkizuna, IBMn azpiegitura irekiko proiektuen buru izan ondoren.[15]
2019ko azaroan, RISC-V Fundazioak Suitzan birkokatuko zela jakinarazi zuen, Estatu Batuetako merkataritza-erregulazioei buruzko kezkak alegatuz.[16] 2020ko martxoan, erakundeak RISC-V International izena jaso zuen, irabazi asmorik gabeko Suitzako elkartea.[12]
2019tik aurrera, RISC-V International erakundeak libreki argitaratzen ditu RISC-V definitzen duten dokumentuak, eta softwarea eta hardwarea diseinatzeko ISA mugarik gabe erabiltzeko aukera ematen du. Hala ere, RISC-V Internationaleko kideek bakarrik bozka dezakete aldaketen alde, eta erakunde kideek bakarrik erabiltzen dute elkargarritasun komertzialaren logotipoa.[14]
RISC-Vk diseinu modularra du, oinarri alternatiboko piezekin, eta aukerako luzapen gehigarriak dituzte. ISA oinarria eta haren eremuak industriaren, ikerketa-komunitatearen eta hezkuntza-erakundeen arteko ahalegin kolektiboan garatzen dira. Oinarriak aginduak (eta horien kodetzea), kontrol-fluxua, erregistroak (eta haien tamainak), memoria eta helbideraketa, manipulazio logikoa (i.e., osoa) eta osagarriak zehazten ditu. Oinarriak berak bakarrik erabilera orokorreko ordenagailu sinple bat inplementa dezake, softwarearen euskarri osoarekin, helburu-orokorreko konpiladore bat barne.
Luzapen estandarrak oinarri estandar guztiekin eta elkarren artean gatazkarik gabe lan egiteko zehazten dira.
RISC-V ordenagailu askok agindu konprimituak inplementa ditzakete energia-kontsumoa, kodearen tamaina eta memoriaren erabilera murrizteko. Hiperbisoreei eta birtualizazioari euskarria emateko etorkizuneko planak ere badaude.
Gainbegiratzaile agindu-multzoaren luzapenarekin batera, S, RVGC bat, xede orokorreko sistema eragile bati behar bezala laguntzeko beharrezkok diren agindu guztiak definitzen ditu.
Izena | Merkantziaren izendapena | Bertsioa | Egoera | agindu-zenbakia |
---|---|---|---|---|
Oinarria | ||||
RVWMO | Memoria-ahul ordena | 2,0 | Berretsia | |
RV32I | Oinarrizko osoko agindu-multzoa, 32-bit | 2,1 | Berretsia | 40 |
RV32E | Oinarrizko osozko agindu-multzoa (txertatuta), 32-bit, 16 erregistro | 1,9 | Irekia | 40 |
RV64I | Oinarrizko osoko agindu-multzoa, 64-bit | 2,1 | Berretsia | 15 |
RV128I | Oinarrizko osoko agindu-multzoa, 128-bit | 1,7 | Irekia | 15 |
Luzapena | ||||
M | Osoko zatiketentzat eta biderketentzat luzapen estandarra | 2,0 | Berretsia | 8 (RV32) 13 (RV64) |
A | Agindu atomikoetarako luzapen estandarra | 2,1 | Berretsia | 11 (RV32)
22 (RV64) |
F | Preziso bakarreko koma-higikorretarako luzapen estandarra | 2.2 | Berretsia | 26 (RV32)
30 (RV64) |
D | Preziso bikoitzeko koma-higikorretarako luzapen estandarra | 2.2 | Berretsia | 26 (RV32)
32 (RV64) |
Zicsr | Kontrol- eta egoera-erregistroa (CSR) | 2,0 | Berretsia | 6 |
Zifencei | Agindu bilaketarako hesia | 2,0 | Berretsia | 1 |
G | IMAFDZicsr_Zifencei oinarri eta luzapeneen laburdura | — | — | |
Q | Prezisio laukoitzeko koma-higikorreko luzapen estandarra | 2.- | Berretsia | 28 (RV32)
32 (RV64) |
L | Koma-higikor hamartarretarako luzapen estandarra | 0,0 | Irekita | |
C | Agindu konprimatuen luzapen estandarra | 2,0 | Berretsia | 40 |
B | Bitak manipulatzeko luzapen estandarra | 1,0 | Berretsia | 43 |
J | Dinamikoki itzulitako lengoaietarako luzapen estandarra | 0,0 | Irekita | |
T | Transakzio-memoriarako luzapen estandarra | 0,0 | Irekita | |
P | SIMD aginduetarako luzapen estandarra | 0,9,10 | Irekita | |
V | Bektore-eragiketetarako luzapen estandarra | 1,0 | Izoztuta | 187 |
K | Kriptografia eskalarrerako luzapen estandarra | 1,0 | Berretsia | 49 |
N | Erabiltzaile-mailaren etenetarako luzapen estandarra | 1,1 | Irekita | 3 |
H | Hiperbisore luzapen estandarra | 1,0 | Berretsia | 15 |
S | Gainbegiratzaile-mailako aginduetarako luzapen estandarra | 1,12 | Berretsia | 4 |
Zam | Atomiko deslerrokatuak | 0,1 | Irekia | |
Ztso | Gordeketa ordena totala | 0,1 | Izoztuta |
Formatua | Bit | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
Erregistro/erregistro | funct7 | rs2 | rs1 | funct3 | rd | opcode | ||||||||||||||||||||||||||
Berehalakoa | imm[11:0] | rs1 | funct3 | rd | opcode | |||||||||||||||||||||||||||
Goi berehalakoa | imm[31:12] | rd | opcode | |||||||||||||||||||||||||||||
Store | imm[11:5] | rs2 | rs1 | funct3 | imm[4:0] | opcode | ||||||||||||||||||||||||||
Adarkatu | [12] | imm[10:5] | rs2 | rs1 | funct3 | imm[4:1] | [11] | opcode | ||||||||||||||||||||||||
Jauzia | [20] | imm[10:1] | [11] | imm[19:12] | rd | opcode | ||||||||||||||||||||||||||
|
Inplementa daitezkeen funtzioen konbinazioak saiesteko, nomenklatura bat definitzen da, berretsitako ISA zehaztapen ez-pribilegiatuaren 27. kapituluan zehazteko. Agindu-multzoaren oinarria aurrena zehazten da, eta RISCrako erregistroaren bit-zabalera eta aldaera kodetzen dira: RV64I
edo RV32E
adibidez. Hona hemen egindako luzapenak zehazten dituzten letrak, aurreko koadroko ordenaren arabera. Letra bakoitzaren atzetik aukera nagusiko zenbaki bat, "p" eta aukera txikiko zenbaki bat jar daitezke. 0 balioan etengo da bertsio txikiko zenbaki bat falta bada, eta 1.0 bertsio-zenbaki oso bat falta bada. Beraz, RV64IMAFD
honela idatz daiteke: RV64I1p0M1p0A1p0F1p0D1p0
edo sinplifikatu, RV64I1M1A1F1D1
gisa. Irakurgarritasuna errazteko luzapenen arteko azpimarrako erabil daitezke, adibidez, RV32I2_M2_A2
.
Oinarrizko, osoko zabalduak eta koma-higikorreko kalkuluak, eta multinukleo konputaziorako sinkronizazio-primitibo kalkuluak, oinarria eta MAFD luzapenak beharrezkoak dira helburu orokorreko konputazioa kalkulatzeko, eta, beraz, G laburketa dute.
Sistema txertatu baterako 32 biteko ordenagailu txiki bat RV32EC
izan liteke. 64 biteko ordenagailu handi bat RV64GC
izan daiteke adibidez (RV64IMAFDCicsr_Zifencei
-ren laburdura).
Luzapen kopurua handitu ahala, estandarrak orain luzapenak "Z" bakar batek izendatzea aurreikusten du, izen alfabetiko bat eta aukerako bertsio zenbaki bat jarraiturik. Adibidez, Zifencei
k bilaketa aginduaren luzapena izendatzen du. Zifencei2
eta Zifencei2p0
, 2.0 bertsioa. Konbentzioz "Z" hizkiaren ondorengo lehen hizkiak lotura estuena duen alfabeto-luzapenaren kategoria adierazten du: IMAFDQLCBJTPVN
. Beraz, gaizki lerrokatutako agindu atomiarako Zam
luzapena "A" luzapen estandarrarekin lotuta dago. Karaktere bakarreko luzapenak ez bezala, Z luzapenak azpimarrekin bereizita egon behar dute, kategoriaren arabera multzokatuta eta, ondoren, kategoria bakoitzaren barruan, alfabetikoki. Adibidez, Zicsr_Zifencei_Zam
.
Gainbegiratzailearen pribilegio-mailaren berariazko luzapenak modu berean izendatzen dira, "S" aurrizkirako erabiliz. Hiperbisore-mailako luzapen espezifikoak "H" aurrizkirako erabiliz izendatzen dira. Makinaren maila-luzapenek "Zxm" hiru letrak dituzte aurrez ezarrita. Gainbegiratzailea, hiperbisorea eta makina mailako agindu-multzoen luzapenak ez dira hain pribilegiatuak.
RISC-Vren garatzaileek agindu ez-estandarren multzoen luzapenak sor ditzakete. Hauek "Z" izeneko konbentzioari jarraitzen diote, baina "X" aurrizki gisa. Luzapen estandar guztien ondoren zehaztu behar dira, eta luzapen ez-estandar batzuk zerrendatzen badira, alfabetikoki zerrendatu behar dira.
ISAko hautaketa-zerrenda estandarren profilak eta plataformak eztabaidatzen ari dira.
« | ... Malgutasun hori diseinu espezializatu bat optimizatzeko erabil daiteke, aplikazio baterako behar diren ISA ezaugarrien multzo zehatza soilik sartuz, baina malgutasun berak ISA aukeretan eztanda konbinatoriora ere eramaten du. Profilek ISAren aukera-multzo askoz txikiago bat zehazten dute, erabiltzaile gehienentzat balio handiena hartzen duena, eta, beraz, software-komunitateari baliabideak kontzentratzeko aukera ematen diona software-ekosistema aberats baten eraikuntzan. | » |
« | Plataformaren espezifikazioak softwarearen eta hardwarearen arteko elkarreragingarritasun-baldintzak zehazten ditu. Plataforma-politikak plataformaren zehaztapen honetan erabilitako terminoak definitzen ditu. Plataforma-politikak beharrezko xehetasunak ere ematen ditu plataformaren irismenari, estaldurari, izenari, bertsioari, egiturari, bizi-zikloari eta bateragarritasun-erreklamazioei dagokienez, plataforma zehazteko. | » |
Erregistroaren izena | Izen sinbolikoa | Deskripzioa | Nork gordeta |
---|---|---|---|
32 oso erregistro | |||
x0 | Zero | Beti zero | |
x1 | ra | Itzulera-helbidea | Deitzaileak |
x2 | sp | Pilaren erakuslea | Deitutakoak |
x3 | gp | Adierazle orokorra | |
x4 | tp | Hari-erakuslea | |
x5 | t0 | Aldi baterako / itzulera helbide alternatiboa | Deitzaileak |
x6–7 | t1–2 | Aldi baterakoa | Deitzaileak |
x8 | s0/fp | Gordetako erregistroa / koadro-erakuslea | Deitutakoak |
x9 | s1 | Gordetako erregistroa | Deitutakoak |
x10–11 | a0–1 | Funtzioaren argumentua / itzulerar-balioa | Deitzaileak |
x12–17 | a2–7 | Funtzioaren argumentua | Deitzaileak |
x18–27 | s2–11 | Gordetako erregistroa | Deitutakoak |
x28–31 | t3–6 | Aldi baterakoa | Deitzaileak |
32 koma-higikorreko erregistro | |||
f0–7 | ft0–7 | Aldi baterako koma-higikorrak | Deitzaileak |
f8–9 | fs0–1 | Gordetako koma-higikorreko erregistroak | Deitutakoak |
f10–11 | fa0–1 | Koma-higikorreko argumentuak / itzulera-balioak | Deitzaileak |
f12–17 | fa2–7 | Koma-higikorreko argumentuak | Deitzaileak |
f18–27 | fs2–11 | Gordetako koma-higikorreko erregistroak | Deitutakoak |
f28–31 | ft8–11 | Aldi baterako koma-higikorrak | Deitzaileak |
RISC-Vk 32 (edo 16 bariante txertatuetan) erregistro oso ditu, eta koma-higikorraren luzapena inplementatzen denean, 32 koma-higikorreko erregistro bereiziak. Memorian sartzeko aginduetan izan ezik, aginduek erregistroak helbideratzen dute bakarrik.
Lehenengo osoko erregistroa zero erregistro bat da, eta gainerakoak helburu orokorreko erregistroak dira. Zero erregistroan gordeketa eragiketa batek ez du eraginik izango, eta irakurketak beti 0 emango du. Zero erregistroa kokapen-markatzaile gisa erabiltzeak agindu-multzoa sinpleagotzea ahalbidetzen du.
move rx to ry
bihurtzen da add immediate 0 to rx and store in ry
.
Kontrol- eta egoera-erregistroak daude, baina erabiltzaile-moduko programak errendimendua neurtzeko eta koma-higikorrak kudeatzeko erabiltzen direnak soilik atzitu daitezke.
Hainbat erregistro gordetzeko eta berrezartzeko agindurik ez da existitzen. Alferrikakoak, konplexuegiak eta agian motelegiak zirela uste zen.
RISC diseinu asko bezala, RISC-V kargatze- eta biltegiratze-arkitektura da: aginduek erregistroak baino ez dute atzitzen, datuak memoriara eta memoriatik transmititzen dituzten karga- eta biltegiratze-aginduekin.
Kargatzeko eta biltegiratzeko agindu gehienek 12 biteko offset bat eta bi erregistro-identifikatzaile dituzte. Erregistro bat oinarrizko erregistroa da. Beste erregistroa iturria (biltegiratze baterako) edo norakoa (karga baterako) da.
Offseta oinarrizko erregistro bati gehitzen zaio helbidea lortzeko. Helbidea oinarrizko erregistro bat gehi offset gisa eratuz gero, agindu banakoak datu-egiturak atzitzea baimendu dezake. Adibidez, oinarrizko erregistroak pila baten goiko aldea adierazten badu, banakako aginduak azpierrutina baten aldagai lokaletara sar daitezke pilan. Era berean, kargatzeko eta biltegiratzeko aginduak record-estiloko egitura batera edo mapatutako Sarrera/Irteera gailu batera sar daitezke. Zero erregistro konstantea oinarrizko helbide gisa erabiltzeak agindu bakarrak ematen ditu memoriara zero helbidetik hurbil sartzeko.
Memoria 8 biteko byte gisa helbideratzen da, little-endian ordenako aginduekin eta kodea exekutatzen den exekuzio-inguruneko interfazeak definitutako byte ordenako datuekin. Hitzak, erregistroaren tamaina arte, kargatzeko eta biltegiratzeko aginduekin atzitu daitezke.
RISC-Va, hasieran, little-endian gisa zehaztu zen, familiako beste ordenagailu arrakastatsu batzuen antza hartzeko, adibidez, x86. Horrek ere PUZ baten konplexutasuna eta kostea murrizten ditu pixka bat da, hitzen tamaina guztiak ordena berean irakurtzen baititu. Adibidez, RISC-V agindu-multzoak byte bidez helbideratutako agindutik abiatuta deskodetzen hasten da. Big-endian eta big-endianeko aldaerak definitu ziren ere big-endian lerrokadura asumitzen duten kode heredatuen oinarriak jasateko.
Exekuzio-inguruneko interfaze bati esker, atzitutako memoria-helbideak ez dira hitz-zabalerarekin lerrokatzen, baina helbideekin lerrokatutako atzipenak azkarragoak izan daitezke; adibidez, PUZ sinpleek lerrokadura-failaren eten batek bultzatutako software motelaren emulazioarekin lerrokatu gabeko sarbideak ezar ditzakete.
RISCren agindu-multzo askok bezala (eta agindu-multzo konplexu batzuek (CISC), hala nola x86 eta IBM System/360 eta haren ondorengoek z/Architecture bidez), RISC-V-k ez du erregistroetara berriro idazten duen helbideratze-modurik. Adibidez, ez da automatikoki inkrementatzen.
RISC-Vek PUZren edo harien artean partekatutako memoria-sistemak kudeatzen ditu, exekuzio-hari batek bere memoria-eragiketak programatutako ordenan ikusten dituela ziurtatuz. Baina harien eta S/I gailuen artean, RISC-V sinplifikatu egiten da: ez du memoria-eragiketen ordena bermatzen, berariazko aginduek izan ezik, hala nola hesiak (fence
).
Hesi-agindu (fence
) batek aurreko eragiketen emaitzak beste hari batzuen edo S/I gailuen ondorengo eragiketetan ikus daitezkeela bermatzen du. fence
k, memoriaren eta mapatutako S/I eragiketen konbinazio-ordena berma dezake. Adibidez: memoria irakurri eta idazteko eragiketak bereiz ditzakezu, S/I eragiketei eragin gabe. Edo, sistema batek memoriarekin paraleloan S/I gailuak erabil baditzake, hesiak ez ditu bata bestearen zain jarri behar. Hari bat duen PUZak nop
gisa deskodetu dezake fence
.
PUZ RISC batzuek (adibidez, MIPS, PowerPC, DLX eta Berkeleyren RISC-I) 16 biteko offset-a ezartzen dute karga eta biltegiratzetan. Goiko 16 bitak ezartzen dituzte, load upper word aginduaren bidez bidez. Horri esker, hitz-erdien goi-balioak balioak erraz ezar daitezke bitik desplazatu gabe. Hala ere, hitz-erdiaren goi-agindu erabilera gehienak 32 biteko konstanteak sortzen ditu, helbideak bezala. RISC-V-k SPARCren antzeko 12 biteko offset eta 20 biteko set upper aginduen konbinazio bat erabiltzen du. 12 biteko offset txikiagoa 32 biteko karga eta biltegiratze agindu trinkoak 32 erregistrotatik bi aukeratzen laguntzen dio, baina oraindik ere nahikoa bit dituzte RISC-Vren luzera-aldakorreko aginduak kodetzeko.
RISC-V-k 32 biteko konstanteak eta helbideak erabiltzen ditu, 32 biteko erregistro bateko goiko 20 bitak ezartzen dituzten aginduekin. Load upper immediate (lui
) berehalako karga 20 bitekoa da, 31tik 12ra. Gero, bigarren agindu batek addi
12 biteko beheko zatia ezar dezake. Zenbaki edo helbide txikiak zero erregistroa erabiliz eratu daitezke lui
ordez.
Metodo hau zabaldu egiten da posizio independenteko kodea ahalbidetzeko, agindu bat gehituz, auipc
zeinek helbideko goiko 20 bit sortzen dituen programaren kontagailuari offset bat gehituz eta emaitza oinarrizko erregistro batean gordez. Horri esker, programa batek programaren kontagailuarekiko erlatiboa den 32 biteko helbideak sortzea ahalbidetzen du.
Oinarrizko erregistroa, maiz, dagoen bezala erabil daiteke, load eta storeren 12 biteko offsetekin. Beharrezkoa bada, addi
-k erregistro bateko beheko 12 bitak ezar ditzake. 64 bit eta 128 biteko ISA-etan, lui
eta auipc
-k zeinua luzatzen dute helbide handiagoak lortzeko.
Zenbait PUZ azkarrek agindu-konbinazioak agindu bateratu bat gisa interpreta ditzakete. lui
edo auipc
egokiak izan daitezke jalr
, addi
, load edo storerekin fusionatzeko.
RISC-Vren jal
(jauzi eta lotura) azpierrutina deiak, bere itzulera-helbidea erregistro batean jartzen du. Hau azkarragoa da ordenagailu-diseinu askotan, memoria-atzipenak aurrezten baititu, memorian pila batera itzulera-helbidea zuzenean bultzatzen duten sistemekin alderatuta. jal
-ek 20 biteko zeinudun offset bat du (biko osagarrian). Offseta 2rekin biderkatzen da, eta gero PCra gehitzen da, 32 biteko agindu bati dagokion helbide erlatiboa sortzeko. Emaitza 32 biteko helbide bat ez bada (adibidez, 4rekiko zatigarria), PUZak salbuespen bat sortu dezake.
RISC-V PUZak kalkulatutako helbideetara jump and link-register (jalr
agindua) erabiliz jauzi egiten dute. jalr
jal
-ren antzekoa da, baina helburu-helbidea 12 biteko offset bat oinarrizko erregistro bati erantisz kalkulatzen du. (Aldiz, jal
ek 20 biteko offset handiago bat eransten dio PCari.)
jalr
-en bit formatua erregistro-erlatiboen load eta storeren bezalakoa da. Haiek bezala, jalr
oinarrizko erregistro bateko goiko 20 bitek ezartzen dituzten jauziekin erabil daiteke, 32 biteko adarrak egiteko, bai norabide absolutura (lui
erabiliz), bai PC erlatibo batera (posizio independenteko kodeentzat auipc
erabiliz). (Oinarrizko helbide konstante zero bat erabiltzeak aukera ematen du agindu bakarreko deiak egiteko helbide txiki batera (offsetera), finko positibo edo negatibora.)
RISC-V-k jal
eta jalr
birziklatzen ditu, PC-arekiko erlatibo diren 20 biteko jauzi baldintzagabeak eta 12 biteko erregistroetan oinarritutako jauzi baldintzagabeak lortzeko. Jauziek lotura-erregistroak zerora ezartzen dute itzulera-helbiderik gorde ez dezan.
RISC-V-k ere jalr
birziklatzen du azpirrutina batetik itzultzeko: Hau egiteko, jalr
-ren oinarrizko erregistroa jal
edo jalr
-k gordetako lotura-erregistroa izateko ezarrita dago. Jalr
offseta zero da, eta lotura-erregistroa zero da; beraz, ez dago offsetik, eta ez da inolako itzulera-helbiderik gordetzen.
RISCren diseinu askok bezala, azpirrutinazko dei batean, RISC-Vren konpiladore batek banakako aginduak erabili behar ditu pilan erregistroak hasieran gordetzeko, eta, ondoren, pilatik irteeran berrezartzeko. RISC-V-k ez du save multiple (hainbat gorde) edo restore multiple (hainat berrezarri) erregistro-agindurik. Uste zen horrek PUZa konplexuegia eta, seguruenik, motelegia egiten zuela. Horrek kode-tarte handiagoa hartu dezake. Diseinatzaileek kodearen tamaina murrizteko liburutegi-errutinak erregistroak gorde eta berrezartzeko erabiltzeko asmoa zuten.
RISC-V-k ez du baldintza-kode erregistrorik, ez bit eramangarririk. Diseinatzaileek uste zuten kode kondizionalek PUZ azkarrak konplexuagoak bihurtzen dituztela baldintza-kodeek, aginduak betearazte-etapa desberdinetan elkarrekintzara behartzen dituztelako. Aukera horren ondorioz, zehaztasun anitzeko aritmetika konplexuagoa da. Gainera, zenbakizko lan batzuek energia gehiago behar dute. Horren ondorioz, iragarpena (aginduen baldintzazko exekuzioa) ez dago eskarritua. Diseinatzaileek diotenez, oso azkar eta ordenaz kanpo lan egiten diren PUZen diseinuek, nolanahi ere, iragarpena egiten dutela, alderaketa-adarra eta baldintzazko kodea paraleloan egitean, eta, gero, erabili gabeko ibilbidearen ondorioak baztertzean. Gainera esaten dute PUZ sinpleagoetan, adarkapenaren iragarpena, iragarpena baino baliotsuagoa dela diote, eta horrek baldintzapeko adarrekin lotutako blokeaketa gehienak prebeni ditzake. Predikaziorik gabeko kodea handiagoa da, adar gehiagorekin, baina esaten dute, halaber, agindu-multzo konprimitu batek (RISCren C multzoak bezala) arazo hori konpontzen duela kasu gehienetan.
Horren ordez, RISC-V-k adar motzak ditu konparazioak egiten dituztenak: equal, not-equal, less-than, unsigned less-than, greater-than edo equal eta unsigned greater-than edo equal. Hamar konparazioko edarrak sei intrukzio bakarrik erabilita inplementatu dira, mihiztatzailean eragigaien ordena alderantzikatuz. Adibidez, branch if greater than, egin daiteke less-than erabiliz, operazioen ordena aderantziz eginez.
Konparatutako adarrek zeinu gabeko 12 biteko tartea dute eta jauzia erlatiboa da PC-arekiko.
RISC-ren arkitektura batzuetan ez bezala, RISC-V-k ez du adarkapen atzerapen-lekurik, adar-agindu baten ondoren dagoen posizioa, adarra hartzen den ala ez exekutatzen den agindu batekin bete daiteke. RISC-V-k adarraren atzerapen-lekua alde batera uzten du, ziklo askotako PUZak, superscalarrak eta instrukzio-hodi luzeak zailtzen baititu. Adarretako iragarpen dinamikoek, adarkaketa atzeratuen beharra murrizteko adinako arrakasta izan dute.
Adar batekin topo egiten duen lehen aldian, RISC-V PUZek adar negatiboa erlatibo bat dela suposatu behar dute (adibidez: offsetaren seinale-zatia "1" dela. Horrek esan nahi du atzeraka doan adar bat begizta bat dela, eta hodi sinpleetako PUZek hodia aginduez bete ahal izateko norabide lehenetsia ematen du. Horrez gain, RISC-V-k ez du adarkatze iragarpenik behar, baina oinarrizko inplementazioek gehitu dezakete. RV32I "HINT" aginduko espazio bat gordetzen du, gaur egun adarren gaineko pistarik ez duena. RV64I-k gauza bera egiten du.
RISC-V-k matematika osokoen gutxieneko multzo batean (I multzoa) jariatzen du, batuketa, kenketa, bit-aldaketa, logika bitarra eta adarrekin. Hauek RISC-V agindu-multzo gehienak simula ditzakete software bidez. (Agindu atomikoak salbuespen nabarmena dira.) Osokoetarako RISC-V aginduek bit-field operazioak eta count leading zero falta dute, normalean koma-higikorreko eragiketak azkartzeko erabiliak osokoetarako prozesadoreetan. Hala ere, bitak manipulatzeko luzapenean, Zbb, Zba eta Zbs-en luzapenek osoko agindu gehigarriak dituzte, count leading zero agindua barne.
Zenbaki osoak biderkatzeko aginduek (M multzoa) zeinudun eta zeinu gabeko biderketa eta zatiketa dute. Doitasun bikoitzeko osokoen biderketa eta zatiketa egiteko aukera dago. ISA dokumentuak gomendatzen du CPUen eta konpiladoreen egileek altako eta bajako biderketa eta zatiketarako sekuentzia estandarizatu bat bateratzea, ahal bada.
Koma higikorreko aginduek (F multzoa) dute konparaketa-adarrak eta doitasun bakunerako aritmetika, osokoetarako aritmetikaren antzekoak. Koma higikorreko 32 erregistro gehiago behar ditu. Hauek osokoen erregistroetatik bereizita daude. Doitasun bikoitzeko koma higikorreko aginduetan (D multzoa) kontutan hartu behar da koma higikorreko erregistroak 64 bitekoak direla (hau da, luzera bikoitzekoak), eta F azpimultzoa D multzoarekin koordinatuta dagoela. 128 biteko doitasun laukoitzeko koma higikorreko ISA (Q) ere definituta dago. Koma higikor gabeko RISC-V ordenagailuek koma higikorretarako software-liburutegiak erabil ditzakete.
RISC-V-k ez ditu salbuspenak jaurtitzen errore aritmetikoetan, esaterako, gainezkatzean edota zeroz zatitzerakoan. Aldiz, bai osokoen aritmetikak, bai koma-higikorreko aritmetikak, zentzuzko defektuzko balioak sortzen dituzte, eta koma higikorreko aginduek egoera-bitak ezartzen dituzte. Zerorekin zatiketa adar batek aurkitu dezake. Egoera-bitak sistema eragile baten bidez edo aldizkako eten baten bidez azter daitezke.
RISC-V-k PUZ eta hari askoren artean memoria partekatzen duten ordenagailuentzat euskarria du. RISC-Vren memoriaren trinkotasunaren eredu estandarra askatzearen trinkotasuna (release consistency) da. Hau da, kargak eta biltegiratzeak, oro har, berrantolatu daitezke, baina karga batzuk atzipen-eragiketa gisa izenda daitezke, eta atzeragoko memoria-atziketak aurreratu dezakete. Beste biltegiratze-mota batzuk, berriz, aurreko memoria-atzipenei jarraitu behar dieten askatze-eragiketa gisa izenda daitezke.
Oinarrizko agindu-multzoak gutxieneko euskarri bat du, memoria-ordena bermatzeko hesi-agindu baten bidez. Hori nahikoa den arren (fence r, rw
eskurapena ematen du eta fence rw, w
askapena ematen du), eragiketa konbinatuak eraginkorragoak izan daitezke.
Memoria atomikoko eragiketa luzapenak bi motatako memoria atomikoko eragiketak onartzen ditu askatze-kontsolidaziorako. Lehenik eta behin, helburu orokorreko load-reserved lr
eta biltegiratze baldintzatua sc
aginduak ematen ditu. lr
karga bat egiten du, eta helbide hori hariarentzat gordetzen saiatzen da. Erreserbatutako helbidea store-conditional sc
exekutatuko da baina erreserba hori beste puntuko biltegiratze batekin talkarik egiten ez badu bakarrik . Biltegiratzeak arrakasta badu, zero bat jartzen da erregistro batean. Huts egiten badu, zero ez den balio batek adierazten du softwareak eragiketa gaitzetsi behar duela. Betiere, erreserba askatzen da.
Bigarren agindu atomikoen multzoak irakurri-aldatu-idatzi (read-modify-write) sekuentziak egiten ditu: karga bat (nahi izanez gero, karga-atzipen bat) helburu-erregistro batean egiten da, gero eragiketa bat kargatutako balioaren eta iturburu-erregistro baten artean, eta, gero, emaitzaren biltegiratze bat (biltegiratze-askatze bat izan daiteke). Memoria-hesiak hautazkoak eginez eragiketak konbinatzea ahalbideratzen du. Aukerako eragiketak eragiketa atomiko guztietan dauden acquire (atzipen) eta release (askatze) biten bidez aktibatu daitezke. RISC-V-k bederatzi eragiketa posible definitzen ditu: swap (iturri-erregistroaren balioa zuzenean erabiltzea); add; bitwise and, or, eta exclusive-or; eta sinatua eta sinatu gabeko minimoak eta maximoak.
Sistemaren diseinu batek eragiketa konbinatu horiek lr
eta sc
baino gehiago optimiza ditzake. Adibidez, swap baten helburu-erregistroa zero konstantea bada, karga alde batera utz daiteke. Gordetako balioa kargatik aldatzen ez bada, biltegia saltatu daiteke.
IBM/370 sistemak eta haren ondorengoek, z/Architecture eta x86 barne, konparaketa- eta truke-agindu bat (compare-and-swap edo cas
) ezarri zuten biek. Agindu horrek, baldintzapean, memorian kokapen bat frogatzen eta eguneratzen du: kokapenak espero zen balio zahar bat badu,cas
-ek balio berri batekin ordezkatzen du; orduan, aldaketa egin duen ala ez beultatuko du. Hala ere, eskuarki, karga-motako agindu sinple bat egiten da cas
agindua baino aurretuk, balio zaharra lortzeko. Problema klasikoa da hari batek A balio bat irakurtzen (kargatzen) badu, C balio berri bat kalkulatzen duela, eta gero (cas
) erabiltzen duela A C-rekin ordezteko, ez duela modurik jakiteko beste hari bateko jarduera konkurrenteak A B balio batez ordezkatu duen eta, gero, A balioa berrezarri duen bitartean. Algoritmo batzuetan (adibidez, memoriako balioak dinamikoki esleitutako blokeen adierazleak direnean), ABAren problema horrek emaitza okerrak ekar ditzake. Irtenbiderik ohikoenak zabalera bikoitzeko cas
agindu bat erabiltzen dute markagailua eta alboko kontagailua eguneratzeko; zoritxarrez, agindu horrek agindu formatu berezia behar du zenbait erregistro zehazteko, hainbat irakurketa egin eta idatzi, eta bus-eragiketa konplexua izan dezake.
lr/sc
alternatiba eraginkorragoa da. Normalean, memoria-karga bakarra behar izaten da, eta memoria moteleko eragiketak minimizatzea komeni da. Zehatza ere bada: memoria-zelularako sarbide guztiak kontrolatzen ditu, patroi bat ziurtatu beharrean. Hala ere, cas
ek ez bezala, livelocka ahalbidetzen du, non bi harik edo gehiagok behin eta berriz huts egiten baitute besteen aginduek. RISC-V-k aurrerantz progresioa bermatzen du (livelock-ik ez) kodeak denborak eta aginduen sekuentziari buruzko arauak betetzen baditu: 1) / azpimultzoa baino ez du erabili behar. 2) Katxearen errore errepikakorrik gerta ez dadin, kodeak (erreproba-begizta barne) segidako 16 agindu bete behar ditu gehienez. 3) Ez du sistema- edo hesi-agindurik izan behar, edo atzeraka adarkapenik hartu behar lr
eta sc
artean. 4) Erreproba-begiztaren atzerakako adarkapenak jatorrizko sekuentzian egon behar du.
Datu-egitura bat blokeatzeko irakurri-aldatu-idatzi agindu atomikoak nola erabili erakusten du espezifikazioak.
RISC-V ISA estandarrak zehazten du agindu guztiak 32 bitekoak direla. Horrek ezarpen bereziki sinplea ahalbidetzen du, baina, 32 biteko agindu-kodeko beste RISC prozesadore batzuk bezala, luzera aldakorreko aginduak dituzten agindu-multzoetan baino kode-tamaina handiagoa du.
Konpentsatzeko, RISC-ren 32 biteko aginduak benetan 30 bitekoak dira; op kodearen tamainaren 3⁄4 erreserbatu egiten da aukerako (baina gomendatua) luzera aldakorreko konprimatutako agindu multzorako, RVC, 16 biteko instrukzioak dituen. ARM-ren Thumb eta MIPS16, agindu konprimituak ezizen hutsak dira agindurik handienen azpimultzo baterako. ARM-ren Thumb edo MIPS-en multzo konprimitua ez bezala, espazioa hasieratik erreserbatu zen; beraz, ez dago operaketa modu bereizirik. Agindu estandarrak eta konprimituak nahierara nahastu ahalko dira. (Lizapen letra C da).
Agindu konprimituak (Thumb-1 eta MIPS16 bezala) ordezko kodifikazioak (ezizena) besterik ez direnez agindu handiagoz hautatutako azpimultzo baterako, konpresioa mihiztatzailean ezar daiteke, eta ez da funtsezkoa konpiladoreak horren berri izatea.
RVC prototipo bat probatu zuten 2011n. Prototipoaren kodea x86 PC eta MIPS kode konprimitu bat baino %20 txikiagoa zen, eta ARM Thumb-2 kodea baino %2 handiagoa. Cache memoria eta memoria-sistemaren potentzia zenbatetsia nabarmen murriztu zituen.
Ikertzaileak ordenagailu txikientzako kodearen tamaina bitarra murriztu nahi zuen, batez ere sistema informatiko txertatuentzat. Prototipoak erabilienetako 33 instrukzio jaso zituen, multzo konprimituarentzat aldez aurretik erreserbatutako eragiketa-kodeak erabiliz 16 biteko formatu trinko gisa jaso ziren. Konpresioa mihiztatzailean egin zen, mihiztadorean aldaketarik egin gabe. Agindu konprimituek sarritan zero diren eremuak ez dituzte kontuan artzen, erregistroetako (16 edo 8) berehalako balio txikiak edo atzipen-azpimultzoakerabiltzen dituzte. addi oso arrunta da eta askotan konprimitu daiteke.
Tamaina-diferentziaren zati handi bat ARM-ren Thumb multzoarekin alderatuta gertatu zen, RISC-V eta prototipoek ez dutelako zenbait erregistro gorde eta berrezartzeko agindurik. Konpilatzaileak, ordea, pilara sartzeko ohiko aginduak sortu zituen. RVC prototipoaren mihiztatzaileak, askotan, tamainaren erdiko forma konprimitu bihurtu zituen. Hala ere, horrek ARM aginduek baino kode-tarte handiagoa hartu zuen, hainbat erregistro atera eta berrezartzen baitituzte. Ikertzaileak konpiladorea aldatzea proposatu zuen, erregistroak gorde eta berrezartzeko liburutegiko errutinak deitzeko. Errutina horiek kode-katxean egotera joko lukete, eta, beraz, azkar exekutatzera, nahiz eta seguruenik maila anitzeko agindu bat ez bezain azkar.
RVC estandarrak 32 biteko aginduak noizean behin erabiltzea eskatzen du. RVC ez-estandarreko zenbait proposamen osoak dira, ez dute 32 biteko agindurik behar, eta esaten da RVC estandarrak baino dentsitate handiagoak dituztela. Beste proposamen bat horietan oinarritzen da, eta kodifikazio-maila txikiagoa erabiltzen duela dio.
Txertatutako PUZ txikienetarako (E multzoa) agindu-multzoa bat beste modu batera murrizten da: 32 erregistro osotik 16 baino ez dira onartzen. Gaur egungo luzapen guztiak erabil daitezke; koma-higikorreko luzapen bat , zenbaki osoentzako erregistroak koma-higikorrentzako kontuan hartzen ari da. Aginduen multzo pribilegiatuak soilik onartzen ditu makina modua, erabiltzailearen modua eta base-and-bound helbideen birkokapena erabiltzen duten memoria-sistemak.
RISC-V--rako mikrokontroladore-profil bat eztabaidatu da, sakonki txertatutako sistemen garapena errazteko. C lengoaiaren euskarri azkarragoa eta sinpleagoa du etenetarako, segurtasun-modu erraztuetarako eta POSIX aplikazio interfaze bitarra sinplifikatua.[18]
Korrespontsalek 16 biteko RV16E ISA txikiago ez estandarrak proposatu dituzte: Zenbait proposamen seriok 16 biteko C aginduak 8 × 16 biteko erregistroekin erabiliko lituzkete. Inuzenteen eguneko txantxa batek oso moldaketa praktikoa proposatu zuen: 16 × 16 biteko erregistro osoak erabiltzea, EIMC estandarrekin (32 biteko aginduak barne). Txistea zen banku-aldaketa erabiltzea, 32 biteko PUZa hobeagoa izango zelako helbide-espazioa askoz handiagoa zenean.
RISC-V-ren ISAak agindu pribilegiatuen multzoaren zehaztapen bereizia du. 2021eko abendutik aurrera, 1.12 bertsioa RISC-V International-ek berresten du.
Zehaztapenaren 1.11 bertsioak hainbat sistema informatiko mota onartzen ditu:
Hauek, gutxi gorabehera, pribilegio eta segurtasuneko lau eraztun dituzten sistemak dira, gehienez ere: makina, hiperbisorea, ikuskatzailea eta erabiltzailea. Halaber, geruza bakoitzak euskarri estandarizatuko software-geruza fin bat izatea espero da, geruza pribilegiatuago bati komunikatzen zaiona, edo hardware bat.
ISAak hiperbisore modu bat ere badu, erabiltzaile eta gainbegirale moduarekiko ortogonala dena. Oinarrizko ezaugarria konfigurazio-bit bat da, hiperbisoreko erregistroetara sartzeko aukera ematen duena, edo sarbideetan etenaldia eragiten duena. Bit horri esker, gainbegiratze-moduari zuzenean hiperbisore batek behar duen hardwarea erabiltzea ahalbidetzen dio. Honek sistema eragilean hosteatuta dauden hiperbisoreen inplementazioa sinplifikatzen ditu. Biltegi baten tamaila mailako ordenagailuak exekutatzeko askotan erabiltzen den modua da. Hosteatu gabeko hiperbisoreei laguntzeko, bit honek sabide hauek etenak sor dezakete hiperbisore batera. Diseinuak hiperbisoreen habiak egitea ere errazten du, hiperbisore batek hiperbisore baten azpian funtzionatzen baitu, eta, beharrezkoa bada, nukleoak hiperbisoreen ezaugarriak bere nukleo-kodean erabiltzeko aukera ematen du. Horren ondorioz, ISA hiperbisoreak bost modu onartzen ditu: makina, gainbegiralea, erabiltzailea, hiperbisorearen peko gaibegiralea eta hiperbisorearen peko erabiltzailea.
RISC-V erakundeak RISC-V PUZ eta SoC inplementazioen zerrenda mantentzen du.[19]
Lehendik dauden aplikazio patentatuetan hauek sartzen dira:
Kode irekiko PUZ RISCren diseinu asko daude, besteak beste:
Agindu-multzo berri baterako arazo normala PUZaren diseinurik eta softwarerik eza da. Bi kontuek erabilgarritasuna mugatzen dute eta adopzioa murrizten dute.[7] RISC-V-k PUZko diseinu asko ditu. RISC-V softwareak erreminta-kateak, sistema-eragileak, middleware eta diseinu softwareak ditu.
Eskuragarri dauden RISC-V software-tresnen artean GNU Compiler Collection (GCC) erreminta-katea (GDB, araztailea), LLVM erreminta-katea, OVPsim simulagailua (eta RISC-V prozesadore azkarreko eredu-liburutegia), Spike simulagailua eta simulagailu bat QEMU-n (RV32GC/RV64GC) daude. JEP 422: Linux/RISC-V Port dagoeneko integratuta dago OpenJDK-ren biltegi nagusian.
Linux, FreeBSD, NetBSD eta OpenBSDren kernelerako sistema eragilearentzat euskarria dago, baina gainbegiratzaile-moduko aginduak ez ziren estandarizatu ISA zehaztapen pribilegiatuaren 1.11 bertsiora arte; beraz, euskarri hori behin-behinekoa da. FreeBSDren RISC-V arkitekturarako aurretiko euskarri portetatzea 2016ko otsailean igo zen eta FreeBSD 11.0n bidali zen. Debian eta Fedora[78] Linux banaketetako porteatzeak eta Haikuko portu bat egonkortzen ari dira (biek 64 biteko RISC-V bakarrik onartzen dute, 32 biteko bertsioa bermatzeko planik gabe).[79] Das U-Boot-en port bat dago. UEFI Spec v2.7-k RISC-V lotura definitu du, eta TianoCorerentzat portu bat HPEko ingeniariek egin dute, eta hobetzea espero da. Badago seL4 mikronukleoaren aurretiko port bat.[80][81] Hex Fivek RISC-Vrako lehen IoT pila segurua atera zuen FreeRTOS euskarriarekin.[82] Halaber, MITen helburu pedagogikoekin erabilitako ANSI C-ko Seigarren Unix Edizioaren inplementazio modernoa egin zen, vx6. Pharos RTOS 64 biteko RISC-Vra eraman da (denboraren babesa eta memoria barne).[83]
Simulagailu bat dago web nabigatzaile batean RISC-V Linux sistema bat JavaScript erabiliz exekutatzeko.[84][85][86]
QEMUk 32 eta 64 biteko RISC-V sistemen (Linux adibidez) exekuzioa onartzen du (itzulpen bitarraren bidez) gailu emulatu edo birtualizatu batzuekin (seriea, paraleloa, USB, sarea, biltegiratzea, denbora-errealeko erlojua, watchdog, audioa), eta RISC-V Linux binarioak exekutatzea ere (syscall nukleo anfitrioira itzultzea). Multicore emulazioa onartzen du (SMP).[87]
Creator simulagailua eramangarria da, eta hainbat prozesagailuren ensanblatze-lengoaiak ikasteko aukera ematen dio erabiltzaileari (Creatorrek adibideak ditu, RISC-V eta MIPS32 aginduekin).[88][89]
WepSIM ikasketarako simulagailuak RISC-V (RV32I+M) aginduen azpimultzo bat (mikroprogramatua) inplementatzen du, eta ensanbladore azpirrutinak exekutatzezko aukera ematen du.[90][91]
Hainbat hizkuntza erabili dira RISC-V-ren IP nukleoak sortzeko, Chisel Scalan oinarritutako hardwarea deskribatzeko lengoaia barne (diseinuak Verilog-era murritz ditzake gailuetan erabiltzeko), eta CodAL prozesadorea deskribatzeko lengoaia ere erabili da RISC-V prozesadorearen nukleoak deskribatzeko eta dagozkion HDK-k testak sortzeko.[92][93] RISC-V International Compliance Task Group-ek GitHub-en biltegia du RV32IMCrentzat.[94]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.