Изучая курс для начинающих по аппаратному / программному интерфейсу и операционным системам, часто возникает вопрос о том, будет ли лучше заменить некоторые аппаратные части программным обеспечением и наоборот. Я не могу установить связь.
Изучая курс для начинающих по аппаратному / программному интерфейсу и операционным системам, часто возникает вопрос о том, будет ли лучше заменить некоторые аппаратные части программным обеспечением и наоборот. Я не могу установить связь.
Ответы:
Я думаю, что фундаментальная связь, которой нет в других ответах, заключается в следующем:
Имея универсальный компьютер (например, процессор), можно запрограммировать его для выполнения практически любых вычислений, которые мы определили. Тем не менее, специализированное оборудование может работать лучше или может не обеспечивать какую-либо ценность.
(этот ответ сфокусирован на обработке рабочего стола и использует примеры из этого домена)
Если вы достаточно взрослые, чтобы помнить компьютерные игры в середине-конце 1990-х, вы, вероятно, помните игры FPS, такие как Quake . Изначально он представлял собой «программный рендеринг», то есть процессор выполнял вычисления, необходимые для рендеринга графики. Между тем, ЦП также должен был выполнять обработку ввода, обработку звука, обработку AI и т. Д. Это очень сильно загружало ресурсы ЦП. Кроме того, обработка графики не подходит для основного процессора (тогда или сейчас). Это очень параллельная задача, требующая гораздо больше ядер, чем даже современный высокопроизводительный процессор (8).
Мы перевели обработку графики с программного обеспечения на аппаратное обеспечение: введем 3dfx Voodoo и Nvidia TNT (теперь GeForce ). Это были специализированные видеокарты, которые выгружали обработку из процессора в графический процессор. Это не только распространило рабочую нагрузку, предоставив больше вычислительных ресурсов для выполнения того же объема работы, но и было специализированным аппаратным обеспечением, которое могло воспроизводить трехмерную графику намного быстрее и с большим количеством функций, чем процессор.
Перенесемся в современную эпоху, и на рабочем столе требуется непроцессорная графика . Даже операционная система не может функционировать без графического процессора. Очень важно, чтобы ЦП фактически интегрировали графические процессоры сейчас. 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. Сравните это с современным процессором Core i7 6-го поколения, использующим список MIPS из Википедии , а современный процессор работает примерно в 590–1690 раз быстрее. Отчасти это связано с тактовой частотой, а также с переходом на несколько ядер в качестве стандарта, а также с современными процессорами, выполняющими намного больше работы на ядро за такт. Также важно то, что по мере развития технологий Intel (доминирующая на рынке настольных компьютеров и серверов x86) добавляет специальные инструкции, помогающие ускорить операции, которые хотят выполнять пользователи настольных компьютеров (например, декодирование видео).
Я удивлен, что никто еще не упомянул один из самых ярких примеров: программно-определяемое радио.
Если вы вернете современный смартфон на 50 лет назад и продемонстрируете его компетентному инженеру середины 1960-х, он сможет понять большую его часть. Что суперкомпьютер можно превратить в то, что умещается в вашем кармане? Проверьте. Что у вас в упаковке может быть эквивалент цветного телевизора сверхвысокого качества? Проверьте. Что это намного быстрее, имеет гораздо больше памяти и т. Д., Чем компьютеры той эпохи? Проверьте. Это программное обеспечение было написано, что может выполнять такие сложные функции? Проверьте.
Но скажите этому компетентному инженеру, что, кстати, этот пакет содержит набор чрезвычайно эффективных передатчиков и чувствительных приемников: цифровой приемопередатчик с расширенным спектром, который может одновременно передавать и принимать по нескольким каналам, связываясь с вышкой инфраструктуры, которая может находиться на расстоянии нескольких миль. ; другой цифровой приемопередатчик, который передает высокоскоростные данные с базовой станцией где-то в здании; еще один цифровой приемопередатчик, который связывается с носимыми устройствами с низким энергопотреблением; и другой приемник, который принимает слабый сигнал со спутника на промежуточной орбите ... он назвал бы вас лжецом.
Он назвал бы вас лжецом, потому что знает, что приемники с такой высокой чувствительностью не могут быть построены без множества настроенных цепей, которые отфильтровывают соседние станции и выбирают интересующий сигнал. И что такие схемы требуют частей с размерами, которые определяются физикой больше, чем технология, таких как конденсаторы и катушки индуктивности.
Затем вам нужно будет объяснить, что в современном радио большинство этого делается программным обеспечением. Что после того, как сигнал, поступающий от антенны, преобразуется в промежуточную частоту и немного усиливается, он затем дискретизируется аналого-цифровым преобразователем; и последующая обработка происходит в процессоре цифрового сигнала. Вся эта настройка, та фильтрация, которая раньше требовала тонны аппаратного обеспечения в старшей школе радио высокого класса, может быть описана в форме математических уравнений; и если это может быть сделано, эти уравнения могут быть выполнены в режиме реального времени DSP.
Это, я думаю, один из самых ярких примеров замены программного обеспечения аппаратным обеспечением. В результате мы носим смартфоны в карманах, что даже для компетентного инженера 1960-х годов было бы сродни волшебному трюку.
По сравнению с этим идея о том, что простая логика устройства открывания гаражных ворот, электронных весов для ванной комнаты или телевизора в настоящее время реализуется с использованием универсального микроконтроллера и программного обеспечения вместо нестандартного оборудования, кажется почти тривиальной (и это, безусловно, будет много более понятным нашему гипотетическому инженеру 1960-х годов, чем программно-определяемым радио.)
Рассмотрим эту схему:
Это флип-флоп, он же бистабильный мультивибратор. Его можно заменить следующим кодом:
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;
Это означает именно то, на что это похоже.
Особенно известный пример - диск II, разработанный Стивом Возняком для Apple II:
Главным нововведением было сделать контроллер компактным с помощью программного обеспечения, в то время как конкуренты полагались на аппаратное обеспечение. Как вспоминает Билл Фернандес, в то время технический специалист Apple по электронике, «ключевое преимущество дизайна [Возняка] заключалось в том, что он использовал только шесть чипов вместо обычных 60–70.
Другой пример, с которым вы, вероятно, больше знакомы: эмуляторы. Они заменяют весь набор аппаратного обеспечения (и программного обеспечения) полностью программным обеспечением. Процессоры, различные микросхемы управления, даже устройства хранения.
Теперь вы не можете устранить все оборудование, в конечном итоге вам нужно что-то для запуска программного обеспечения. Но в целом любая логическая задача, которую вы можете реализовать на аппаратном уровне, также может быть реализована программно (производительность может быть не одинаковой, она может быть медленнее, быстрее или в разных ситуациях, в зависимости от базового оборудования и реализации).
Другая область, в которой это действительно так, - это синтезаторы.
Ранние синтезаторы были на 100% аналоговыми аппаратными средствами, которые генерировали сигналы непосредственно, а затем модифицировали их с помощью схем (фильтры, усилители и т. Д.). Можно было синтезировать звук в цифровом виде, но для этого требовались вычислительные ресурсы, которые средний человек не мог себе позволить (реальный мэйнфрейм и специальное аппаратное обеспечение цифро-аналогового преобразователя).
По мере совершенствования производства микросхем синтезаторы перешли от чисто аналоговых к микросхемам синтезаторов, управляемых цифровыми сигналами, но все еще генерирующими аналоговые сигналы, а затем к чисто цифровому синтезу (воспроизведение сэмплов, синтез FM , истинный аддитивный синтез и т. Д.).
Сегодня процессоры настолько дешевы и достаточно быстры, что позволяют программистам создавать компьютерные версии классических аналоговых синтезаторов, которые точно дублируют поведение исходных микросхем, моделируя их поведение в режиме реального времени - фактически, телефоны и планшеты теперь способны работать достаточно быстро, чтобы запустить эти воссоздания; Korg IMS-20 является примером.
И классические синтезаторы, и новые доступны в виде плагинов VST или AU для цифровых аудиопрограмм, таких как Ableton Live, Logic или Cubase, и они предоставляют доступ к синтезаторам людям, у которых иначе не было бы места или денег для использования. их.
Редактировать: я должен также упомянуть VCVRack , который имитирует аналоговый модульный синтез в реальном времени. Совершенно на шаг вперед от многочасового рендеринга для нескольких секунд музыки.
>:*3
.
В прежние времена разрез был довольно четким. Большинство вещей, которые требовали быстрого выполнения, должны были быть реализованы аппаратно. Возьмите, например, мультивибратор, который генерирует частоту. Не так давно вам потребовалась пара транзисторов, конденсаторов и, в конечном итоге, кварц для генерации (фиксированной) частоты. Сейчас есть дешевые микроконтроллеры, которые стоят всего несколько центов или около того. Поскольку они очень быстрые, вы можете легко использовать их для создания мультивибратора. Более того, с помощью программного обеспечения вы легко можете контролировать, какую частоту генерировать, где раньше вам приходилось паять другое оборудование. Тем не менее, при переходе на определенную (но сейчас довольно высокую) частоту вам все равно потребуется чистое аппаратное обеспечение. Итак, вы видите, что между ними есть грань, но доля, которую вы можете решить с помощью программного обеспечения, растет (экспоненциально).
Редактировать На самом деле «Программное обеспечение может заменить оборудование» не совсем правильно. Это просто факт, что аппаратное обеспечение стало настолько мощным, что вы можете использовать его для запуска программного обеспечения, которое эмулирует аппаратное обеспечение. Таким образом, вместо нескольких простых, но статически спаянных транзисторов вы используете миллионы транзисторов, которые понимают программное обеспечение. Таким образом, термин должен быть «Аппаратные средства теперь могут понимать программное обеспечение».
Сравнение между аркадной игрой Tank (около 1976 года) и домашней консольной игрой Combat (1977) дает хороший пример того, как программное обеспечение могло заменить аппаратное обеспечение даже 40 лет назад.
Аркадная игра Tank (около 1976 года) позволила двум игрокам объезжать танки и стрелять друг в друга. Он не включал какой-либо процессор, но вместо этого имел аппаратные счетчики для отслеживания горизонтального и вертикального положения электронного луча, танков и выстрелов, а также счета игрока, углов поворота, истекшего времени. У него была встроенная логика для вывода растровых данных, связанных с результатами, формами танков игроков и фоном.
Видеокомпьютерная система Atari 2600 (домашняя игровая консоль около 1977 года) включала аппаратное обеспечение для отслеживания горизонтального (но не вертикального!) Положения двух растровых объектов и четырех генераторов импульсов переменной ширины, удержания и отключения минимума шириной 20 бит -разрешение графического шаблона игрового поля, а также двух 8-битных шаблонов высокого разрешения, фиксация цветов для игроков, фона и игрового поля и обнаружение столкновений между различными объектами. Он также включал программируемый таймер общего назначения, но аппаратное обеспечение имело немного другое, чем указано выше. Тем не менее, несмотря на то, что аппаратное обеспечение намного проще, чем у игрового танка, патрон Combat 2K ROM позволяет 2600 играть в ту же самую основную игру, но со многими другими функциями (разнообразными транспортными средствами и фонами, прыгающими выстрелами и т. Д.), Потому что он может заменить большую часть аркадной машины » Аппаратное обеспечение с программным обеспечением. Интересно, что хотя Atari 2600, вероятно, является второй по простоте аппаратной платформой среди всех продаваемых на рынке микропроцессорных систем домашних видеоигр, он настолько хорошо спроектирован, чтобы облегчать замену аппаратного обеспечения программным обеспечением, что при правильном программировании может вращаться вокруг многих его конкуренты.
Фраза «программное обеспечение может заменить оборудование» является предупреждением о том, что не стоит пытаться решать проблемы с оборудованием, если нет явных преимуществ. Программное обеспечение в 10–50 раз дешевле в разработке и почти бесконечно дешевле в расчете на единицу продукции, чем оборудование. Выполнение X в оборудовании не будет выигрышным решением, если X действительно не может быть эффективно сделано в программном обеспечении.
Этот нюанс хорошо решен, но я думаю, что он может стать камнем преткновения для OP, поскольку его замена аппаратного обеспечения на программное обеспечение невозможна. «Аппаратное обеспечение» неизменно включает в себя значительно меньше «аппаратного обеспечения», чем «программное» решение.
Разница в том, что логику процесса / алгоритма / вычисления можно перемещать между аппаратным и программным обеспечением. Было приведено много примеров, поэтому я не буду подробно останавливаться.
На ранних компьютерах с виртуальной памятью вам приходилось переключать задачи при пропадании TLB для загрузки новой записи страницы. Часть программного обеспечения ОС найдет правильный процесс и пройдет по таблицам страниц, найдет правильную запись и вернет ее обратно в TLB. Прежде чем вернуться к исходному процессу, продолжите.
Теперь большинство процессоров используют аппаратное обеспечение для выполнения процесса, чтения таблицы страниц, обхода таблиц страниц и обновления TLB.
Оба метода должны использовать программное обеспечение для обработки сбоев страниц, но, поскольку TLB-пропуски легко превосходят число сбоев страниц, аппаратное обеспечение все еще превосходит программное обеспечение.
В общем, если у вас есть простая процедура, которую вы должны выполнять неоднократно, вы найдете замену оборудования. Если у вас есть сложное аппаратное решение со сложным потоком управления, вы можете упростить аппаратное обеспечение с помощью программного обеспечения.
Есть много случаев, когда программное обеспечение может заменить аппаратное обеспечение и наоборот.
Классическим примером этого является математическая таблица поиска. Вместо того, чтобы каждый раз вычислять результаты для общих выражений, они хранятся внутри вашего математического сопроцессора и просто используются при необходимости.
Большинство из них, вероятно, уже знакомы с аудио фильтрами и программным обеспечением, которое может имитировать реальные инструменты и устройства, такие как педали или усилители.
Будет использовано любое оборудование, которое можно создать виртуально, если оно быстрее и / или дешевле, чем физический эквивалент.
В бухгалтерском учете печатная копия счета-фактуры (например) теперь может быть отправлена в электронном виде, и программное обеспечение все больше начинает обрабатывать получение этого вида документов и их обработку. Это отличный пример замены оборудования программным обеспечением.