Co to jest procesor RISC V: architektura, działanie i jego zastosowania

Wypróbuj Nasz Instrument Do Eliminowania Problemów





RISC V to architektura zestawu instrukcji opracowana przez Uniwersytet Kalifornijski w Berkeley. Koncepcja RISC była motywowana faktem, że większość instrukcji procesora nie była wykorzystywana przez większość programów komputerowych. Tak więc w projektach wykorzystano niepotrzebną logikę dekodowania przetwórcy , zużywając więcej energii, a także powierzchnię. Aby skrócić zestaw instrukcji i zainwestować więcej w zasoby rejestru, Procesor RISC V został zaimplementowany.


Ta technologia została zauważona przez wielu gigantów technologicznych i start-upy, ponieważ jest całkowicie otwarta i bezpłatna. Większość typów procesorów jest dostępna z umową licencyjną, jednak z tym typem procesora; każdy może stworzyć swój nowy projekt procesora. Dlatego w tym artykule omówiono ogólny zarys procesora RISC V – działanie i jego zastosowania.



Co to jest procesor RISC V?

W procesorze RISC V termin RISC oznacza „komputer ze zredukowanym zestawem instrukcji”, który wykonuje kilka instrukcji komputerowych, podczas gdy „V” oznacza piątą generację. Jest to sprzętowy ISA o otwartym kodzie źródłowym (architektura zestawu instrukcji) oparty na ustalonej zasadzie RYZYKO .

W porównaniu z innymi projektami ISA, ten ISA jest dostępny z licencją open source. Tak więc wiele firm produkcyjnych ogłosiło i dostarczyło również sprzęt RISC-V z systemami operacyjnymi typu open source.



Jest to nowa architektura i jest dostępna na otwartych, nieograniczających i bezpłatnych licencjach. Ten procesor ma szerokie wsparcie ze strony producentów chipów i urządzeń. Jest więc głównie zaprojektowany tak, aby można go było dowolnie rozszerzać i dostosowywać do użytku w wielu aplikacjach.

Historia RISC V

RISC został wynaleziony przez prof. Davida Pattersona około 1980 roku na Uniwersytecie Kalifornijskim w Berkeley. Prof. David wraz z prof. Johnem Hennessy przedstawili swoje wysiłki w dwóch książkach, a mianowicie „Computer Organization and Design” oraz „Computer Architecture at Stanford University. Tak więc otrzymali ACM A.M. Nagroda Turinga w roku 2017.

Od roku 1980 do roku 2010 rozpoczęto badania nad rozwojem piątej generacji RISC, które ostatecznie zostały zidentyfikowane jako RISC-V, co jest wymawiane jako pięć ryzyka.

RISC V Architektura i praca

Poniżej przedstawiono architekturę RV12 RISC V. RV12 jest wysoce konfigurowalny dzięki jednordzeniowemu procesorowi RISC zgodnemu z RV32I i RV64I, który jest używany w polach osadzonych. RV12 pochodzi również z rodziny 32- lub 64-bitowych procesorów, w zależności od zestawu instrukcji standardu przemysłowego RISC-V.

RV12 po prostu realizuje architekturę Harvarda, zapewniając jednoczesny dostęp do instrukcji i pamięci danych. Zawiera również 6-stopniowy potok, który pomaga zoptymalizować nakładanie się między wykonywaniem, a także dostęp do pamięci w celu poprawy wydajności. Ta architektura obejmuje głównie przewidywanie gałęzi, pamięć podręczną danych, jednostkę debugowania, pamięć podręczną instrukcji i opcjonalne jednostki mnożnika lub dzielnika.

  Architektura procesora RISC
Architektura procesora RISC

Główne cechy RV12 RISC V to:

  • Jest to standardowy zestaw instrukcji branżowych.
  • Sparametryzowany 32- lub 64-bitowymi danymi.
  • Posiada precyzyjne i szybkie przerwania.
  • Niestandardowe instrukcje pozwalają na dodanie własnych akceleratorów sprzętowych.
  • Wykonanie pojedynczego cyklu.
  • Sześciostopniowy rurociąg ze złożeniem optymalizującym.
  • Wsparcie z ochroną pamięci.
  • Opcjonalne lub sparametryzowane pamięci podręczne.
  • Niezwykle sparametryzowany.
  • Użytkownicy mogą wybrać 32/64-bitową jednostkę prognozowania danych i oddziałów.
  • Użytkownicy mogą wybrać pamięć podręczną instrukcji/danych.
  • Wybierana przez użytkownika struktura, rozmiar i architektura pamięci podręcznej.
  • Obsługa dzielnika sprzętowego lub mnożnika przez opóźnienie zdefiniowane przez użytkownika.
  • Architektura magistrali jest elastyczna, która obsługuje Wishbone i AHB.
  • Ta konstrukcja optymalizuje moc i rozmiar.
  • Projekt jest całkowicie sparametryzowany, co zapewnia kompromisy w zakresie wydajności lub mocy.
  • Bramkowana konstrukcja CLK w celu zmniejszenia mocy.
  • Wsparcie oprogramowania według standardów branżowych.
  • Symulator architektoniczny.
  • Środowisko Eclipse IDE jest używane w systemach Linux/Windows.

