Android

Wielordzeniowe chipy stanowią kolejne duże wyzwanie dla branży

В шаге от «Матрицы». Когда чип в голову станет обычной покупкой?

В шаге от «Матрицы». Когда чип в голову станет обычной покупкой?
Anonim

Dodanie większej liczby rdzeni przetwarzających okazało się głównym sposobem zwiększenia wydajności serwerów i układów komputerowych, ale korzyści zostaną znacznie zmniejszone, jeśli przemysł nie będzie w stanie przezwyciężyć pewnych problemów związanych ze sprzętem i programowaniem, uczestnicy Multicore Expo w Santa Clara, Kalifornia, powiedział w tym tygodniu.

Większość dzisiejszych programów jest nadal napisana dla pojedynczych chipów i będzie musiała zostać przepisana lub zaktualizowana, aby wykorzystać rosnącą liczbę rdzeni, które Intel, Sun Microsystems i inni twórcy chipów dodają do ich produkty, powiedziała Linley Gwennap, prezes i główny analityk w The Linley Group.

Aplikacje z półki często działają szybciej na procesorach z maksymalnie czterema rdzeniami procesorów, ale poza tym wydajnością obniża się, a nawet może się pogarszać wraz ze wzrostem liczby rdzeni - powiedział. Niedawny raport firmy Gartner również uwypuklił problem.

Producenci układów i konstruktorzy systemów rozpoczęli działania mające na celu edukowanie programistów i dostarczanie im lepszych narzędzi do programowania wielordzeniowego. Rok temu Intel i Microsoft powiedzieli, że zainwestują 20 milionów USD, aby otworzyć dwa ośrodki badawcze na amerykańskich uniwersytetach poświęcone walce z tym problemem. Brak wielordzeniowych narzędzi programistycznych dla głównych programistów jest prawdopodobnie największym wyzwaniem, przed jakim stoi dziś przemysł, powiedział Gwennap.

Pisanie aplikacji w sposób umożliwiający różne części zadania obliczeniowego, takie jak rozwiązywanie problemu matematycznego lub renderowanie obrazu, być podzielonym i wykonanym jednocześnie na wielu rdzeniach nie jest nowy. Jednak ten model, nazywany często przetwarzaniem równoległym, do tej pory był ograniczony głównie do wyspecjalizowanych środowisk obliczeniowych o wysokiej wydajności.

Ale w ostatnich latach Intel i zaawansowane urządzenia mikro dodają rdzenie jako bardziej energooszczędny sposób na zwiększenie wydajności wydajność układu, znacząca zmiana w stosunku do tradycyjnej praktyki zwiększania prędkości zegara. Intel buduje osiem rdzeni w swoich nadchodzących chipach Nehalem-EX, a AMD projektuje 12-rdzeniowe układy scalone dla serwerów. Dodają także możliwości wielowątkowości, które pozwalają każdemu z rdzeni pracować jednocześnie na wielu liniach kodu.

Oznacza to, że główne aplikacje muszą być pisane w inny sposób, aby skorzystać z dodatkowych dostępnych rdzeni. Praca jest trudna do wykonania i stwarza potencjał nowych typów błędów oprogramowania. Jednym z najczęstszych jest "warunki wyścigu", w których wynik obliczeń zależy od różnych elementów zadania, które jest wykonywane w określonej kolejności. Jeśli tak nie jest, mogą wystąpić błędy.

Dostępnych jest kilka narzędzi do programowania równoległego, takich jak Intel® Parallel Studio for C i C ++. Inni dostawcy w przestrzeni to Codeplay, Polycore Software i Clik Arts. Istnieje również nowy oparty na C model programowania równoległego o nazwie OpenCL, opracowywany przez The Khronos Group i wspierany przez Apple, Intel, AMD, Nvidię i inne.

Ale wiele dostępnych narzędzi wciąż jest w toku, uczestnicy Multicore Expo powiedział. Kompilatory oprogramowania muszą być w stanie zidentyfikować kod, który można zrównoleglić, a następnie wykonać zadanie równoległości bez ręcznej interwencji ze strony programistów, powiedział Shay Gal-on, dyrektor ds. Inżynierii oprogramowania w EEMBC, organizacji non-profit, która opracowuje testy porównawcze dla osadzonych układów.

Pomimo braku narzędzi, niektórzy producenci oprogramowania stwierdzili, że stosunkowo proste jest tworzenie równoległego kodu dla prostych zadań obliczeniowych, takich jak przetwarzanie obrazu i wideo, powiedział Gwennapp. Adobe przerobił Photoshopa w taki sposób, aby przypisać obowiązki takie jak powiększenie i filtrowanie obrazu do konkretnych rdzeni x86, zwiększając wydajność od trzech do czterech razy, powiedział.

"Jeśli robisz wideo lub grafikę, możesz wziąć różne zestawy pikseli i przypisać je do różnych procesorów, w ten sposób można uzyskać wiele równoległości "- powiedział. Jednak w przypadku bardziej złożonych zadań trudno jest znaleźć pojedyncze podejście do identyfikacji sekwencji obliczeń, które można zrównoleglić, a następnie podzielić.

Podczas gdy strona programująca może stanowić największe wyzwanie, należy również wprowadzić zmiany sprzętowe, aby przezwyciężyć problemy, takie jak opóźnienie pamięci i wolne prędkości magistrali. "Kiedy dodajesz coraz więcej procesorów do chipa, potrzebujesz przepustowości pamięci, aby go utworzyć", powiedział Gwennap.

Udostępnianie jednej pamięci podręcznej lub magistrali danych pomiędzy wieloma rdzeniami może stworzyć wąskie gardło, co oznacza, że ​​dodatkowe rdzenie będą być w dużej mierze zmarnowane. "Zanim przejdziemy do sześciu lub ośmiu procesorów, spędzają cały swój czas na rozmowach i nie idą naprzód, aby wykonać jakąkolwiek pracę" - powiedział.

Ciężar spoczywa na programistach, aby wypełnić lukę pomiędzy sprzęt i oprogramowanie do pisania lepszych programów równoległych. Wielu programistów nie nadąża za najnowszymi osiągnięciami w projektowaniu sprzętu, powiedział Gal-on. Powinni otworzyć arkusze danych i zbadać architekturę mikroprocesora, aby zrozumieć, w jaki sposób ich kod może działać lepiej, powiedział.