OVPsim - OVPsim
| Deweloper (y) | Imperas |
|---|---|
| Wersja stabilna | 20210408.0 / 8 kwietnia 2021
|
| System operacyjny | Windows , Linux |
| Rodzaj | Emulator |
| Licencja | Zastrzeżona , licencja Apache w wersji 2.0 dla modeli |
| Stronie internetowej | www |
OVPsim to wieloprocesorowy emulator platformy (często nazywany symulatorem całego systemu ) służący do uruchamiania niezmienionych plików binarnych produkcyjnych docelowego sprzętu. Posiada publiczne API umożliwiające użytkownikom tworzenie własnych modeli procesorów , urządzeń peryferyjnych i platform. Różne modele są dostępne jako otwarte oprogramowanie. OVPsim jest kluczowym elementem inicjatywy Open Virtual Platforms (OVP), organizacji stworzonej w celu promowania wykorzystania otwartych platform wirtualnych do tworzenia oprogramowania wbudowanego. OVPSim wymaga rejestracji OVP do pobrania.
Koncesjonowanie
OVPsim jest rozwijany i utrzymywany przez Imperas . Podstawową platformą symulacyjną jest oprogramowanie własnościowe ; jest dostępny bezpłatnie do użytku niekomercyjnego. Komercyjne użytkowanie wymaga taniej licencji firmy Imperas na pokrycie kosztów utrzymania. Różne modele procesorów, urządzeń peryferyjnych i platform są dostępne jako bezpłatne oprogramowanie na licencji Apache w wersji 2.0 .
Detale
Istnieją trzy główne komponenty OVP: modele open source , szybki symulator OVPsim i API do modelowania . Te komponenty zostały zaprojektowane tak, aby ułatwić montaż wielordzeniowych, heterogenicznych lub jednorodnych platform ze złożonymi hierarchiami pamięci, systemami pamięci podręcznej i warstwami oprogramowania wbudowanego, które może działać z setkami MIPS na standardowych komputerach stacjonarnych. OVPSim jest uważany za dokładny instrukcje , ale nie za dokładny cykl. Istnieje wiele przykładów komponentów i kompletnych platform wirtualnych, które mogą uruchomić jądro Linuksa w mniej niż 5 sekund na stronie głównej OVP.
Modele open source
W ramach OVP istnieje kilka różnych kategorii modeli. Modele te są dostarczane zarówno jako wstępnie skompilowany kod obiektowy, jak iw niektórych przypadkach jako pliki źródłowe. OVPsim nie dostarcza już kodu źródłowego dla modeli procesorów ARM i MIPS. Obecnie istnieją modele procesorów ARM (procesory korzystające z zestawów instrukcji ARMv4, ARMv5, ARMv6, ARMv7, ARMv8) aż do ARM Cortex-A72MPx4 (w tym modele wieloklastrowe ARMv8 z GICv3), Imagination MIPS (procesory używające MIPS32 , MIPS64 , microMIPS, nanoMIPS i MIPS R6) aż do rdzeni microAptiv, interAptiv, proAptiv i Warrior, serii Synopsys Virage ARC600 / ARC700 i ARC EM, Renesas v850 , RH850, RL78 i m16c, PowerPC , Altera Nios II , Xilinx MicroBlaze , RISC-V (modele korzystające z 32-bitowego RV32I, RV32M, RV32IM, RV32A, RV32IMA, RV32IMAC, RV32F, RV32D, RV32E, RV32EC, RV32C, RV32G, RV32GC, RV32GCN, RV32IMAFD, RV32F, RV32D, RV32E, RV32EC, RV32C, RV32G, RV32GC, RV32GCN, RV32IMAFD, i RV64D64, RV64V64, RV32IMAFD64 , RV64G, RV64GC, RV64GCN, RV64IMAFD ISA), Andes Technology N25 / NX25, N25F / NX25F, A25 / AX25, A25F / AX25F, Microsemi CoreRISCV / MiV-RV32IMA, SiFive E31, E5-U40, U54, U54 i rodziny OpenRisc . Grupa OpenHW używa OVPsim jako złotego odniesienia dla swoich rdzeni RISC-V CV32E40 typu open source. Istnieją również modele wielu różnych typów elementów systemu, w tym pamięci RAM, ROM, pamięci podręcznej i mostu. Istnieją modele urządzeń peryferyjnych, takie jak Ethernet MAC, USB, DMA, UART i FIFO. Dostępnych jest kilka różnych gotowych platform, w tym najpopularniejsze systemy operacyjne ucLinux , Linux , Android , FreeRTOS , Nucleus , Micrium.
Jednym z głównych zastosowań infrastruktury symulacji OVP jest możliwość tworzenia i symulacji niestandardowych modeli zbudowanych - albo od zera, albo przy użyciu jednego z modeli open source jako punktu wyjścia. Interfejsy API OVP są dostosowane do różnych typów modeli: procesorów, modeli behawioralnych urządzeń peryferyjnych i platform. Do pobrania dostępnych jest ponad 100 wariantów modeli źródłowych.
Symulator OVPsim
Symulator OVPsim jest dostępny jako odniesienie OVP i jest bezpłatny do użytku niekomercyjnego. Symulator wykorzystuje technologię dynamicznego tłumaczenia binarnego , aby osiągnąć bardzo wysokie prędkości symulacji. W niektórych przypadkach na zwykłych komputerach stacjonarnych możliwych jest ponad miliard symulowanych instrukcji na sekundę. OVPsim jest dostępny dla hostów x86 Windows i Linux .
OVPsim jest wyposażony w interfejs GDB RSP (Remote Serial Protocol), który umożliwia debugowanie aplikacji działających na symulowanych procesorach za pomocą dowolnego standardowego debuggera obsługującego ten interfejs GDB RSP. OVPsim zawiera graficzny debugger Imperas iGui, a także interfejs Eclipse IDE i CDT.
OVPsim można hermetyzować i wywoływać z innych środowisk symulacyjnych i jest standardowo dostarczany z plikami interfejsów dla C , C ++ i SystemC . OVPsim zawiera natywne pliki interfejsu SystemC TLM 2.0. Możliwe jest również hermetyzowanie starszych modeli procesorów i modeli behawioralnych, aby mogły być używane przez OVPsim.
Modelowanie API
Modele OVP są tworzone przy użyciu interfejsów API C / C ++ . Istnieją trzy główne interfejsy API: OP, VMI, BHM / PPM.
OP
OP API jest przeznaczone do kontrolowania, łączenia i obserwowania platform. Ten interfejs API można wywołać z C, C ++ lub SystemC. Platforma zapewnia podstawową strukturę projektu i tworzy, łączy i konfiguruje komponenty. Platforma określa również mapowanie adresów i oprogramowanie ładowane do procesorów. Dzięki OP bardzo łatwo jest określić bardzo złożone i kompletne platformy wielu różnych procesorów, pamięci lokalnych i współdzielonych, pamięci podręcznych, mostków magistrali, urządzeń peryferyjnych i wszystkich ich złożonych map adresów, przerwań oraz systemów operacyjnych i oprogramowania aplikacyjnego.
OP API zastąpiło ICM API w 2016 r. ICM API jest nadal dostępne na starszych platformach.
VMI
Modelowanie procesorów zapewnia interfejs API VMI. Te funkcje API zapewniają możliwość łatwego opisania zachowania procesora. Model procesora napisany w C przy użyciu VMI dekoduje instrukcję docelową, która ma być symulowana i tłumaczy ją na natywne instrukcje x86, które są następnie wykonywane na komputerze. VMI może być używany do modelowania architektur 8, 16, 32 i 64 bitowych. Istnieje mechanizm przechwytywania umożliwiający emulację wywołań funkcji w bibliotekach wykonawczych aplikacji (takich jak write, fstat itp.) Bez konieczności modyfikacji modelu procesora lub symulowanej aplikacji.
PPM i BHM
Składniki behawioralne, urządzenia peryferyjne i całe środowisko są modelowane przy użyciu kodu C i wywołań tych dwóch interfejsów API. Podstawą tych interfejsów API jest mechanizm planowania oparty na zdarzeniach, który umożliwia modelowanie czasu, zdarzeń i współbieżności. Modele urządzeń peryferyjnych zapewniają wywołania zwrotne, które są wywoływane, gdy oprogramowanie aplikacji działające na procesorach modelowanych w platformie uzyskuje dostęp do lokalizacji pamięci, w których urządzenie peryferyjne jest włączone.
Użytkownicy
OVPsim jest używany przez wiele placówek edukacyjnych w celu zapewnienia infrastruktury symulacyjnej do badań równoległych platform obliczeniowych, wspólnego projektowania sprzętu / oprogramowania, analizy wydajności systemów wbudowanych oraz jako podstawa rozwoju innych narzędzi wbudowanych. Jest również wykorzystywany do kursów edukacyjnych, aby umożliwić studentom opracowywanie i debugowanie oprogramowania aplikacyjnego oraz tworzenie platform wirtualnych i nowych modeli.
Szereg wiodących organizacji komercyjnych również wykorzystuje OVPSim jako podstawę swojej oferty produktowej. Technologia została licencjonowana przez MIPS Technologies w celu zapewnienia wsparcia modelowania dla serii wbudowanych procesorów w architekturze MIPS , funkcjonuje we współpracy z wiodącym dostawcą procesorów ARM i jest częścią gamy produktów Europractice zapewniających ogólny dostęp do europejskich uniwersytetów. Wersja OVPsim jest używana przez grupę roboczą ds.zgodności RISC-V Foundation jako symulator odniesienia. Wiodące firmy zajmujące się półprzewodnikami, takie jak Renesas, wykorzystywały ten symulator do prac związanych z rozwojem procesorów, zgodnie z informacjami przedstawionymi w czołowych publikacjach branży elektronicznej. Został wybrany przez NEPHRON +, projekt badawczy UE, ze względu na oprogramowanie i środowisko testowe. Firma VinChip Systems Inc. z Chennai w Indiach wykorzystała OpenOCD i OVPsim do opracowania prawdopodobnie pierwszego 32-bitowego procesora opracowanego w Indiach. Modele OVP i platformy wirtualne stanowią podstawę innych działań Imperas.