Hoppa till innehÄllet

RISC-V

FrÄn Wikipedia
RISC-V
Typ av öppen processorarkitektur Redigera Wikidata
RISC ISA, projekt, instruktionsuppsÀttning, datorplattform Redigera Wikidata
Tillkomst18 maj 2010 Redigera Wikidata
Utveck­la­reUniversity of California, Berkeley, RISC-V International Redigera Wikidata
Ope­ra­tiv­sys­temGNU/Linux, Debian Redigera Wikidata
Byte-ordninglittle-endian Redigera Wikidata
Officiell webbplatsriscv.org Redigera Wikidata
LicensBSD-licens Redigera Wikidata

RISC-V (uttalas "risk-five" pÄ engelska) Àr en öppen processorarkitektur. Den finns huvudsakligen i tvÄ varianter: RV32 för 32 bitar och RV64 för 64 bitar. Det finns ocksÄ en preliminÀr definition av en 128-bitarsvariant.[1]

Utvecklingen startade pÄ University of California, Berkeley sommaren 2010. Namnet RISC-V kommer av att det Àr universitetets femte arkitektur av RISC-typ.[1] Nu drivs utvecklingen av RISC-V Foundation och dess medlemmar.[2]

Arkitekturen designades för att vara flexibel och enkel att utöka. Ett av de ursprungliga mÄlen med utvecklingen av RISC-V var att underlÀtta forskning och utbildning kring processorarkitekturer.[1]

Den mest grundlÀggande formen av RISC-V (RV32I eller RV64I) har endast ett fÄtal instruktioner som utför nÄgra vanliga heltalsoperationer och lÀser och skriver till minnet, med mera. Andra funktioner definieras i separata tillÀgg som Àr valfria att implementera.

För att underlÀtta utvecklingen av program till RISC-V har en delmÀngd av standardtillÀggen utsetts till "general-purpose". Dessa tillÀgg Àr:

  • "I": GrundlĂ€ggande heltalsinstruktioner.
  • "M": Instruktioner för heltalsmultiplikation.
  • "A": Instruktioner för atomisk minnesmodifikation.
  • "F": Instruktioner för 32-bitars flyttalsberĂ€kningar + nya register för 32-bitars flyttal.
  • "D": Instruktioner för 64-bitars flyttalsberĂ€kningar + flyttalsregistren har plats för 64 bitar.
  • "Zicsr": LĂ€gger till 4096 kontroll- och statusregister.
  • "Zifencei": LĂ€gger till instruktionen fence.i som synkroniserar skrivningar till instruktionsminnet.

KörlÀgen

[redigera | redigera wikitext]

En processorkÀrna i RISC-V kan innehÄlla en eller flera hÄrdvarutrÄdar (engelska: hardware thread eller hart).

En hÄrdvarutrÄd har upp till tre olika lÀgen som den kan köras i: machine (M), supervisor (S) samt user (U). Det enda av dessa som mÄste stödas Àr machine-lÀget men för att kunna köra vanliga operativsystem (exempelvis Linux) behövs oftast alla tre.

NÀr processorn startas börjar alla hÄrdvarutrÄdar att exekvera i machine-lÀget pÄ en implementationsdefinierad minnesadress.

Instruktioner

[redigera | redigera wikitext]

En instruktion har oftast storleken 32 bitar (bÄde i RV32 och RV64), eller 16 bitar om komprimerade instruktioner anvÀnds.

De flesta instruktioner kan inte lÀsa eller skriva till minnet, utan bara till register. För att lÀsa eller skriva till minnet anvÀnds separata load- och store-instuktioner.

Det finns Àven ett antal pseudoinstruktioner definierade. Dessa instruktioner har inga egna kodningar, utan Àr endast alias för en eller flera andra instruktioner.

RISC-V definierar processorregister x0-31 för heltal, f0-31 för flyttal, pc (programrÀknare) samt ett antal kontroll- och statusregister. Storleken pÄ heltalsregistren och programrÀknaren Àr 64 bitar i RV64 och 32 bitar i RV32. Storleken pÄ flyttalsregistren Àr 64 bitar om D-tillÀgget anvÀnds, annars 32 bitar om endast F-tillÀgget anvÀnds.

NamnABI-namnBeskrivning
32 Heltalsregister
x0zeroAlltid 0 vid lÀsning. Inget hÀnder vid skrivning.
x1raReturadress
x2spStackpekare
x3gpGlobal pekare
x4tpTrÄdpekare
x5t0TemporÀr / alt. lÀnkregister
x6-7t1-2TemporÀra
x8s0/fpSparat register / rampekare
x9s1Sparat register
x10-11a0-1Funktionsargument / returvÀrden
x12-17a2-7Funktionsargument
x18-27s2-11Sparade register
x28-31t3-6TemporÀra
32 Flyttalsregister
f0-7ft0-7TemporÀra
f8-9fs0-1Sparade register
f10-11fa0-1Funktionsargument / returvÀrden
f12-17fa2-7Funktionsargument
f18-27fs2-11Sparade register
f28-31ft8-11TemporÀra

Varje hÄrdvarutrÄd har en adressrymd tillgÀnglig. En adress kan antingen vara oanvÀndbar eller leda till antingen primÀrminne eller en annan enhet. Byteordningen som anvÀnds i RISC-V Àr little-endian.

Det finns ingen garanti att minnesÄtkomster som utförs av en hÄrdvarutrÄd kommer att ses i samma ordning av andra hÄrdvarutrÄdar eller andra enheter som kan komma Ät minnet. För att garantera ordningen behöver en hÄrdvarutrÄd anvÀnda fence-instruktioner. En fence-instruktion kan göra sÄ att en instruktion som utförs före fence och en instruktion som utförs efter inte kan se ut att ha utförts i motsatt ordning av andra hÄrdvarutrÄdar eller enheter.

  1. 1 2 3 ”Specifications - RISC-V Foundation”. https://riscv.org/specifications/. LĂ€st 27 oktober 2019.
  2. ↑ ”RISC-V Foundation - RISC-V Foundation”. Arkiverad frĂ„n originalet den 10 april 2019. https://web.archive.org/web/20190410201639/https://riscv.org/risc-v-foundation/. LĂ€st 27 oktober 2019.

Externa lÀnkar

[redigera | redigera wikitext]