Вивчаючи курс початківців на апаратно-програмному інтерфейсі та операційних системах, часто виникає тема, чи було б краще замінити деякі апаратні частини на програмне забезпечення і навпаки. Я не можу встановити з'єднання.
Вивчаючи курс початківців на апаратно-програмному інтерфейсі та операційних системах, часто виникає тема, чи було б краще замінити деякі апаратні частини на програмне забезпечення і навпаки. Я не можу встановити з'єднання.
Відповіді:
Я думаю, що фундаментальним зв’язком, який відсутні інші відповіді, є такий:
Враховуючи комп'ютер загального призначення (наприклад, процесор), його можна запрограмувати для виконання будь-яких обчислень, які ми визначили. Однак спеціалізоване обладнання може працювати краще, а може і не надавати жодної цінності.
(ця відповідь орієнтована на обробку робочого столу та використовує приклади з цього домену)
Якщо ви досить дорослі, щоб запам'ятати комп'ютерні ігри в середині-кінці 1990-х, ви, мабуть, пам’ятаєте ігри FPS, такі як Quake . Він почав бути "програмним забезпеченням", тобто процесор виконав обчислення, необхідні для візуалізації графіки. Тим часом CPU також повинен був виконувати обробку вводу, обробку аудіо, обробку AI тощо. Це дуже оподатковувало ресурси CPU. Крім того, обробка графіки недостатньо підходить до основного процесора (тоді чи зараз). Це, як правило, дуже паралельне завдання, вимагає набагато більше ядер, ніж навіть сучасний процесор високого класу (8).
Ми перенесли обробку графіки з програмного забезпечення на апаратне: введіть 3dfx Voodoo та Nvidia TNT (зараз GeForce ). Це спеціалізовані графічні картки, які завантажували обробку з процесора на GPU. Це не тільки розширило навантаження, забезпечивши більше обчислювальних ресурсів для виконання такої ж кількості роботи, графічні картки були спеціалізованим обладнанням, яке може надавати 3D-графіку набагато швидше та з більшими можливостями, ніж міг би процесор.
Швидкий перехід до сучасної епохи, а на робочому столі необхідна графіка, яка не є процесором . Навіть операційна система не може функціонувати без GPU. Це так важливо, що ЦП насправді інтегрують GPU зараз. 1
Ще тоді, коли DVD був абсолютно новим, ви можете встановити привід DVD у свій настільний комп'ютер. Однак процесори цього дня були недостатньо потужними для декодування DVD-відео та аудіо потоків без заїкання. Спочатку для розшифровки була потрібна спеціалізована плата PCI. Це спеціалізоване обладнання, яке було розроблено спеціально для декодування формату DVD та нічого іншого. Так само, як і в 3D-графіці, він не тільки надав більше обчислювальних ресурсів, але був розроблений на замовлення для виконання задачі, завдяки чому відтворення DVD було плавним.
Оскільки процесори зростали набагато потужнішими, стало можливим декодувати DVD-диски "програмним забезпеченням", тобто "на комп'ютері загального призначення". Навіть з менш ефективним процесором він мав достатню швидкість і швидкість оптимізації, щоб відтворення DVD працювало на очікування користувачів.
Тепер у нас є центральні процесори сотні або навіть тисячі разів , як потужний 2 , як ми були , коли були введені DVD - диски. Коли Blu-ray з'явився разом, нам ніколи не було потрібне спеціалізоване обладнання, оскільки обладнання загального призначення було більш ніж потужним, щоб впоратися із завданням.
Сучасні процесори Intel мають спеціалізовані інструкції щодо кодування та декодування H.264 . Це частина тенденції, коли процесори загального призначення набувають спеціалізованих функцій, все в одній мікросхемі. Нам не потрібна окрема плата PCI Express, щоб ефективно розшифрувати H.264, як на DVD на початку, оскільки процесори містять схожі схеми.
1 GPU відноситься до процесора, спеціально призначеного для виконання графічних обчислень. Старіші 2D графічні карти не були графічними процесорами: вони були просто фреймбуферами з ЦАПами для спілкування з монітором. Різниця полягає в тому, що графічні процесори містять спеціалізовані процесори, які перевершують певні типи обчислень, і, як ішов час, тепер насправді програмуються самі (шейдери). Графічне обладнання завжди містило спеціалізовану схему, необхідну для перетворення даних у фреймбуфер у формат, який можна виводити по кабелю (VGA, DVI, HDMI, DisplayPort) і розуміти на моніторі. Це не має значення для обговорення вивантаження обчислень на спеціалізоване обладнання.
2 DVD-Video було випущено в 1997 році, в той час, коли Pentium 2 також був нещодавно випущеним. Це був час, коли процесори швидко збільшувались у потужності: можна було розглянути новий комп'ютер P2 з декодером DVD або встановити його в трохи старший P1. Порівняйте це з сучасним поколінням 6 Core i7, використовуючи список MIPS у Вікіпедії , а сучасний процесор у будь-якому місці між 590 та 1690 разів швидше. Частково це пов’язано з тактовою швидкістю, а також переміщенням до декількох ядер як стандартних, так і сучасних процесорів, які роблять набагато більше роботи на ядро за один тактовий тик. Також актуальним є те, що в міру розвитку технології Intel (який домінує на ринку настільних ПК та серверів x86) додає спеціалізовані інструкції, щоб сприяти прискоренню операцій, які бажають робити користувачі настільних ПК (наприклад, декодування відео).
Я здивований, що ніхто не згадав про один із найяскравіших прикладів: радіо, визначене програмним забезпеченням.
Якби ви повернули сучасний смартфон у часі приблизно 50 років і показали його грамотному інженеру з середини 1960-х, він би зміг зрозуміти більшість цього. Що суперкомп'ютер можна звести до чогось, що поміщається у вашій кишені? Перевірка. Що ви можете мати в комплекті еквівалент ультраякісного кольорового телевізора? Перевірка. Що це набагато швидше, чи набагато більше пам’яті тощо, ніж комп’ютери епохи? Перевірка. Що написано програмне забезпечення, яке може виконувати такі складні функції? Перевірка.
Але скажіть цьому грамотному інженеру, що о, до речі, цей пакет містить набір надзвичайно ефективних передавачів та чутливих приймачів: цифровий приймач широкого спектру, який може одночасно передавати та приймати по декількох каналах, спілкуючись з інфраструктурною вежею, яка може бути миль ; інший цифровий приймач, який передає дані про високу швидкість з базовою станцією десь у будівлі; ще один цифровий приймач, який спілкується з носячими пристроями малої потужності; а ще один приймач, який приймає слабкий сигнал із супутника на проміжній орбіті ... він би назвав вас брехуном.
Він би назвав вас брехуном, оскільки він знає, що приймачі такої високої чутливості неможливо побудувати без безлічі налаштованих мікросхем, які фільтрують сусідні станції та вибирають сигнал, що цікавить. І що для таких схем потрібні деталі з розмірами, які визначені більше фізикою, ніж технологією, такими як конденсатори та індуктори.
Тоді вам слід було б пояснити, що в сучасному радіо більшість цього робиться в програмному забезпеченні. Якщо сигнал, який надходить з антени, перетворюється на проміжну частоту і трохи посилюється, то він відбирається за допомогою аналого-цифрового перетворювача; і подальша обробка відбувається в цифровому сигнальному процесорі. Всю ту налаштування, ту фільтрацію, яка вимагала багато апаратних засобів у старому шкільному радіо, можна описати у вигляді математичних рівнянь; і якщо це можна зробити, ці рівняння можуть бути виконані DSP в режимі реального часу.
Я думаю, це один із найяскравіших прикладів заміни програмного забезпечення апаратними засобами. Як результат, ми тримаємо смартфони в кишенях, які навіть грамотному інженеру 1960-х років були б схожі на чарівну хитрість.
У порівнянні з цим ідея про те, що проста логіка відкривання дверей гаражних дверей, електронної шкали для ванної кімнати або телевізора дистанційного управління реалізована в даний час за допомогою мікроконтролера загального призначення та програмного забезпечення замість власного обладнання майже здається тривіальною (і це, безумовно, було б багато більш зрозумілий нашому гіпотетичному інженеру 1960-х років, ніж радіо, визначене програмним забезпеченням.)
Розглянемо цю схему:
Це Flip Flop, він же Bistable Multivibrator. Його можна замінити цим кодом:
static bool toggle;
if (toggle == true)
{
lblTop.BackColor = Color.Black;
lblBottom.back Color = Color.Red;
}
else
{
lblTop.BackColor = Color.Red;
lblBottom.BackColor = Color.Black;
}
toggle = !toggle;
Це означає саме те, що це звучить.
Особливо відомий приклад - диск Disk II, розроблений Стівом Возняком для Apple II:
Головною інновацією було зробити контролер компактним за допомогою програмного забезпечення, тоді як конкуренти покладалися на обладнання. Як пам'ятає це Білл Фернандес, тодішній технік з електроніки в Apple, "ключовою перевагою дизайну [Возняка] було те, що він використовував лише шість мікросхем замість звичайних 60 - 70
Ще один приклад, напевно, вам більше відомий: Емулятори. Вони замінюють цілі набори апаратних засобів (і програмного забезпечення) повністю на програмне забезпечення. Процесори, різні контрольні мікросхеми, навіть пристрої зберігання даних.
Тепер ви не можете усунути все обладнання, з часом вам потрібно щось запустити. Але в цілому будь-яке логічне завдання, яке ви можете реалізувати в апаратному забезпеченні, також може бути реалізовано в програмному забезпеченні (продуктивність може бути не однаковою, вона може бути повільнішою, швидшою або в різних ситуаціях, залежно від базового обладнання та реалізації).
Інша сфера, в якій це правда, - це синтезатори.
Ранні синтезатори являли собою 100% аналогові апаратні засоби, які генерували форми хвиль безпосередньо, а потім змінювали їх за допомогою схеми (фільтри, підсилювачі тощо). Можна було цифрово синтезувати звук, але це вимагало обчислювальних ресурсів, які пересічна людина не могла собі дозволити (власне мейнфрейм та спеціальне обладнання цифрового аналогового перетворювача).
У міру поліпшення виготовлення мікросхем синтезатори перейшли від чистого аналогового до мікросхеми синтезатора, керованого цифровими сигналами, але все ще генеруючи аналогові сигнали, а потім до чистого цифрового синтезу (відтворення зразків, синтез ФМ, синтез справжньої добавки тощо).
Сьогодні процесори настільки дешеві і досить швидкі, що дозволяють програмістам створювати комп'ютерні версії класичних аналогових синтезаторів, які точно дублюють поведінку оригінальних мікросхем, імітуючи їх поведінку в режимі реального часу - адже телефони та планшети тепер здатні працювати досить швидко, щоб запустити ці перетворення; Korg IMS-20 є прикладом.
Як класичні синтезатори, так і нові доступні як плагіни VST або AU для цифрових аудіопрограм, таких як Ableton Live, Logic або Cubase, і вони забезпечують доступ до синтезаторів людям, які б інакше не мали місця та грошей для використання. їх.
Редагувати: Я на цьому місці також повинен згадати VCVRack , який імітує аналоговий модульний синтез у режимі реального часу. Досить крок вперед від багатогодинного часу візуалізації на кілька секунд музики.
>:*3
.
У колишні часи розріз був досить зрозумілим. Більшість речей, які потребували якнайшвидшого виконання, мали бути реалізовані апаратно. Візьмемо для прикладу мультивібратор, який генерує частоту. Не так давно вам потрібна була пара транзисторів, конденсаторів і зрештою кварц для генерації (фіксованої) частоти. Зараз є дешеві мікроконтролери, які коштують лише кілька центів або близько того. Оскільки вони такі швидкі, ви можете легко використовувати їх для створення мультивібратора. І крім того, ви легко можете за допомогою програмного забезпечення керувати частотою для створення, де в колишні часи вам потрібно було спаяти обладнання. Хоча для переходу певної (але зараз досить високої) частоти все одно знадобиться чисте обладнання. Отже, ви бачите, між обома є лінія, але частина, яку ви можете вирішити за допомогою програмного забезпечення, зростає (експоненціально).
Редагувати Насправді "Програмне забезпечення може замінити апаратне" - це не дуже правильно. Це лише той факт, що апаратне забезпечення настільки потужне, що ви можете використовувати його для запуску програмного забезпечення, яке імітує обладнання. Тож замість кількох простих, але статично паяних транзисторів ви використовуєте мільйони транзисторів, які розуміють програмне забезпечення. Отже, термін повинен бути "Апаратне забезпечення тепер може зрозуміти програмне забезпечення".
Порівняння між аркадною грою Tank (близько 1976 р.) Та домашньою консольною грою Combat (1977 р.) Дає чудовий приклад того, як програмне забезпечення могло замінити обладнання ще 40 років тому.
Аркадна гра Tank (близько 1976 року) дозволила двом гравцям їздити навколо танків і стріляти один в одного. Він не включав будь-який тип процесорів, але натомість мав апаратні лічильники, щоб відслідковувати горизонтальне та вертикальне положення електронного променя, резервуари та постріли, а також бали гравця, кути обертання, минулий час. Він мав жорстку логіку для виведення растрових даних, пов’язаних з оцінками, формами танка гравців та фоном.
Відеокомп'ютерна система Atari 2600 (домашня ігрова консоль близько 1977 р.) Включала обладнання для відстеження горизонтальних (але не вертикальних!) Позицій двох растрових об'єктів та чотирьох генераторів імпульсів змінної ширини, утримуйте та витримуйте 20-розрядний мінімум -роздільна здатність графічного шаблону ігрового поля, а також двох 8-бітних візерунків з високою роздільною здатністю, кольорів засувок для гравців, фону та ігрового поля та виявлення зіткнень між різними об'єктами. Він також включав програмований таймер загального призначення, але обладнання не мало іншого, ніж вище. Тим не менше, хоча апаратне забезпечення набагато простіше, ніж у грі Tank, картридж 2K ROM Combat дозволяє 2600 грати в ту саму основну гру, але з багатьма іншими функціями (різноманітні транспортні засоби та фони, підстрибуючі постріли тощо), оскільки він може замінити більшу частину аркадної машини ' s обладнання з програмним забезпеченням. Цікаво, що навіть незважаючи на те, що Atari 2600 є, мабуть, другою найпростішою апаратною платформою будь-якої домашньої системи відеоігор на основі мікропроцесорів, вона настільки добре розроблена, щоб полегшити заміну обладнання на програмне забезпечення, що при правильному запрограмуванні може запускати кола навколо багатьох її конкуренти.
Фраза "програмне забезпечення може замінити апаратне забезпечення" є попередженням не намагатися вирішувати проблеми з обладнанням, якщо немає явних переваг. Програмне забезпечення в 10x-50x дешевше розробити і майже нескінченно дешевше виготовити на одиницю, ніж апаратне. Виконання X в апараті не буде виграшним рішенням, якщо X справді не вдасться зробити це ефективно в програмному забезпеченні.
Нюанс вдало вирішений, але я думаю, що це можливо каменем спотикання для ОП, адже це дуже неможливо замінити обладнання на програмне забезпечення. "Апаратне забезпечення" незмінно включає значно менше "апаратного забезпечення", ніж рішення "програмного забезпечення".
Різниця полягає в тому, що логіка процесу / алгоритму / обчислення може переміщуватися між апаратним та програмним забезпеченням. Наведено багато прикладів, тому я не буду деталізувати.
На ранніх комп’ютерах з віртуальною пам’яттю вам довелося зробити перемикання задач після пропуску TLB, щоб завантажити новий запис сторінки. Шматок програмного забезпечення ОС знайде правильний процес і пройдеться по таблицях сторінок, знайшовши правильний запис і записуючи його назад до TLB. Перш ніж перейти до початкового процесу, щоб продовжити.
Зараз більшість процесорів використовує апаратне забезпечення для виконання цього процесу, читаючи таблицю сторінок, переглядаючи таблиці сторінок і оновлюючи TLB.
В обох методах потрібно використовувати програмне забезпечення для усунення несправностей сторінки, але оскільки TLB пропускає зручно перевищувати кількість помилок сторінки, апаратне забезпечення все ще перевершує програмне забезпечення.
Якщо у вас є проста процедура, з якою вам потрібно неодноразово працювати, ви знайдете апаратну заміну. Якщо у вас є складне апаратне рішення зі складним потоком управління, ви можете спростити обладнання за допомогою програмного забезпечення.
Є багато випадків, коли програмне забезпечення може замінити апаратне забезпечення і навпаки.
Класичний приклад цього - математична таблиця пошуку. Замість обчислення результатів для загальних виразів кожного разу вони зберігаються внутрішньо у вашому математичному співпроцесорі та просто посилаються, коли потрібно.
Більшість, напевно, вже знайомі з аудіофільтрами та програмним забезпеченням, яке може імітувати реальні інструменти та пристрої, такі як педалі чи підсилювачі.
Буде використано будь-яке обладнання, яке можна практично створити, якщо воно швидше та / або дешевше фізичного еквівалента.
У бухгалтерському обліку тепер копію рахунку-фактури (наприклад) тепер можна надсилати в електронному вигляді, і програмне забезпечення починає обробляти отримання цього виду документів та його обробку все більше і більше. Це прекрасний приклад обладнання, яке замінюється програмним забезпеченням.