Głównym problemem jest to, że algorytmy sortowania (1) wymagają dużej elastyczności, a (2) i tak bardzo trudno byłoby przyspieszyć przy użyciu sprzętu.
Jedną rzeczą jest to, że algorytmy sortowania są już wystarczająco szybkie, aby przekroczyć przepustowość pamięci procesora - procesor będzie już spędzał dużą część czasu, czekając, aż dane przesuną się do tyłu i do przodu do pamięci głównej. Przyspieszony sprzętowo koprocesor sortowania lub specjalna instrukcja sortowania miałyby ten sam problem.
Sposób wykorzystania tego pasma pamięci polega na zastosowaniu lepszych algorytmów i struktur danych, które mają lepszą „lokalizację”, i nadal wykonuje się znaczącą pracę w tej dziedzinie, zwłaszcza „algorytmy niepamięci cache” (są one nieświadome w tym sensie, że działają) niezależnie od szczegółów buforowania, podczas gdy algorytmy „rozpoznające pamięć podręczną” są dostosowane do określonego rozmiaru strony pamięci podręcznej itp.).
W przeciwieństwie do tego, aplikacje medialne (audio i grafika, szczególnie grafika 3D) wykorzystują niektóre bardzo powtarzalne struktury - oczywiście istnieje elastyczność, ale jest ona zbudowana na dużej i bardzo dobrze skonstruowanej podstawie. Dzięki temu akceleracja grafiki mogła zacząć się od rzeczy takich jak Blitting (konfigurowalna, ale wciąż bardzo dobrze zorganizowana operacja kopiowania bloków) i rysowanie linii / wielokątów. Oznaczało to, że wraz z bardziej zaawansowanym przetwarzaniem grafiki i dźwięku operacje wektorowe stały się oczywistym celem optymalizacji - najpierw MMX (wektory liczb całkowitych), a następnie SSE (wektory liczb zmiennoprzecinkowych). Oznaczało to, że istniała dość dobrze określona struktura działania silnika grafiki 3D, gdy stary potok grafiki 3D o stałej funkcji został przeniesiony na sprzęt graficzny 3D.
Jednak w przypadku grafiki 3D to, co kiedyś zrobiono w sprzęcie, teraz jest wykonywane w oprogramowaniu w celu zapewnienia elastyczności - shadery to na przykład oprogramowanie, dzięki czemu otrzymujemy ogromną gamę różnych shaderów dających wygląd różnych materiałów. Jednak to oprogramowanie nadal działa w dużo bardziej uporządkowany sposób niż oprogramowanie ogólne, a zatem nadal może korzystać ze znacznie bardziej wyspecjalizowanej platformy sprzętowej. Właśnie dlatego Twoja karta graficzna może teraz przyspieszyć wszystko, od fizyki po łamanie haseł - aplikacje, które również pasują do tego samego modelu i mogą być skutecznie wdrażane za pomocą zestawów instrukcji, które zapewniają nowoczesne procesory graficzne.
Procesory graficzne są teraz duchowymi lub faktycznymi potomkami cyfrowych procesorów sygnałowych, które były (i prawdopodobnie nadal są) rodzajem specjalistycznego procesora do obsługi sygnałów cyfrowych (np. Audio).
Co prowadzi do końcowego punktu - algorytmy sortowania można przyspieszyć sprzętowo. W zależności od danych sortowanie można obsługiwać za pomocą instrukcji MMX lub SSE (pojedyncza instrukcja-wiele danych) na procesorze, ale prawdopodobnie nie ma większego sensu z powodu problemu z przepustowością pamięci - być może możesz być nieco bardziej energooszczędny ale w ten sposób. Możesz jednak również użyć sprzętu graficznego. W ten sposób możesz skorzystać z często znacznie lepszej przepustowości pamięci dla kart graficznych. W ten sposób nie będziesz w stanie wymienić wszystkich rodzajów, ale z pewnością jest to możliwe i prawdopodobnie zrobione w razie potrzeby.
IOW z powodu różnych problemów ekonomicznych i praktycznych, projektowanie sprzętu specjalnie w celu przyspieszenia stosunkowo wąskiego zadania, takiego jak sortowanie, naprawdę nie ma sensu. Funkcja, która przyspiesza szerszy zakres zadań lub sprawia, że istniejący sprzęt przyspieszający ma zastosowanie do szerszego zakresu zadań, często ma znacznie większy sens.