reklama
reklama
reklama
reklama
reklama
reklama
reklama
reklama
reklama
© baloncici dreamstime.com Technologie | 11 lutego 2016

Wszystko o polskim procesorze 32-bitowym – cz. 2

Zapraszamy do lektury drugiej części artykułu technicznego przygotowanego przez firmę Digital Core Design.
Wydajność współczesnych procesorów 32-bitowych

Od wielu lat obserwujemy w elektronice permanentny wyścig: szybciej, lepiej, wydajniej.
W ostatnim czasie przybrał on szczególnie intensywne formy, które ujawniają się w pełnej okazałości, gdy spojrzymy na datasheet z wynikami wydajności podawanymi dla benchmarku Dhrystone. Już nawet 8- czy 16-bitowe procesory zaczęły „osiągać” nieprzyzwoicie/niewytłumaczalnie (*niepotrzebne skreślić) wysokie rezultaty wydajności. Nic więc dziwnego, że przywykliśmy do wyników pokroju 2-3 DMIPS/MHz w przypadku procesorów 32-bitowych. Jednak czy są one realne? Czy procesor, który na papierze ma wydajność 2.5 DMIPS/MHz będzie równie wydajny przy wykonywaniu „codziennych” zadań? Niekoniecznie…
Wydajność D32PRO zmierzona za pomocą (i zgodnie z wytycznymi) benchmarku Dhrystone wynosi 1.48 DMIPS/MHz. Tymczasem, gdy spojrzymy na rozwiązania konkurencji (nazwijmy ją A, B, C), zauważymy, że jej 32-bitowe procesory osiągają odpowiednio:
  • Procesor A: 1.53 DMIPS/MHz
  • Procesor B: 1.79 DMIPS/MHz
  • Procesor C: 2.83 DMIPS/MHz
Jednakże, gdy przyjrzymy się procesorowi A., z łatwością zauważymy zwiększoną ilość poziomów przy przetwarzaniu potokowym, co pozwala na pracę z wysoką wydajnością. Należy jednak pamiętać, że warunkiem pracy z tak wysoką wydajnością jest jednolity kod (np. operacje arytmetyczne). Jeśli jednak pojawiłyby się w nim skoki lub przerwania, wydajność ta wydatnie spada. Rzecz jasna można temu zapobiec poprzez wykorzystanie układów predykcji czy cache, wiąże się to jednak z wydatnym zwiększeniem powierzchni zajmowanej przez CPU. Zatem należy podejść z dużą rezerwą do wysokich wyników Dhrystone, które idą w parze z relatywnie niską powierzchnią procesora. Zwiększenie wydajności odbywa się bowiem kosztem zwiększenia powierzchni i vice versa – zmniejszenie powierzchni układu powoduje wydatne ograniczenie jego możliwości.

Zestawienie wydajności 1.53 DMPIS/MHz z powierzchnią poniżej 10k bramek ASIC sugeruje, że taką wydajność osiąga CPU, które zajmuje 10k bramek. Eufemistycznie rzecz ujmując – nie jest to do końca prawda, bowiem podana najwyższa wydajność dotyczy procesora zawierającego wszystkie instrukcje - takie jak jednocyklowe mnożenie, przesuwanie, dzielenie i inne. Natomiast sama powierzchnia w przytoczonym przykładzie podawana jest z usuniętym opcjonalnym „wyposażeniem”.

Z kolei jeśli przyjrzymy się np. procesorowi C zauważymy, że ma on 16, 24, i 32 bitowe instrukcje. Oznacza to, że na zapisanie rejestru 32-bitową stałą potrzeba dwóch instrukcji. Nie bez znaczenia jest fakt, że 24-bitowe instrukcje podnoszą stopień skomplikowania układu pobierania rozkazów, zwiększając zajmowaną powierzchnię i zapotrzebowanie na zużywaną energię.

Dlatego też analizując wyniki wydajności poszczególnych procesorów, trzeba niestety dokonać dywersyfikacji na wyniki osiągane w programach takich jak Dhrystone oraz realną wydajność (podczas pracy).
Wykorzystanie popularnych kompilatorów wspierających optymalizacje na etapie linkowania, wypacza wyniki benchmarków dla dhry21. Jako przykład można podać np. GCC procesora A, B lub C, w którym z kodu wynikowego zupełnie wyrzucono dzielenie, mnożenie i znaczną część CALL/RET, a przy tym rozwinięto pętle. Warto w tym miejscu nadmienić, że w dokumentacji z dhry21, który przecież został zaktualizowany do tej właśnie wersji w odpowiedzi na zbyt agresywną optymalizację – wyszczególniono dokładnie, że szybkość tych operacji wpływa na wartość DMIPS-ów:



Jak więc widać, wyniki rzędu 2.5 - 3 DMIPS, które możemy odnaleźć w konkurencyjnych datasheet, nie mają nic wspólnego ze specyfikacją DMIPS. Idąc tym tropem, poprzez odpowiednią modyfikację kodu D32PRO można by osiągnąć wynik 3-4 DMIPS. Tylko jaki byłby sens takiego działania?

Jak wskazano powyżej, z kodów wynikowych usuwa się też często mnożenie i dzielenie. Jest to związane z faktem, że w wynikach powyżej 2 DMIPS kompilator tak optymalizuje kod DHRY, że wykonuje operacje mnożenia i dzielenia, wpisując gotowe wyniki, jako stałe do wykonywanego kodu. Tymczasem w rzeczywistym DHRY, jak też przede wszystkim w realnych aplikacjach – te operacje są wykonywane z użyciem odpowiednich instrukcji procesorów. Co więcej, wywołania funkcji w tak spreparowanych testach nie są wykonywane, bowiem ciało funkcji wstawiane jest bezpośrednio z głównej pętli (inline). Eliminuje to instrukcje CALL/RET, które z reguły zajmują około 2-3 cykli na każdą z nich. Zabieg ten (inline) wpływa też na „ekstra optymalizację”, ponieważ część operacji z tych funkcji „pokrywa się” i jest sklejana razem. W efekcie tak „zmodyfikowany” test daje wysokie wyniki DMIPS. Wracając do wcześniejszych rozważań można by ponownie zapytać: dlaczego? Czy taki syntetyczny i zmodyfikowany wynik będzie mógł zostać wykorzystany w realnej aplikacji?

Odpowiedź jest oczywista.

Podsumowanie

D32PRO jest 32-bitowym, w pełni konfigurowalnym procesorem, oferowanym w modelu biznesowym royalty-free. Można zatem powiedzieć, że jest to układ szyty na miarę, bowiem w zależności od potrzeb można go dowolnie konfigurować by osiągnąć pożądaną funkcjonalność. Co ważne, zintegrowany koprocesor zmiennoprzecinkowy gwarantujący instrukcje zmiennoprzecinkowe IEEE-754 pojedynczej precyzji, zapewnia stabilną i w pełni zoptymalizowaną pracę całego układu. Z kolei zintegrowany zestaw peryferii wraz ze sterownikami, pozwala wydatnie zwiększyć funkcjonalność całego rozwiązania, oferowanego pod nazwą D32PRO. By dodatkowo ułatwić pracę z procesorem oraz zwiększyć możliwości implementacji, projektanci zadbali, aby był on niezależny technologicznie, dzięki czemu może być bez przeszkód wykorzystany zarówno w układach ASIC, jak i w FPGA. Należy jednak podkreślić, że 32-bitowy procesor DCD jest rozwiązaniem silicon proven, którego sprawność potwierdzono w procesie technologicznym 110nm. Jest przy tym oferowany w modelu royalty-free, dzięki czemu licencjobiorca nie ponosi żadnych dodatkowych opłat po zakupie licencji. Do tego otrzymuje 3 miesięczne, bezpłatne wsparcie techniczne, które może zostać rozszerzone na warunkach komercyjnych, na dowolny okres czasu.

Procesor jest na tyle uniwersalny i wydajny, że nie można, czy wręcz nie wolno wskazywać jednego tylko typu zastosowań. Rzecz jasna można tu wspomnieć o:
  • IOT (Internet of Things)
  • Urządzenia medyczne
  • Systemy sterowania w przemyśle
  • Czytniki kart płatniczych
  • Smart Electronic & Wearables etc.

Ale to zaledwie początek, wierzchołek góry lodowej możliwych zastosowań…

D32PRO oferuje inżynierowi pełną konfigurowalność chociażby poprzez możliwość wyłączenia pewnych grup instrukcji, dzięki czemu można zmniejszyć powierzchnię procesora. Projektant może też wyłączyć nieużywane peryferia, bądź też wprost przeciwnie - skorzystać z bogatego zestawu modułów procesora, wśród których znajdziemy m.in. USB SD Card etc. Jeśli jednak i taki zestaw okazałby się dla kogoś niewystarczający, warto dodać, że D32PRO może być również dostarczony z kompletną płytą ewaluacyjną FPGA, która wydatnie skróci czas testów i ułatwi pracę z procesorem. Dzięki takiemu zestawowi inżynier nie musi konstruować własnego PCB a następnie składać w całość poszczególnych elementów układanki. Wraz z D32PRO otrzymuje od Digital Core Design zestaw All in One.

Więcej informacji na stronie firmy © Digital Core Design: www.dcd.pl
reklama
reklama
Załaduj więcej newsów
December 08 2016 23:17 V7.6.3-2