Rurociąg realizacji RISC V

Obejmuje pięć etapów, takich jak IF (pobieranie instrukcji), ID (dekodowanie instrukcji), EX (wykonywanie), MEM (dostęp do pamięci) i WB (odpisywanie do rejestru).

Pobieranie instrukcji

W etapie Instruction Fetch lub IF pojedyncza instrukcja jest odczytywana z licznika programu (PC) i pamięci instrukcji, która jest aktualizowana do następnej instrukcji.

Instrukcja wstępnego dekodowania

Gdy obsługa RVC jest dozwolona, ​​etap wstępnego dekodowania instrukcji dekoduje 16-bitową skompresowaną instrukcję na natywną instrukcję 32-bitową.

Dekodowanie instrukcji

Na etapie dekodowania instrukcji (ID) plik rejestru jest dozwolony i podejmowane są decyzje o pominięciu kontroli.

Wykonać

W fazie Execute wynik jest obliczany dla instrukcji ALU, DIV, MUL, pamięć dozwolona dla instrukcji Store lub Load, a gałęzie i skoki są mierzone względem ich oczekiwanych wyników.

Pamięć

Na tym etapie pamięci dostęp do pamięci odbywa się za pośrednictwem potoku. Włączenie tej fazy zapewnia wysoką wydajność rurociągu.

Odpisać

Na tym etapie wynik etapu realizacji jest zapisywany do Pliku Rejestru.

Predyktor gałęzi

Ten procesor zawiera jednostkę przewidywania rozgałęzień lub BPU, która jest używana do przechowywania danych z przeszłości, aby kierować procesorem RISC V w podejmowaniu decyzji, czy konkretna gałąź jest podjęta, czy nie. Te dane predyktora są po prostu aktualizowane po wykonaniu gałęzi.

Jednostka ta zawiera różne parametry, które determinują jej zachowanie. Na przykład, HAS_BPU służy do określenia, czy gałąź przewiduje obecność jednostki, BPU_GLOBAL_BITS określi, ile przeszłych bitów powinno zostać użytych, a BPU_LOCAL_BITS określi, ile LSB licznika programu powinno zostać użyte. Kombinacja BPU_LOCAL_BITS i BPU_GLOBAL_BITS utworzy wektor, który jest używany głównie do adresowania tablicy przewidywania rozgałęzień.

Pamięć podręczna danych

Służy to głównie do przyspieszenia dostępu do pamięci danych poprzez buforowanie nowo dostępnych lokalizacji pamięci. Jest to w stanie obsłużyć dostęp do pół słowa, bajtu i słowa, gdy  XLEN = 32, jeśli znajdują się na własnych granicach. Jest również w stanie obsłużyć dostęp do pół słowa, bajtu, słowa i podwójnego słowa, gdy XLEN=64, jeśli znajdują się na własnych granicach.

Podczas braku pamięci podręcznej cały blok można zapisać z powrotem do pamięci, więc w razie potrzeby do pamięci podręcznej można załadować nowy blok. Pamięć podręczna danych jest wyłączana przez ustawienie parametru DCACHE_SIZE na zero. Następnie lokalizacje pamięci są dostępne bezpośrednio przez Interfejs danych .

Pamięć podręczna instrukcji

Jest to używane głównie do przyspieszenia pobierania instrukcji poprzez buforowanie nowo pobranych instrukcji. Ta pamięć podręczna służy do pobierania jednej paczki na każdy cykl na dowolnej granicy 16-bitowej, ale nie na granicy bloku. Podczas braku pamięci podręcznej cały blok może zostać załadowany z pamięci instrukcji. Konfigurację tej pamięci podręcznej można wykonać w oparciu o potrzeby użytkownika. Można konfigurować rozmiar pamięci podręcznej, algorytm zastępowania i długość bloku.

Cykl instrukcji zostanie wyłączony przez ustawienie ICACHE_SIZE na zero. Następnie paczki są pobierane bezpośrednio z pamięci poprzez Interfejs instrukcji.

Jednostka debugowania

