Wiele dzisiejszych architektur powstało podczas wieloletniego procesu udoskonalania i tworzenia coraz lepszych rozwiązań, aby były one jak najbardziej doskonałe. Firmy odpowiedzialne za daną architekturę wymagają opłat licencyjnych za wykorzystanie ich dzieła w produkcie. Czy jest więc możliwe, stworzenie architektury, która była by całkowicie za darmo i jednocześnie mogła konkurować z istniejącymi już na rynku firmami? Jak najbardziej i jednym (ale nie jedynym) tworem tego typu jest Risc-V, open source ISA.
Czym dokładnie jest ISA? Jest to teoretyczny opis działania procesora. W ISA możemy znaleźć między innymi:
- listę rozkazów
- typy danych
- dostępne tryby adresowania
- ilość dostępnych dla programisty rejestrów
- zasady obsługi wyjątków i przerwań
- obsługa poziomów uprzywilejowania, wirtualizacji i innych elementów wymaganych przez systemy operacyjne (nie mylić z RTOS).
Fundacja Risc-V wspólnie z ponad 200 firmami rozwija ISA , które będzie bardzo elastyczne a jednocześnie niezawodne. Ciekawą cechą Risc-V jest skalowalność. Nie ma większych problemów by na bazie Risc-V stworzyć bardzo malutki 32 bitowy układ do zastosowań embedded oraz spory procesor na którym można odpalić 64 bitowy system operacyjny. Dla porównania w ARM cortex-A mamy dwa różne zestawy instrukcji, a rdzenie z armv8.x mogą pracować co prawda w trybie 32bit lub 64bit jednak oba tryby posiadają znaczące różnice w rejestrach systemowych.
Razem z mniejszą złożonością ISA oraz modularnym podejściem do zagadnienia, fundacja Risc-V zapewniła że poszczególne zestawy instrukcji podstawowych oraz rozszerzonych (po ich zaakceptowaniu) zostaną „zamrożone”. Oznacza to że w założeniu kod napisany na Risc-V odpali się na każdym podobnym układzie czy to dziś czy za kilka lat. Jednocześnie uproszczone ISA zapewnia mniejszą złożoność hardware samego rdzenia, a co za tym idzie znacznie mniejszą wymaganą powierzchnię. Daje to nadzieję na bardzo tanie układy w bardzo malutkich obudowach.
Oczywiście Risc-V nie jest tylko teoretycznym rozważaniem i jeśli ktoś posiada wiedzę i umiejętności w FPGA, może własnoręcznie syntezować własny rdzeń. Niestety nie rozpiszę się na ten temat, gdyż ja nie posiadam ani wiedzy, ani doświadczenia jeśli chodzi o FPGA.
Nazwy układów z architekturą risc-V mają odzwierciedlenie w zawartości samego układu. Weźmy dla przykładu RV32EMAC. RV oznacza architekturę risc-V, 32 jest wartością ilu bitowy jest rdzeń, E oznacza wykorzystanie podstawowego Embeddedowego zestawu instrukcji całkowitoliczbowych (największymi równicami do RV32I jest zmniejszona ilość rejestrów (do 16) oraz usunięcie liczników (counters) wymaganych w wersji RV32I), M instrukcje mnożenia oraz dzielenia (całkowitoliczbowe), A instrukcje atomowe, C instrukcje skompresowane.
Ograniczona ilość rejestrów do 16, pozwoliła na zaoszczędzeniu przestrzeni układu (nie wliczając pamięci oraz peryferiów) o 25%, jednak z tego powodu do wersji E, nie przewidziano możliwości dodatnia instrukcji dla liczb zmiennoprzecinkowych.
W celu przystępnego przetestowania architektury Risc-V polecam płytkę Hifive1 lub gdy piszę te słowa dostępnego w przedsprzedaży Hifive1 Rev B. SiFive przygotował własne wydanie Eclipse – FreedomStudio, dzięki niemu w bardzo prosty sposób możemy postawić swoje kroki w świecie Risc-V.
Zastanawiam się od dłuższego czasu co myśleć o tej architekturze. Na pewno jest przemyślana i warta uwagi. Otwarte źródła nie tylko dla ISA ale również IP core, pozwalają syntezować dowolny core za darmo na FPGA. Daje to możliwość w stosunkowo prosty sposób nauczenia się jak działa RISCowy procesor na poziomie samej elektroniki.
Aktualnie jest to dość niszowa architektura, jednak zainteresowanie wielu dużych firm, które aktywnie pracują nad własnymi produktami na bazie Risc-V, może dawać nadzieje że w przyszłości będą to bardziej popularne układy. Aktualne układy demonstracyjne pokroju HiFive nie odstraszają cenowo, co również może dawać nadzieję na to, że układy produkowane w większym nakładzie będą bardzo konkurencyjne cenowo.
Dość sporym problemem może być to, że Risc-V nie należy porównywać do układów pokroju AVR czy ARM cortex-m a do cortex-A czy SPARC. A trzeba pamiętać, że ARM z swoimi cortex-A bardzo silnie zdominował rynek projektów embedded. Czy Risc-V uda się zdobyć jakąś część z rynku embedded? Mam nadzieję, że tak. Aktualnie mamy bardzo niezdrową sytuację gdy jedna firma przejęła bardzo dużą część rynku. Układ, który z definicji jest łatwo skalowalny od maleńkich układów embeddowych poprzez serwery i superkomputery jest czymś wartym uwagi.
Czy dla programistów oznacza to jakieś zmiany? Zdecydowanie nie, mamy wsparcie dla klasycznych toolchainów pokroju GCC, Clang czy LLVM. Nauczenie się assembly w wypadku Risc-V jest naprawdę trywialne, można by rzec że jest to prawdziwy RISC
Risc-V jest czymś więcej niż tylko kolejną architekturą, jest to twór na którym można się nauczyć praktycznie projektować procesory i to w wydaniu open source. Dzięki wsparciu naprawdę dużej ilości firm, które inwestują w tą architekturę, może ona stać się realną konkurencją dla ARM.
A co wy myślicie o tej architekturze? Czego byście się chcieli o niej dowiedzieć bardziej szczegółowo? Zapraszam do dyskusji.
Fajne? Ranking DIY
