Procesory wielordzeniowe w systemach pomiarowych
| TechnikaDo niedawna innowacje w zakresie procesorów dotyczyły w zasadzie tyko komputerów PC i polegały na taktowaniu ich z coraz większą częstotliwością. Potem, po osiągnięciu granicznych wartości taktowania dla technologii półprzewodnikowej, producenci zaczęli wypuszczać na rynek układy wielordzeniowe, zdolne do pracy równoległej. Znajdują one zastosowanie w wielu urządzeniach, w tym automatycznych aplikacjach testujących (ATE), gdzie zapewniają wysoką wydajność, przy wykorzystaniu oprogramowania działającego równolegle w kilku wątkach.
Zapewnienie wysokiej wydajności aplikacji, w oparciu o programy działające równolegle na takich układach nie jest proste, gdyż pojawia się wiele problemów związanych z współbieżną pracą wątków, np. konkurowanie o zasoby. Możliwości procesorów wielordzeniowych wykorzystywane są m.in. w środowisku LabVIEW, które udostępnia API, pozwalające na tworzenie działających równolegle algorytmów dla aplikacji testujących.
Wysoką wydajność, od strony sprzętowej, gwarantuje platforma PXI, bazująca na modułowych przyrządach pomiarowych, z magistralą komunikacyjną PCI Express, która zapewnia dużą przepustowość. Taka funkcjonalność jest najbardziej potrzebna przy wielokanałowej analizie sygnałów oraz w aplikacjach czasu rzeczywistego pracujących w trybie ciągłym.
Implementacja algorytmów działających równolegle
Jedną z najbardziej popularnych aplikacji, która wykorzystuje możliwości programowania równoległego, jest wielokanałowa analiza sygnałów, realizowana w domenie częstotliwości. Zadanie to jest złożone obliczeniowo, stąd rozdzielenie jej pomiędzy kilka rdzeni procesora zapewnia wyraźny wzrost wydajności działania.
Z punktu widzenia programisty LabVIEW osiągnięcie tego celu wiąże się z niewielką zmianą algorytmu wykorzystywanego w testach. Efekty zastosowania takiego podejścia można ocenić przyglądając się działaniu dwóch algorytmów FFT, przetwarzających dane z szybkiego (100 MS/s), 14-bitowego, dwukanałowego oscyloskopu NI PXIe-5122.
W pierwszym przypadku analiza FFT jest realizowana sekwencyjnie, w drugim równolegle, w oparciu o dwa rdzenie procesora. W pierwszym podejściu analiza danych trwa dłużej niż czas akwizycji z przetwornika pomiędzy próbkami, co prowadzi do opóźnień. W przypadku przetwarzania równoległego wydajność jest na tyle duża, że program jest w stanie wykonać FFT pomiędzy kolejnymi akwizycjami danych.
Różnice są tym większe im szybciej działa przetwornik (rys. 1 i 2). LabVIEW pozwala na dynamiczne alokowanie wątków na poszczególne rdzenie procesora i uniknięcie modyfikacji istniejącej aplikacji. W programie tworzona jest wewnętrzna kopia każdej procedury programu, dla której alokowana jest pamięć programu (reentrant execution).
Optymalizacja aplikacji ze sprzętową pętlą sterowania
Drugim rodzajem aplikacji, które są w stanie czerpać korzyści z przetwarzania równoległego, są systemy wykorzystujące wiele przyrządów do równoległych zadań akwizycji i generacji. Najczęściej ta aplikacje nazywane są hardware-in-the-loop (HIL) lub in-line. Przykładowa aplikacja może polegać na akwizycji sygnału przy wykorzystaniu szybkiego oscyloskopu, analizie zebranych danych oraz generacji sygnału wynikowego przy pomocy innego urządzenia. (rys. 3).
Przetwarzanie sygnałów zwykle obejmuje filtrację, interpolację, symulację sensorów i emulację różnych bloków sprzętowych. W aplikacjach HIL korzysta się z dwóch podstawowych technik programistycznych: pojedynczej pętli i struktury potokowej z wieloma pętlami, korzystającej z kolejek. Pierwsza technika zapewnia niskie opóźnienia dla niewielkich paczek danych, natomiast wersja z wieloma pętlami zapewnia większą przepustowość i pozwala czerpać korzyści z możliwości oferowanych przez procesory wielordzeniowe.
W pojedynczej pętli akwizycja, obróbka i generacja danych wykonywane są sekwencyjnie, co jest źródłem wielu ograniczeń. Niemożliwe jest jednoczesne wykonanie tych zadań, przez co rozwiązanie to sprawdza się, gdy sygnały w badanym układzie zmieniają się stosunkowo wolno. W architekturze z wieloma pętlami do transferu danych wykorzystywane są kolejki FIFO, do których przetwornik wejściowy (wykonujący ciągłą akwizycję danych) zapisuje kolejne informacje.
Zgromadzone w ten sposób dane są wysyłane kolejno do drugiej pętli. Podejście takie zapewnia większą wydajność, pełne wykorzystanie zasobów sprzętowych procesora i sprawdza się z szybkimi przetwornikami oraz magistralami komunikacyjnymi. Na rysunku 4, na przykładzie filtracji 16-bitowych próbek przy wykorzystaniu filtru Butterwortha, pokazano różnice w wydajności między dwiema omawianymi architekturami.
Oczywiście przy czterech pętlach wzrost wydajności mógłby być jeszcze większy, o ile przetwornik wejściowy i wyjściowy byłyby w stanie dostarczyć dostatecznie dużą ilość danych. Potokowe przetwarzanie danych w aplikacjach HIL wprowadza opóźnienie pomiędzy sygnałem wejściowym a wyjściowym, którego wartość zależy między innymi od szybkości próbkowania i rozmiaru przetwarzanych bloków danych.
Podsumowanie
Modułowy sprzęt pomiarowy, bazujący na standardzie PXI i PXI Express jest w stanie wykorzystać zalety stosowania procesorów wielordzeniowych. Możliwe staje się to tylko wtedy, gdy dysponujemy oprogramowaniem zdolnym w prosty sposób z nich skorzystać. LabVIEW dynamicznie rozdziela zadania między dostępne rdzenie procesora powodując znaczny wzrost wydajności.
David Hall
National Instruments
poland.ni.com