Znak podstawowy
CoreMark to test porównawczy , który mierzy wydajność jednostek centralnych (CPU) używanych w systemach wbudowanych . Został opracowany w 2009 roku przez Shaya Gal-On z EEMBC i ma stać się standardem branżowym, zastępując benchmark Dhrystone . Kod jest napisany w C i zawiera implementacje następujących algorytmów: przetwarzanie list (wyszukiwanie i sortowanie), manipulowanie macierzami (wspólne operacje na macierzach), maszyna stanów (określanie, czy strumień wejściowy zawiera prawidłowe liczby) oraz CRC . Kod jest objęty licencją Apache 2.0 i jest bezpłatny w użyciu, ale własność pozostaje własnością Konsorcjum, a publikacja zmodyfikowanych wersji pod nazwą CoreMark jest zabroniona.
Problemy rozwiązane przez CoreMark
Algorytm CRC pełni podwójną funkcję; zapewnia obciążenie często spotykane w aplikacjach wbudowanych i zapewnia prawidłowe działanie testu porównawczego CoreMark, zasadniczo zapewniając mechanizm samokontroli. W szczególności, aby zweryfikować poprawność działania, wykonywane jest 16-bitowe CRC na danych zawartych w elementach połączonej listy .
Aby upewnić się, że kompilatory nie mogą wstępnie obliczyć wyników w czasie kompilacji, każda operacja w teście porównawczym wyprowadza wartość, która nie jest dostępna w czasie kompilacji. Co więcej, cały kod użyty w części czasowej testu porównawczego jest częścią samego testu porównawczego (bez biblioteki ).
CoreMark kontra Dhrystone
CoreMark czerpie z mocnych stron, które sprawiły, że Dhrystone jest tak odporny — jest mały, przenośny, łatwy do zrozumienia, bezpłatny i wyświetla pojedynczy wynik testu porównawczego. W przeciwieństwie do Dhrystone, CoreMark ma określone zasady uruchamiania i raportowania i został zaprojektowany w celu uniknięcia dobrze zrozumianych problemów, które zostały zacytowane w przypadku Dhrystone .
Główne części Dhrystone są podatne na zdolność kompilatora do optymalizacji pracy; dlatego jest to bardziej test porównawczy kompilatora niż test porównawczy sprzętu. To również bardzo utrudnia porównywanie wyników, gdy używane są różne kompilatory/flagi.
Połączenia z bibliotekami są wykonywane w ramach czasowej części Dhrystone. Zazwyczaj te wywołania biblioteki zajmują większość czasu poświęcanego na test porównawczy. Ponieważ kod biblioteki nie jest częścią testu porównawczego, trudno jest porównać wyniki, jeśli używane są różne biblioteki. Istnieją wytyczne dotyczące sposobu prowadzenia Dhrystone, ale ponieważ wyniki nie są certyfikowane ani weryfikowane, nie są egzekwowane. [ potrzebne źródło ] Nie ma standaryzacji dotyczącej sposobu zgłaszania wyników Dhrystone, przy użyciu różnych formatów (DMIPS, Dhrystones na sekundę, DMIPS/MHz)
Wyniki
Wyniki CoreMark można znaleźć na stronie internetowej CoreMark oraz w arkuszach danych procesora. Wyniki są w następującym formacie:
CoreMark 1.0 : N / C / P / M
- N Liczba iteracji na sekundę (z nasionami 0,0,0x66,rozmiar=2000)
- Wersja i flagi kompilatora C
- P Parametry, takie jak specyfika danych i alokacji kodu
- M – Typ wykonania algorytmu równoległego (jeśli jest używany) i liczba kontekstów
Na przykład: CoreMark 1.0: 128 / GCC 4.1.2 -O2 -fprofile-use / Heap in TCRAM / FORK:2
Zobacz też
- Korporacja wydajności aplikacji biznesowych (BAPCo)
- Konsorcjum testów porównawczych wbudowanych mikroprocesorów (EEMBC)
- Standardowa Korporacja ds. Oceny Wydajności (SPEC)
- Rada ds. wydajności przetwarzania transakcji (TPC)