Debug Unit pozwoli środowisku debugowania zatrzymać i zbadać procesor. Główne funkcje to śledzenie gałęzi, śledzenie jednoetapowe do 8 punktów przerwań sprzętowych.

Zarejestruj plik

Jest to zaprojektowane z 32 lokalizacjami rejestrów od X0 do X31, gdzie rejestr X9 jest zawsze równy zero. Plik rejestru zawiera 1 port zapisu i 2 porty odczytu.

Konfigurowalny interfejs

Jest to interfejs zewnętrzny, w którym ten procesor obsługuje różne interfejsy magistrali zewnętrznej.

Jak działa RISC V?

RISC-V to architektura zestawu instrukcji zakorzeniona w zasadach RISC (komputer o zredukowanym zestawie instrukcji). Ten procesor jest bardzo wyjątkowy, a także rewolucyjny, ponieważ jest darmowym, powszechnym i otwartym ISA, w którym można rozwijać sprzęt, można przenosić oprogramowanie i projektować procesory, aby go obsługiwać.

Różnica między B/W RISC V a MIPS

Różnica między RISC V i MIPS obejmuje następujące elementy.

RYZYKO V

MIPS

Termin RISC V oznacza komputer z ograniczonym zestawem instrukcji, gdzie „V” oznacza piątą generację. Termin „MIPS” oznacza „milion instrukcji na sekundę”.
RISC-V po prostu pozwala producentom mniejszych urządzeń projektować sprzęt bez płacenia. MIPS pozwala producentowi zmierzyć prędkość procesora płacąc, ponieważ nie jest to bezpłatne.
MIPS jest skutecznie martwy. RISC-V nie jest skutecznie martwy.
Ten procesor udostępnia instrukcje rozgałęzienia do porównywania dwóch rejestrów. MIPS zależy od instrukcji porównania, która lokalizuje rejestr na 1 lub 0 na podstawie tego, czy kontrast jest prawdziwy.
Schemat kodowania ISA jest stały i zmienny w RISC V. Schemat kodowania ISA jest naprawiony w MIPS
Rozmiar zestawu instrukcji to 16-bitowy lub 32-bitowy lub 64-bitowy lub 128-bitowy. Rozmiar zestawu instrukcji to 32-bitowy lub 64-bitowy.
Ma 32 rejestry ogólnego przeznaczenia i zmiennoprzecinkowe Posiada 31 rejestrów ogólnego przeznaczenia i zmiennoprzecinkowych.
Ma 26 operacji zmiennoprzecinkowych pojedynczej i podwójnej precyzji. Ma 15 operacji zmiennoprzecinkowych pojedynczej i podwójnej precyzji.

Różnica B/W RISC V vs ARM

Różnica między RISC V a ARM obejmuje następujące elementy.

RYZYKO V

RAMIĘ

RISC-V jest oprogramowaniem typu open source, więc nie wymaga żadnej licencji. ARM jest źródłem zamkniętym, więc wymaga licencji.
Jest to nowa platforma procesorowa, więc wsparcie dla oprogramowania i środowisk programistycznych jest bardzo małe. ARM ma bardzo dużą społeczność internetową, która obsługuje biblioteki i struktury, aby pomóc projektantom docelowym na różnych platformach, takich jak mikroprocesory, mikrokontrolery, a także serwery.
Chipy oparte na RISC V zużywają 1 wat mocy. Chipy oparte na ARM zużywają poniżej 4 watów mocy.
Posiada stały i zmienny system kodowania ISA. Posiada stały system kodowania ISA.
Rozmiar zestawu instrukcji RISC V wynosi od 16 bitów do 128 bitów. Jego rozmiar instrukcji waha się od 16 bitów do 64 bitów.
Zawiera 32 rejestry ogólnego przeznaczenia i zmiennoprzecinkowe. Zawiera 31 rejestrów ogólnego przeznaczenia i zmiennoprzecinkowych.
Ma 26 operacji zmiennoprzecinkowych o pojedynczej precyzji. Ma 33 operacje zmiennoprzecinkowe o pojedynczej precyzji.
Ma 26 operacji zmiennoprzecinkowych podwójnej precyzji. Ma 29 operacji zmiennoprzecinkowych podwójnej precyzji.

Kod RISC V Verilog

Kod Verilog pamięci instrukcji dla RISC jest pokazany poniżej.

// Kod Verilog dla procesora RISC
// Kod Verilog dla pamięci instrukcji

moduł Instrukcja_Pamięć(
wejście[15:0] szt,
instrukcja wyjściowa[15:0]
);

