Инженеров учат находить наилучшее решение для комплекса задач. Правда, определение «лучший» может быть достаточно расплывчатым. Иногда – это наименее затратный путь выполнения задания. В другой раз – это продукт, который вы можете создать максимально быстро. Что такое лучшее решение, чем оно отличается от плохого?
Почему же мы сознательно выбираем плохие решения?
Возьмем x86-совместимый микропроцессор. Как знают все, современные чипы с архитектурой x86 являются результатом медленного эволюционного развития, который начался в 1971 году с появлением чипа 4004. Эта громоздкая и неудобная процессорная архитектура продолжает жить и сегодня и все еще является одной из наиболее популярных в мире.
На противоположном краю всего спектра процессорных архитектур есть устройства, конфигурируемые пользователем, которые предлагают такие компании, как Tensilica, ARC (сейчас входит в состав Synopsys), IMEC и др. Все эти процессоры могут быть настроены в соответствии с особенностями приложения. Кроме того, имеются поставщики специализированных процессоров, которые предлагают кристаллы, с самого начала предназначенные для выполнения, например, задач кодирования, или проверки сетевых пакетов, или управления электроприводами, или решения десятков других сложных задач.
Можно подумать, что специализированные процессоры сейчас переживают период расцвета, а процессоры общего назначения постепенно выходят из применения. Но этого не так. Фактически, происходит прямо противоположное: x86-совместимые кристаллы поставляются в рекордных количествах, объемы продаж ARM-процессоров растут, процессоры MIPS и PowerPC чувствуют себя неплохо и все старые 8- и 16-разрядные семейства МК все еще пользуются спросом.
В чем тут дело? Почему мы покупаем старые, а не хорошие новые кристаллы?
Такое впечатление, что успех каждого семейства процессоров обратно пропорционален его гибкости. x86-совместимые процессоры остаются популярными на протяжении многих лет. Каждое новое процессорное ARM-ядро в точности напоминает предыдущее со времени появления компании Acorn RISC Machine. На процессорах MIPS и PowerPC все еще можно запустить старые двоичные файлы. И одному богу известно, будут ли в дальнейшем совершенствоваться 8051, 6805 и другие старые процессоры.
В противоположность этому, специализированные и конфигурируемые процессоры развиваются крайне непоследовательно. Они делают резкие повороты, следуя за появлением новейших приложений и последних достижений в компьютерной науке. Они всегда отвечают самым современным требованиям. Одним словом, они оптимизированы. И, тем не менее, они непопулярны. Почему так происходит?
Можно подумать, что инженеры всегда делают выбор в пользу наилучшего технического решения любой задачи. Даже когда цена является контролируемым параметром, специализированные процессоры часто намного дешевле процессоров широкого применения. Они более энергоэффективны. По существу, они лучше во всех отношениях и все же мы, как правило, делаем выбор в пользу неоптимизированной альтернативы. Мы ходить стадом и не отклоняемся от середины дороги.
Для этого есть несколько причин. Одной из них является то, что мы просто лишены воображения. Или у нас нет времени оценить все альтернативы, поэтому мы выбираем из нескольких вариантов, о которых знаем. Или мы предпочитаем повторно использовать знакомое нам аппаратное обеспечение, тем самым, сохраняя навечно старые архитектуры. Возможно, мы не верим заявлениям новых компаний, предлагающих специализированные процессоры. Может быть, программисты не хотят изучать новый компилятор. Не исключено, что начальство навязывает использование старых процессоров.
Какой бы ни была причина, мы старательно избегаем «лучшее» аппаратное средство для работы. Часть причин может быть связана с возможностью контроля. Мы любим контролировать что-либо – но не все – в своих проектах. Это может быть прикладным программным обеспечением, а может периферийными аппаратными средствами или пользовательским интерфейсом. Но есть такие части проекта, которые мы с готовностью оставляем для контроля другим. Иногда мы просто чувствуем себя лучше, когда кто-нибудь еще берет в свои руки руководство.
Необходимость выбора между принуждением и руководством зависит от человека или обстоятельств. Маленькие дети любят крепко укутываться в свои одеяла, и они будут пугаться или плакать, если им дать слишком много свободы для движения. Подростки хотят прямо противоположное. Граждане жестко контролируемых государств (скажем, Северной Кореи) решительно полагают, что их государственный строй самый лучший. Жители относительно свободных государств думают то же самое. Ясно, что нет одного ответа для всех.
Работающие инженеры (то есть, те которые получают деньги за свою работу) знают, что успешный проект полностью построен на компромиссных решениях, и что вы не в состоянии постоянно думать о каждом принятом решении. Понятие «достаточно хорошо» – это то, что отличает технику от науки. Срочный выбор процессора – это первый шаг на пути быстрого создания продукта. Расчет на надежность старого процессора может быть лучше, чем вероятность завязнуть в трясине конфигурируемого устройства. Это не всегда является «наилучшим» решением и не всегда самым красивым, но часто наиболее рациональным и успешным. Но оно никогда не будет плохим.
Автор: Джим Тьюэрли
Перевод: Виктор Ежов


23 марта, 2017
22 июня, 2017