Чому комп'ютери не постачаються із спеціалізованим обладнанням, таким як мережі сортування?


10

Замість того, щоб програмувати так, як ми робимо, чому б ми не зробили специфікації загальних завдань, таких як "сортування", і не дозволили оточенню скласти його, щоб найкраще використовувати його обладнання? Таким чином, ми можемо поставити комп'ютер з новим спеціалізованим обладнанням, таким як мережі сортування, і воно автоматично працюватиме з існуючим кодом.


2
Купіть плату PCI FPGA та застосуйте будь-які розширення, які вам подобаються.
SK-логіка

Обладнання не є магією. Багато речей неможливо значно прискорити (або зовсім) спеціалізованим обладнанням, і навіть якщо це можливо, наявне обладнання часто доводиться адаптувати (або принаймні перекомпілювати). Дивіться yosefk.com/blog/its-done-in-hardware-so-its-cheap.html


3
@WorldEngineer Я не бачу, як це входить у картину. Ваш середньостатистичний користувач не знає, для чого потрібні 80% речей у сучасному процесорі, вони щасливі, тому що, за їхніми словами, це робить їх програми швидшими (і в цьому є ядро ​​правди). Якщо сортування було дійсно таким поширеним, як припускає ОП, і його можна оптимізувати спеціальним обладнанням, вони поставлять його поруч із передбачувачем гілки ("що це, садівництво?"), Видають прес-реліз, у якому говорять, що вони робили програми X і Y 5% швидше, і продати.

1
Це нагадує мені ідею ядер збереження , які орієнтовані на енергоефективність, а не на пікові показники.
Пол А. Клейтон

Відповіді:


19

Перш за все, комп'ютери поставляються із спеціалізованим обладнанням . Кожен ноутбук та настільний комп’ютер, що продається протягом декількох років, зараз має спеціалізований спільний процесор, блок графічної обробки, який обробляє алгоритми візуальної обробки, такі як необхідні програми для відео та ігор. Дуже великі комп’ютери ( напр , "суперкомп'ютери", сімейство System Z Z) мають різноманітні спеціалізовані процесори для обробки чисельної обробки ("векторної обробки") тощо .

По-друге, сортування є одним з найбільш досліджених аспектів обчислень, і виявляється занадто складним, щоб вбудувати в апаратне забезпечення для більш простих випадків. Сортування стосується швидкості та правильності. Швидкість залежить від вибору алгоритму, типу та варіації даних та обсягу даних. Правильність залежить від типу та контексту даних. Позитивно тривіально сортувати середній масив цілих чисел, що вписуються в розмір нативного слова CPU ( наприклад,, 31 або 63 біт плюс знак). Сортування рядків символів, які містять більше, ніж лише значення ASCII, надзвичайно складне - IBM опублікувала книгу сторінок 500+ тому 20 років тому, лише обговорюючи питання набору символів у контексті національних кордонів та загального використання. І тут виникає питання про суміжні дані - сортування пов'язаного списку передбачає переслідування покажчиків по всій пам'яті.


10

Основне питання полягає в тому, що алгоритмам сортування (1) потрібна велика гнучкість, і (2) було б дуже важко прискорити використання апаратного забезпечення в будь-якому випадку.

Одне полягає в тому, що алгоритми сортування вже досить швидко швидко перевищують пропускну здатність пам’яті процесора - процесор вже витратить велику частку свого часу, чекаючи, коли дані переміщаться назад і вперед до основної пам'яті. Таку ж проблему мали б і апаратний прискорений сортування процесора сортування або спеціальна інструкція щодо сортування.

Спосіб вирішення цієї пропускної здатності пам’яті полягає у використанні кращих алгоритмів та структур даних, які мають кращу «локальність», і в цій галузі все ще виконується значна робота, зокрема «кешувати алгоритми, що не забувають» (вони не мають уваги в тому сенсі, що вони працюють добре незалежно від деталей кешування, тоді як алгоритми "відомості про кеш" налаштовані на певний розмір сторінки кешу тощо).