reg [`kol – 1:0] pamięć [`wier_i – 1:0];
przewód [3 : 0] rom_addr = pc[4 : 1];
Inicjał
zaczynać
$readmemb(“./test/test.prog”, pamięć,0,14);
koniec
instrukcja przypisania = memory[rom_addr];

moduł końcowy

Kod Verilog dla 16-bitowego procesora RISC V:

moduł Risc_16_bit(
wejście Clk
);

skok drutu,bne,beq,mem_read,mem_write,alu_src,reg_dst,mem_to_reg,reg_write;
drut[1:0] alu_op;
przewód [3:0] kod op;

// Ścieżka danych

Datapath_Unit DU
(
.clk(clk),
.skacz skacz),
.żaba(żaba),
.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)
);

// Jednostka sterująca
Control_Kontrola jednostki
(
.opcode(opcode),
.reg_dst(reg_dst),
.mem_to_reg(mem_to_reg),
.alu_op(alu_op),
.skacz skacz),
.bne(bne),
.żaba(żaba),
.mem_read(mem_read),
.mem_write(mem_write),
.alu_src(alu_src),
.reg_write(reg_write)
);
moduł końcowy

Zestawy instrukcji

Zestawy instrukcji RISC V są omówione poniżej.

Działania arytmetyczne

Poniżej wymieniono operacje arytmetyczne RISC V.

Mnemoniczny Rodzaj Instrukcja Opis
DODAJ rd, rs1, rs2

R

Dodać rdß rs1 + rs2
SUB rd, rs1, rs2

R

Odejmować rdß rs1 – rs2
ADDI rd, rs1, imm12

I

Dodaj natychmiast rdß rs1 + imm12
SLT rd, rs1, rs2

R

Ustaw mniej niż rdß rs1 -< rs2
SLTI rd, rs1, imm12

I

Ustaw mniej niż natychmiast rdß rs1 -< imm12
SLTU rd, rs1, rs2

R

Ustaw mniej niż bez znaku rdß rs1 -< rs2
SLTIU rd, rs1, imm12

I

Ustaw mniej niż natychmiastowe bez podpisu rdß rs1 -< imm12
LUI rd, imm20

W

Załaduj górną natychmiast rdß imm20<<12
AUIP rd, imm20

W

Dodaj górną natychmiast do komputera rdß PC+imm20<<12

Operacje logiczne

Operacje logiczne RISC V są wymienione poniżej.

Mnemoniczny Rodzaj Instrukcja Opis
ORAZ rd, rs1, rs2

R

ORAZ rdß rs1 i rs2
LUB rd, rs1, rs2

R

LUB rdß rs1 | rs2
XOR rd, rs1, rs2

R

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

I

I natychmiastowe rdß rs1 i imm2
ORI rd, rs1, imm12

I

LUB Natychmiastowe rdß rs1 | imm12
OXRI rd, rs1, imm12

I

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

R

Przesunięcie w lewo logiczne rdß rs1 << rs2
SRL rd, rs1, rs2

R

Przesunięcie w prawo logiczne rdß rs1 >> rs2
RAS rd, rs1, rs2

R

Arytmetyka przesunięcia w prawo rdß rs1 >> rs2
SLLI rd, rs1, shamt

I

Shift logiczny natychmiastowy w lewo rdß rs1 << shamt
SRLI rd, rs1, shamt

I

Przesuń w prawo logicznie natychmiast rdß rs1 >> shamt
SRAI rd, rs1, shamt

I

Przesunięcie arytmetyczne w prawo natychmiast rdß rs1 >> shamt

Operacje ładowania/przechowywania

Operacje ładowania/przechowywania RISC V są wymienione poniżej.

Mnemoniczny Rodzaj Instrukcja Opis
LD rd, imm12 (rs1)

I

Załaduj podwójne słowo rdß mem [rs1 +imm12]
LW rd, imm12 (rs1)

I

Załaduj słowo rdß mem [rs1 +imm12]
lewa strona, imm12 (rs1)

I

Załaduj w połowie rdß mem [rs1 +imm12]
LB rd, imm12 (rs1)

I

Załaduj bajt rdß mem [rs1 +imm12]
LWU rd, imm12 (rs1)

I

Załaduj słowo bez znaku rdß mem [rs1 +imm12]
LHU rd, imm12 (rs1)

I

Załaduj pół słowa bez znaku rdß mem [rs1 +imm12]
LBU rd, imm12 (rs1)

I

Załaduj bajt bez znaku rdß mem [rs1 +imm12]
SD rs2, imm12 (rs1)

S

Przechowuj podwójne słowo rs2 do mem [rs1 +imm12]
SW rs2, imm12 (rs1)

S

