Программные эксперты проигнорировали экономику аппаратного обеспечения
... или "Мур был прав, и они оба были неправы"
Самая большая вещь, которая была упущена в ходе этой дискуссии, это влияние технологий и экономики производства процессоров, обусловленное уменьшением размеров транзисторов, как это выражено в законе Мура (неудивительно, что они много знали об аппаратном обеспечении процессора, эти ребята изучали и обсуждали программное обеспечение, а не Производство процессора или экономика). Постоянные производственные затраты, амортизируемые по процессорам (например, проектирование ISA, проектирование процессоров и производство процессоров), быстро росли, что увеличивало экономию за счет масштаба; с учетом удельной стоимости ЦП (с точки зрения «отдачи за доллар» и «отдачи за ватт») стоимость ЦП не должна амортизироваться по такому широкому выбору функций для обеспечения ценности, поэтому вычисления в продуктах с фиксированной функцией взорвался; Бюджет транзисторов процессора вырос в геометрической прогрессии,
1. Масштаб CPU выигрывает у процессора
Важность эффекта масштаба позволила использовать преимущества ISA / CPU для более крупного (и, следовательно, более широкого) рынка, что перевешивает потенциальные выгоды от выбора дизайна, который сужает рынок для ISA / CPU. Операционные системы могут охватывать все большую и большую часть рынка в зависимости от поддерживаемых ISA / CPU, поэтому нет необходимости (или даже нет необходимости) в переносе упражнений, чтобы позволить экосистеме ОС процветать. Проблемные области Задачи ISA и ЦП имеют тенденцию быть настолько широкими, что они в основном перекрываются, поэтому для любого программного обеспечения, кроме компилятора, размер упражнений на перенос также уменьшился. Возможно, и Торвальдс, и Таненбаумпереоценил ту часть проектирования и реализации ядра, которая теперь должна быть ориентирована на ISA или даже на процессор. Как описал Таненбаум, современные ядра ОС абстрагируют различия между процессорами и ISA. Однако специфичный для CPU / ISA код в современных ОС намного меньше, чем микроядро. Вместо того чтобы реализовывать обработку / планирование прерываний, управление памятью, связь и ввод-вывод, эти непереносимые биты охватывают лишь малую часть реализации этих служб, причем подавляющее большинство архитектуры даже этих основных функций ОС являются переносимыми.
2. Открытый исходный код выиграл битву, но проиграл войну
Больше отдачи означает, что большую долю вычислений выполняют продукты с фиксированными функциями, где возможность модифицировать продукт не является частью ценностного предложения для клиента. По иронии судьбы, в этих устройствах с фиксированными функциями процветал открытый исходный код, но чаще всего преимущества этих свобод в большей степени реализуются производителями продуктов, а не конечными пользователями (что на самом деле было верно для рынка программного обеспечения даже тогда: Microsoft был большим потребителем программного обеспечения с открытым исходным кодом, но их клиенты не были). Точно так же можно утверждать, что открытый исходный код больше боролся в настольном пространстве общего назначения, чем где бы то ни было, но по мере роста веб- и облачных вычислений настольные вычисления все чаще используются для более узких целей (в основном, с использованием браузера), с остальными функциями, работающими в облаке (как ни странно, в основном на платформах с открытым исходным кодом). Вкратце: open source действительно владеет вычислительным пространством общего назначения, но рынок стал более изощренным; упаковка вычислительных продуктов реже останавливается на функциях общего назначения, но продолжается вместе с продуктами, предназначенными для фиксированных функций, где большая часть преимуществ вычислений с открытым исходным кодом находится в противоречии с целями продукта.
3. 2 n Фиксированные средства роста k Экономия не важна
Экспоненциальный рост транзисторных бюджетов привел к осознанию того, что стоимость транзисторных бюджетов в архитектуре CISC практически полностью фиксирована. Стратегическое преимущество RISC заключалось в том, что он переносил сложность из набора команд ЦП и в компилятор (без сомнения, отчасти это мотивировалось тем фактом, что разработчики компиляторов извлекали гораздо меньшую выгоду из сложных ISA, чем программисты-программисты в сборке, но компиляторы могли бы гораздо легче рассуждать математически и, следовательно, использовать более простую ISA); Полученная экономия на транзисторах может быть затем применена для повышения производительности процессора. Предостережение заключалось в том, что экономия транзисторного бюджета от более простого ISA была в основном фиксированной (и накладные расходы при проектировании компилятора также были в основном исправлены). Хотя это фиксированное влияние было огромной частью бюджета в те времена, как можно себе представить, для того чтобы воздействие стало тривиальным, требуется всего несколько раундов экспоненциального роста. Это быстро уменьшающееся влияние в сочетании с вышеупомянутым быстро растущим значением монокультуры ЦП означало очень маленькую возможность для любого нового ISA утвердиться. Даже там, где новые ISA действительно преуспели, современные ISA "RISC" не являются ортогональными ISA, описанными в стратегии RISC, так как продолжающийся рост транзисторных бюджетов и, в частности, более широкое применение обработки SIMD стимулировали принятие новых инструкций, настроенных для конкретных функций. Это быстро уменьшающееся влияние в сочетании с вышеупомянутым быстро растущим значением монокультуры ЦП означало очень маленькую возможность для любого нового ISA утвердиться. Даже там, где новые ISA действительно преуспели, современные ISA "RISC" не являются ортогональными ISA, описанными в стратегии RISC, так как продолжающийся рост транзисторных бюджетов и, в частности, более широкое применение обработки SIMD стимулировали принятие новых инструкций, настроенных для конкретных функций. Это быстро уменьшающееся влияние в сочетании с вышеупомянутым быстро растущим значением монокультуры ЦП означало очень маленькую возможность для любого нового ISA утвердиться. Даже там, где новые ISA действительно преуспели, современные ISA "RISC" не являются ортогональными ISA, описанными в стратегии RISC, так как продолжающийся рост транзисторных бюджетов и, в частности, более широкое применение обработки SIMD стимулировали принятие новых инструкций, настроенных для конкретных функций.
4. Простота: разделение проблем. Комплекс: Разделение адресного пространства.
Современное ядро Linux (наряду с большинством других ядер) соответствует довольно свободному определению макроядра, а не узкому определению микроядра. Тем не менее, с его архитектурой драйвера, динамически загружаемыми модулями и оптимизацией многопроцессорной обработки, которые делают обмен данными в пространстве ядра все более похожим на передачу сообщений микроядром, его структура больше напоминает проект микроядра (как воплощено в Minix), чем проект макроядра (как воплощено в дизайне Linux). на момент обсуждения). Как и дизайн микроядра, ядро Linux обеспечивает обобщенную связь, планирование, обработку прерываний и управление памятью для всех других компонентов ОС; его компоненты имеют тенденцию иметь различный код и структуры данных. Пока модули загружаются динамически, Слабосвязанные фрагменты переносимого кода, которые взаимодействуют через фиксированные интерфейсы, не используют одно оставшееся свойство микроядра: они не являются процессами пространства пользователя. В конце концов, закон Мура гарантировал, что проблемы, вызванные проблемами с оборудованием, такими как переносимость (забота Таненбаума) и производительность (забота Торвальдса), уменьшились, но вопросы разработки программного обеспечения стали первостепенными. Оставшиеся нереализованные преимущества, которые может обеспечить разделение адресных пространств, перевешиваются дополнительным багажом, налагаемым на программное обеспечение ОС из-за ограничений дизайна и повышенной сложности интерфейсов компонентов. Закон гарантировал, что проблемы, вызванные проблемами с оборудованием, такими как переносимость (забота Таненбаума) и производительность (забота Торвальдса), уменьшились, но вопросы разработки программного обеспечения стали первостепенной важностью. Оставшиеся нереализованные преимущества, которые может обеспечить разделение адресных пространств, перевешиваются дополнительным багажом, налагаемым на программное обеспечение ОС из-за ограничений дизайна и повышенной сложности интерфейсов компонентов. Закон гарантировал, что проблемы, вызванные проблемами с оборудованием, такими как переносимость (забота Таненбаума) и производительность (забота Торвальдса), уменьшились, но вопросы разработки программного обеспечения стали первостепенной важностью. Оставшиеся нереализованные преимущества, которые может обеспечить разделение адресных пространств, перевешиваются дополнительным багажом, налагаемым на программное обеспечение ОС из-за ограничений дизайна и повышенной сложности интерфейсов компонентов.
Интересно то , что уже было сильной тенденцией является появление гипервизора, который так же, как микроядер, абстрагируется из аппаратных средств. Некоторые утверждают, что гипервизоры являются микроядрами. Однако архитектура гипервизора отличается, поскольку обязанности, которые должны принадлежать микроядрам, обрабатываются «гостевыми» ядрами, расположенными поверх них, с мультиплексорами гипервизоров между ними, и абстракция гипервизора - это не общий обмен сообщениями и адресное пространство памяти, а преимущественно фактическая аппаратная эмуляция.
В заключение: будущее благоволит тем, кто принимает наименьшую строгую семантику
* .. или "придурки сосут, предсказывая будущее"
На практике много правильности / неправильности в дебатах - это вопрос семантики (и это было частью того, о чем спорил Торвальдс, и ИМХО Таненбаум не смог полностью оценить). Трудно дать точные определения о будущем, потому что существует множество факторов, выходящих за рамки аргумента, которые могут сыграть; Более слабая семантика означает, что ваши прогнозы на мишень больше, чем у других, что дает вам лучшие шансы. Если вы игнорируете семантику, аргументы, выдвинутые как Торвальдсом, так и Таненбаумом, были правы в отношении многих вещей и неправильны в отношении очень немногих.
ТЛ; др
Большинство ISA не соответствуют семантическому определению RISC, но используют большинство преимуществ дизайна, которые отличали ЦП RISC в то время; количество ОС, которое зависит от процессора, меньше, чем ожидал Таненбаум, не говоря уже о Торвальдсе; открытый исходный код доминирует в вычислениях общего назначения, но потребители этого рынка в настоящее время в основном являются теми, кто объединяет вычисления с более фиксированными функциональными продуктами, где большая часть преимуществ программного обеспечения с открытым исходным кодом не реализована; разделение функций ОС по адресным пространствам оказалось неэффективным, но разделение функций ОС по «виртуальному» оборудованию имеет смысл. Если вы хотите утверждать, что ваши прогнозы подтвердились, оставьте себе как можно больше смысла в семантическом маневрировании, как у мистера Торвальдса.
PS Последнее ироническое наблюдение: Линус Торвальдс - один из самых сильных сторонников сохранения как можно большего количества новых функций в пользовательском пространстве и вне ядра Linux.