На відміну від цього, медіа-додатки (аудіо та графіка, зокрема 3D-графіка) використовують деякі дуже повторювані структури - звичайно, є гнучкість, але вона побудована на основі великої та дуже добре структурованої основи. Це дозволило прискорити графічне прискорення з таких речей, як Blitting (налаштований, але все ще дуже структурований блок копіювання) та малювання ліній / багатокутників. Це означало, що в міру того, як графіка та обробка звуку стали більш досконалими, векторні операції стали очевидною метою оптимізації - спочатку MMX (вектори цілих чисел), а потім SSE (вектори поплавків). Це означало, що існує досить чітко визначена структура того, як працював 3D-графічний двигун, коли старий конвеєр 3D-графічної графіки був переміщений на апаратне забезпечення 3D-графіки.

Однак з 3D-графікою те, що колись робилося в апаратному забезпеченні, зараз робиться в програмному забезпеченні для гнучкості - наприклад, шейдери - це програмне забезпечення, саме таким чином ми отримуємо величезний спектр різних шейдерів, що надають зовнішній вигляд різних матеріалів. Однак це програмне забезпечення все ще працює набагато більш структуровано, ніж загальне програмне забезпечення, і тому все ще може використовувати набагато більш спеціалізовану апаратну платформу. Ось чому ваша відеокарта тепер може пришвидшити все, починаючи від фізики до зламання паролів - додатків, які також відповідають тій самій моделі та можуть бути ефективно реалізовані за допомогою наборів інструкцій, які надають сучасні графічні процесори.

Графічні процесори зараз є духовними або фактичними нащадками цифрових сигнальних процесорів, які були (і, мабуть, досі є) своєрідним спеціалізованим процесором для обробки цифрових сигналів (наприклад, аудіо).

Що призводить до кінцевої точки - алгоритми сортування можуть бути прискорені апаратними засобами. Залежно від ваших даних, сортуванням можна займатися за допомогою інструкцій MMX або SSE (одна інструкція з декількома даними) на вашому процесорі, але, мабуть, немає великого сенсу через проблеми з пропускною здатністю пам'яті - можливо, ви можете бути трохи ефективнішими таким чином, хоча. Однак ви також можете використовувати графічне обладнання. Таким чином, ви можете скористатися часто набагато кращою пропускною здатністю пам'яті для відеокарт. Ви не зможете замінити всілякі способи таким чином, але це, безумовно, можливо і, ймовірно, робиться там, де це доречно.

IOW через різні економічні та практичні проблеми, проектування апаратних засобів спеціально для прискорення відносно вузьких завдань, таких як сортування, насправді не має сенсу. Функція, яка прискорює більш широкий спектр завдань, або яка робить існуюче обладнання для прискорення застосовно до більш широкого кола завдань, часто має набагато більше сенсу.


3

Але вони роблять! Їх називають розширеннями наборів інструкцій. (Такі речі, як SSE тощо)

Деякі завдання мають дуже хороші реалізації в програмному забезпеченні. Зазвичай ці реалізації досить хороші, щоб виконати цю роботу, тому ніякого спеціалізованого обладнання не потрібно. Якщо ви робите якесь спеціалізоване обладнання, вам знадобиться дуже широкий спектр застосувань, щоб зробити його вартим.

Якщо ви подивитесь на апаратне забезпечення, яке могло б зробити цю роботу, я думаю, ви б дивились на щось на зразок FPGA. Як видно з FPGA, мікросхема стане значно дорожчою, хоча це не застосовуватиметься для багатьох програм.


Мені доведеться google для SSE, але, заздалегідь, сортування, ймовірно, універсальне. Чи реалізовано це на апаратному рівні?
MaiaVictor

Е, також, як ми там, ви б рекомендували книги?
MaiaVictor

Я просто говорив про оптимізацію, що стосується конкретних завдань, що впроваджується в процесорах стилю процесора в цілому, оскільки в якості прикладу використовуються мережі сортування. Я не знаю, чи включає SSE чи будь-який інший набір інструкцій сортування конкретних оптимізацій. Я робив сортування мереж Google, і оскільки існують оптимізовані загальні реалізації, я думаю, що реалізація програмного забезпечення може виконати цю роботу так само добре, якщо реалізація виконана правильно.
Оно

Я мушу зазначити, що більшість розширень наборів інструкцій працюють на нижчому рівні, ніж мережа сортування, яку ви використовували як приклад, але не неможливо розробити оптимізацію багатореєстрових систем, яка може сортувати таким чином. Але питання для виробників процесорів було б: "чи окупиться воно достатньо, щоб виправдати витрати?".
Оно
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.