OVPsim
Deweloperzy | Imperas |
---|---|
Wersja stabilna | 20220727.0 / 27 lipca 2022
|
System operacyjny | Windowsa , Linuksa |
Typ | Emulator |
Licencja | Zastrzeżona licencja Apache w wersji 2.0 dla modeli |
Strona internetowa |
OVPsim to emulator platformy wieloprocesorowej (często nazywany symulatorem pełnego systemu ) służący do uruchamiania niezmienionych binariów produkcyjnych docelowego sprzętu. Posiada publiczne interfejsy API umożliwiające użytkownikom tworzenie własnych modeli procesorów , urządzeń peryferyjnych i platform. Różne modele są dostępne jako open source. OVPsim jest kluczowym elementem inicjatywy Open Virtual Platforms (OVP), organizacji utworzonej w celu promowania wykorzystania otwartych platform wirtualnych do tworzenia oprogramowania wbudowanego. OVPsim wymaga rejestracji OVP do pobrania.
Koncesjonowanie
OVPsim jest rozwijany i utrzymywany przez firmę Imperas. Podstawową platformą symulacji jest zastrzeżone oprogramowanie ; jest dostępny bezpłatnie do użytku niekomercyjnego. Użytkowanie komercyjne wymaga taniej licencji firmy Imperas na pokrycie kosztów konserwacji. Różne modele procesorów, urządzeń peryferyjnych i platform są dostępne jako bezpłatne oprogramowanie w ramach licencji Apache w wersji 2.0 .
Detale
Istnieją trzy główne komponenty OVP: modele open-source , szybki symulator OVPsim i interfejsy API do modelowania . Komponenty te zaprojektowano z myślą o ułatwieniu składania 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 szybkością setek MIPS na standardowych komputerach stacjonarnych. OVPSim jest uważany za dokładny w instrukcji , ale nie za dokładny w cyklu. Istnieje wiele przykładów komponentów i kompletnych platform wirtualnych, które mogą uruchomić 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 wynikowy, 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 dostępne są modele procesorów ARM (procesory wykorzystujące zestawy instrukcji ARMv4, ARMv5, ARMv6, ARMv7, ARMv8) aż do ARM Cortex-A72MPx4 (w tym wieloklastrowe modele ARMv8 z GICv3), Imagination MIPS ( procesory wykorzystujące MIPS32 , MIPS64 , zestawy instrukcji microMIPS, nanoMIPS i MIPS R6) aż do rdzeni microAptiv, interAptiv, proAptiv i Warrior, serie Synopsys Virage ARC600/ARC700 i ARC EM, Renesas v850 , RH850, RL78 i m16c, PowerPC , Altera Nios II , Xilinx MicroBlaze , RISC-V (modele wykorzystujące 32-bitowe RV32I, RV32M, RV32IM, RV32A, RV32IMA, RV32IMAC, RV32F, RV32D, RV32E, RV32EC, RV32C, RV32G, RV32GC, RV32GCN, RV32IMAFD i 64-bitowe RV64I, RV64M, RV 64IMAC, RV64F, RV64D, RV64C, RV64G, RV64GC , podzbiory RV64GCN, RV64IMAFD ISA), Andes Technology N25/NX25, N25F/NX25F, A25/AX25, A25F/AX25F, Microsemi CoreRISCV/MiV-RV32IMA, SiFive E31, E51, U54 , U54 -MC, Freedom U540, Codasip Series 1 , 3, 5, 7 rdzeni RISC-V, rdzeń Intel NiosV RISC-V, Texas Instruments TMS320 DSP i OpenRisc rodziny. Grupa OpenHW używa OVPsim jako złotego odniesienia dla rdzeni open source RISC-V CV32E40 i CV32E20. Istnieją również modele wielu różnych typów komponentów systemu, w tym pamięci RAM, pamięci ROM, pamięci podręcznej i mostka. 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 symulacyjnej OVP jest możliwość tworzenia i symulowania niestandardowych modeli — od zera lub 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 referencja OVP i jest bezpłatny do użytku niekomercyjnego. Symulator wykorzystuje technologię dynamicznej translacji binarnej , aby osiągnąć bardzo wysokie prędkości symulacji. Możliwe jest wykonanie ponad miliarda symulowanych instrukcji na sekundę, w niektórych przypadkach na zwykłych komputerach stacjonarnych. 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 jest dostarczany z graficznym debugerem Imperas iGui, a także z interfejsem Eclipse IDE i CDT.
OVPsim może być enkapsulowany i wywoływany z innych środowisk symulacyjnych i jest standardowo dostarczany z plikami interfejsu dla C , C++ i SystemC . OVPsim zawiera natywne pliki interfejsu SystemC TLM 2.0. Możliwe jest również hermetyzacja starszych modeli procesorów i modeli behawioralnych, aby mogły być używane przez OVPsim.
Interfejsy API modelowania
Modele OVP są tworzone przy użyciu interfejsów API C / C++ . Istnieją trzy główne API: OP, VMI, BHM/PPM.
OP
OP API jest przeznaczony do kontrolowania, łączenia i obserwacji platform. Ten interfejs API można wywołać z języka C, C++ lub SystemC. Platforma zapewnia podstawową strukturę projektu oraz tworzy, łączy i konfiguruje komponenty. Platforma określa również mapowanie adresów i oprogramowanie ładowane na procesory. 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ń i systemów operacyjnych oraz oprogramowania aplikacyjnego.
Interfejs API OP zastąpił interfejs API ICM w 2016 r. Interfejs API ICM jest nadal użyteczny na starszych platformach.
VMI
Modelowanie procesora zapewnia VMI API. Te funkcje API zapewniają możliwość łatwego opisu zachowania procesora. Model procesora napisany w C przy użyciu VMI dekoduje instrukcję docelową do symulacji i tłumaczy ją na natywne instrukcje x86, które są następnie wykonywane na komputerze PC. 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
Komponenty 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 instytucji edukacyjnych w celu zapewnienia infrastruktury symulacyjnej do badań równoległych platform obliczeniowych, współprojektowania sprzętu i oprogramowania, analizy wydajności systemów wbudowanych oraz jako podstawa rozwoju innych narzędzi wbudowanych. [ potrzebne źródło ] Jest również wykorzystywane na kursach edukacyjnych, aby umożliwić studentom opracowywanie i debugowanie aplikacji 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 obsługi modelowania dla ich architekturę MIPS , działa we współpracy z wiodącym dostawcą procesorów ARM i jest częścią asortymentu produktów Europractice dla ogólnego dostępu do europejskich uniwersytetów. Wersja OVPsim jest używana przez RISC-V Compliance Working Group Fundacji jako symulator referencyjny. Wiodące firmy produkujące półprzewodniki, takie jak Renesas, wykorzystywały symulator do prac rozwojowych nad procesorami, co ujawniono w czołowych publikacjach branży elektronicznej. Został wybrany przez NEPHRON+, unijny projekt badawczy, ze względu na oprogramowanie i testowe środowisko programistyczne. 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ę dla innych działań podejmowanych przez Imperas.