Przechowuj słowo rs2 (31:0) do mem [rs1 +imm12]
SH rs2, imm12 (rs1)

S

Przechowuj w połowie drogi rs2 (15:0) do mem [rs1 +imm12]
SB rs2, imm12 (rs1)

S

Przechowuj bajt rs2 (15:0) do mem [rs1 +imm12]
SRAI rd, rs1, shamt

I

Przesunięcie arytmetyczne w prawo natychmiast rs2 (7:0) do mem [rs1 +imm12]

Operacje rozgałęzione

Operacje rozgałęziania RISC V są wymienione poniżej.

Mnemoniczny Rodzaj Instrukcja Opis
BEQ rs1, rs2, imm12

SB

Oddział równy Jeśli rs1== rs2

PC ß PC+imm12

BNE rs1, rs2, imm12

SB

Oddział nie jest równy Jeśli rs1!= rs2

PC ß PC+imm12

BGE  rs1, rs2, imm12

SB

Rozgałęzienie większe lub równe Jeśli rs1>= rs2

PC ß PC+imm12

BGEU rs1, rs2, imm12

SB

Oddział większy lub równy unsigned Jeśli rs1>= rs2

PC ß PC+imm12

BLT rs1, rs2, imm12

SB

Oddział mniej niż Jeśli rs1< rs2

PC ß PC+imm12

BLTU rs1, rs2, imm12

SB

Oddział mniej niż „niepodpisany” Jeśli rs1< rs2

PC ß PC+imm12 <<1

JAL rd, imm20

UJ

Skocz i połącz rdßPC+4
PCß PC+imm20
JALR rd, imm12(rs1)

I

Rejestr skoków i połączeń rdßPC+4
PCß rs1+imm12

Zalety

The zalety RISC V procesor obejmują następujące elementy.

  • Korzystając z RISCV, możemy zaoszczędzić czas rozwoju, rozwoju oprogramowania, weryfikacji itp.
  • Ten procesor ma wiele zalet, takich jak prostota, otwartość, modułowość, czysta konstrukcja i rozszerzalność.
  • Jest to obsługiwane przez kilka kompilatorów językowych, takich jak GCC (GNU Compiler Collection), kompilator bezpłatnego oprogramowania i poprzez System operacyjny Linux .
  • Może to być swobodnie wykorzystywane przez firmy ze względu na brak opłat licencyjnych, brak opłat licencyjnych i brak powiązanych łańcuchów.
  • Procesor RISC-V nie zawiera żadnych nowych ani innowacyjnych funkcji, ponieważ po prostu przestrzega ustalonych zasad RISC.
  • Podobnie jak kilka innych ISA, ta specyfikacja procesora po prostu definiuje różne poziomy zestawów instrukcji. Zawiera więc warianty 32- i 64-bitowe, a także rozszerzenia zapewniające obsługę instrukcji zmiennoprzecinkowych.
  • Są bezpłatne, proste, modułowe, stabilne itp.

Niedogodności

The wady procesora RISC V obejmują następujące elementy.

  • Złożone instrukcje są często używane przez kompilatorów i programistów.
  • O/p RISC może się zmieniać w zależności od kodu, gdy kolejne instrukcje w pętli zależą od wcześniejszej instrukcji do wykonania.
  • Procesory te muszą szybko zapisywać różne instrukcje, co wymaga dużej pamięci podręcznej, aby odpowiadać na instrukcje w odpowiednim czasie.
  • Pełne funkcje, możliwości i korzyści RISC zależą głównie od architektury.

Aplikacje

The zastosowania RISC V edytor obejmują następujące elementy.

  • RISC-V jest używany w systemach wbudowanych, sztucznej inteligencji i uczeniu maszynowym.
  • Te procesory są używane w aplikacjach systemów wbudowanych o wysokiej wydajności.
  • Ten procesor jest odpowiedni do użycia w niektórych określonych dziedzinach, takich jak przetwarzanie brzegowe, sztuczna inteligencja i aplikacje do przechowywania.
  • RISC-V jest ważny, ponieważ umożliwia mniejszym producentom urządzeń projektowanie sprzętu bez płacenia.
  • Ten procesor po prostu pozwala naukowcom i programistom projektować, a także prowadzić badania za pomocą swobodnie dostępnej architektury ISA lub zestawu instrukcji.
  • Zastosowania RISC V obejmują zarówno małe wbudowane mikrokontrolery, jak i komputery stacjonarne i superkomputery, w tym procesory wektorowe.

Tak więc jest to przegląd procesora RISC V – architektura, praca z aplikacjami. Oto pytanie do Ciebie, czym jest procesor CISC?