Может ли какое-либо техническое достижение компьютерной эры соперничать по своей значимости с микропроцессором? Думаю, что нет. Первые микропроцессоры, короткая история которых началась всего десятилетие назад, основывались главным образом на достижениях микроэлектроники - технологии, возникшей гораздо позднее появления самих ЭВМ и в значительной степени независимо от них. В противоположность этому внушительные успехи в развитии микропроцессоров в наши дни существенным образом опираются на синтез новейших принципов архитектуры ЭВМ и операционных систем и на последние достижения в области их программного обеспечения, т. е. на итоги нескольких десятилетий развития вычислительной техники.
С самого начала конструкторы и изготовители микропроцессоров вызывали бурное одобрение, как только им удавалось продемонстрировать, что каждая их новая разработка еще на какой-то шажок становится ближе по структуре к современной средней или большой вычислительной машине. Наблюдатели без труда приходили к выводу, что если плотность монтажа, быстродействие и возможности автоматического проектирования будут продолжать возрастать в соответствии с ожиданиями, то микропроцессоры вскоре по мощности и логике сравняются с крупными мини-ЭВМ, а возможно, и с большими вычислительными машинами.
Большинство из этих прогнозов сейчас оправдалось. Однако гораздо меньшее число наблюдателей предвидело, что вскоре наступит день, когда существенные достижения в архитектуре больших вычислительных машин будут реализованы и в микропроцессорах. Для развивающейся в условиях жесткой конкуренции индустрии вычислительной техники казалось маловероятным, чтобы какая-то сравнительно молодая полупроводниковая фирма сумела в разработке архитектуры ЭВМ отвоевать лидерство у солидных компьютерных компаний. И все же похоже на то, что именно это уже происходит; данная книга как раз является попыткой описать, как и почему возникло такое положение.
Фирма "Интел" является признанным лидером и крупнейшим представителем микроэлектронной технологии. В недавнем объявлении фирма заверяет, что начиная с 1971 г. она ответственна за все важнейшие технологические достижения в развитии микроэлектроники. Утверждается, что последним наиболее важным вкладом в этой области явилась новая система iAPX-432 [1]. Дословно в объявлении говорится: "1981 г.: задавшись целью максимально сократить расходы на программное обеспечение, фирма "Интел" отказалась от традиционной архитектуры вычислительных машин и предложила "расширяемую" микропроцессорную систему, специально оптимизированную для обработки информации". Это лаконичное заявление для большинства из нас должно послужить серьезным вызовом, поскольку если это действительно так, то специалисты по вычислительной технике должны как можно скорее ознакомиться с этой системой, с тем чтобы найти пути для ее применения. Так или иначе, все это возбудило любопытство у широкого круга специалистов. Предстояло серьезно изучить это заявление.
Большинство опубликованных в литературе материалов по системе iAPX-432 пока принадлежит самой фирме "Интел". Но, несомненно, число публикаций из иных источников будет возрастать по мере того, как образцы новой системы станут доступными другим специалистам, которые накопят опыт в использовании их для решения своих проблем и подтвердят или опровергнут заявление фирмы "Интел". Я вижу свою задачу не только в том, чтобы попытаться разъяснить широкой аудитории специалистов по вычислительной технике - инженерам, аналитикам, программистам и студентам - смысл заявления фирмы "Интел", но и в том, чтобы ознакомить читателя с принципами и концепциями, лежащими в основе архитектуры ЭВМ, операционных систем и языка программирования, что поможет потенциальным пользователям системы iAPX-432 быстрее освоиться с ней. Предполагается. что читатель книги знаком с программированием, а также с языком Ада или языком Паскаль.
[Главы из этой книги могут быть использованы в качестве учебного пособия в различных традиционных курсах вычислительной техники; черновики гл. 1 и 2 использовались мною в курсе по языкам программирования, а отдельные разделы гл. 1, 4-7 и 9 - в курсе по архитектуре вычислительных машин; я планирую также использовать разделы из гл. 1 и 4-10 по операционным системам. Возможно, что и другие преподаватели вычислительной техники найдут в ней полезный материал для учебного процесса.]
Эта книга появилась благодаря тому счастливому обстоятельству, что в начале 1980 г. я был приглашен сотрудниками группы эксплуатации специальных систем фирмы "Интел" в Алохе, шт. Орегон, для изучения и описания системы iAPX-432, находившейся к тому времени уже в продвинутой стадии разработки. Во время первого визита в Алоху мне сразу же стало ясно, что назревает существенный скачок в развитии архитектуры вычислительных машин. Несколько лет до этого я изучал архитектуру ЭВМ главным образом с точки зрения соответствия машинных структур семантическим моделям языков программирования и создания "архитектурного обеспечения" для конструирования надежных, мощных и одновременно простых операционных систем. Возможность изучения новой системы фирмы "Интел" и написание книги о ней в то время, когда система эта была новой и незнакомой для многих, включая и сотрудников самой фирмы, была для меня весьма притягательной, хотя и довольно непривычной. Я без особых колебаний погрузился в эту работу.
Представленное исследование отражает мое представление о системе 432 фирмы "Интел", сложившееся к июлю 1982 г. Это в основном техническое описание и обсуждение, но отнюдь не текущее "описание продукта", хотя мне оказывали помощь отдельные сотрудники фирмы "Интел", занятые проектированием и созданием системы 432, как "конечного продукта".
Студенты, изучающие архитектуру вычислительных машин, должны четко представлять себе, что в iAPX-432 реализованы крупные технологические достижения в четырех областях:
Объединение нескольких технологических новшеств в одной системе, которая обещает дать большие преимущества, чем можно ожидать от каждого из них в отдельности, представляет собой весьма сложную задачу. Некоторых читателей могут заинтересовать теоретические предпосылки указанных технологических достижений, из которых по меньшей мере одно до сих пор считается спорным. Для таких читателей ниже дается краткий анализ проблемы. В целом можно сказать, что использование этих достижений привело к архитектуре, использующей многопроцессную обработку в "прозрачном" режиме и объектно-ориентированное коммуникацинно-вычислительное оборудование, что позволило достичь новых уровней простоты и эффективности. Все эти важные требования подробно объясняются в гл. 1. В ней также описываются причины создания для их реализации системы Интел 432. Читателям, несомненно, захочется иметь подробное представление о том, какие преимущества дают эти технические решения. Этой теме посвящены гл. 2-10. Приводимые в них подробности дают читателю также возможность сделать собственные выводы о том, а) были ли достигнуты заданные проектные параметры и б) были ли получены ожидаемые от них преимущества. В последнем разделе гл. 1 описаны цели каждой последующей главы. Таким образом, введение к данной книге фактически начинается с гл. 1. Однако я не смог противостоять искушению предварить это введение следующими четырьмя наблюдениями.
Технология СБИС и САПР. Лидерство фирмы "Интел" в технологии производства полупроводников отчетливо продемонстрировано в 1971 г., когда фирма объявила о создании первого (4-битового) микропроцессора - 4004. Это лидерство сохранилось и по сей день.
Казалось бы, для такого лидера полупроводниковая n-канальная МОП-технология, использованная при создании кристалла микропроцессора 432, явилась "простым" развитием предыдущих достижений. Усовершенствование, по-видимому, в первую очередь касалось управления технологическим процессом, поскольку поверхность кристалла была существенно увеличена при сохранении количественного выхода готовых изделий. При этом на первый взгляд могло показаться, что фирма "Интел" не добилась никаких существенных успехов в увеличении плотности компоновки, стратификации и топологии интегральных схем. Однако при ближайшем рассмотрении обнаруживается возросшая по сравнению с предыдущими микропроцессорами фирмы "Интел" логическая сложность, а также число и размер рисунков схемы.
На самом деле усовершенствования стали возможными лишь благодаря использованию новейших достижений в области методологии проектирования вычислительной техники с использованием новых средств программного обеспечения. Данная методология основана на концепции пяти иерархически расположенных уровней описания, анализа и проектирования - начиная с уровня макрокоманд (на котором представляются и воспринимаются макроинструкции архитектуры) до маскируемого уровня (на котором представляются и воспринимаются базовые физические устройства, представляющие абстракции более высоких уровней) [2]. Для каждого уровня формулируются свои принципы проектирования программного обеспечения, анализа и языка описания. Программная проверка на непротиворечивость производится на каждом уровне, но, кроме того, были созданы дополнительные программы, осуществляющие проверку на непротиворечивость между уровнями. (Подобная методология явилась результатом последних достижений в теории вычислительной техники и программного обеспечения, относящихся к формальным определениям и верификации.)
Логические структуры для систем аппаратного обеспечения. Здесь речь пойдет о семантике набора команд вычислительной машины. С точки зрения достижения желаемого семантического соответствия машинных команд среди проектировщиков вычислительной техники можно выделить две школы: одна стремится максимально упростить смысловое значение каждой команды (сводя ее к атомарному элементу), другая предпочитает иметь дело с набором семантически мощных (и более специализированных) команд. В системе i432 реализована концепция второй из этих школ.
Сторонники первой школы предпочитают команды с относительно элементарной семантикой, каждая из которых выполняет ограниченную функцию, желательно за один рабочий цикл процессора. (Например, при возможности выбора между одноадресными и трехадресными командами эта школа остановит свой выбор на одноадресных.) Таким образом, достаточно, чтобы набор доступных команд позволял выполнять все типы действий, которые требуются от данной вычислительной машины. (Стараются выбрать такой набор команд, семантики которых являются взаимно ортогональными.)
Одной из причин такого выбора является стремление увеличить скорость обработки, организуя выполнение наиболее часто используемых команд чисто аппаратно и интерпретируя менее часто выполняемые команды либо в микрокоде, либо в подпрограммах макроинструкций [3]. Основным требованием к проектированию является максимальное вовлечение в процесс выполнения команд процессорной логики.
Для таких систем, имеющих относительно простую логическую структуру, ресурсы вычислительной машины могут в принципе быть оптимизированы по отношению к пользователю, например через использование высококачественных компиляторов [4].
[С другой стороны, увеличение семантического содержания отдельных инструкций набора команд затрудняет создание компилятора, выбирающего "наилучшие" последовательности команд, и даже при этом наилучшие последовательности команд, возможно, могут оказаться не оптимальными с точки зрения наилучшего использования ресурсов системы. Одним из аргументов является тот факт, что повышение семантического содержания в ряде возникающих в особых ситуациях случаев снижает возможности пользователя.
Эта логика переносима и на уровень программного обеспечения. Довольно часто семантика выбранного языка программирования и (или) его реализация препятствуют реализации определенных функциональных возможностей, которые могут потребоваться пользователю [5].
Несмотря на то что в подавляющем большинстве эти препятствия не оказывают существенного влияния, они могут привести к выбору неэффективных решений в тех случаях, когда пользователь, имеющий более обширное представление о системе, может предложить или реализовать лучший подход.]
Вторая школа (делающая акцент на семантическом содержании команд) имеет разнообразных защитников, заинтересованных в обеспечении согласованности аппаратной части с конкретными языками высокого уровня или с конкретными конструкциями внутри этих языков, такими как процедурные обращения, вызовы сопрограмм и связанное с ними переключение контекста, коммутация процессов и т. д. Совсем недавно к сторонникам этой школы присоединились те, кто стремится к увеличению производительности, ясности, гибкости, надежности и функциональности операционных систем.
Из этих и более поздних мотивировок некоторые были расширены, с тем чтобы в явном или неявном виде включить в себя, например, непосредственную поддержку для абстрактных данных и управления объектами. К этой категории принадлежат также команды, использующие операции отображения (управление путями доступа и прохождения) для управляемого разделения информации, защиты кодов и данных, управления процессором и защитой памяти (физической и виртуальной), синхронизации процессов, межпроцессной и межпроцессорной связи и т.д.
Этот процесс в компьютерной архитектуре можно проследить, возвратившись назад на двадцать лет к системе Burroughs В5000. Развитие концепций и стратегий внедрения сильно ускорилось особенно за последние десять лет, в то время как стоимость реализации команд с большим семантическим уровнем большей частью благодаря использованию вертикального микропрограммирования резко понизилась, не оказав при этом существенного влияния на эффективность. Система iAPX-432 представляет собой связанную с таким подходом технологическую реализацию новейших концепций и идей. В этой книге мною показано, как высокое семантическое содержание подмножества команд машинного языка системы i432 влияет на поведение и эффективность системы с точки зрения перспектив развития программного обеспечения, его стоимости, а также продуктивности работы программиста.
Логические структуры систем программного обеспечения. Здесь речь пойдет об организации функциональных элементов и о взаимных связях между важнейшими программными модулями поддержки операционной системы - начиная с "ядра" операционной системы и кончая библиотечными функциями, интерфейсами ввода-вывода и файловой системой. В этой дискуссии я сознательно оставляю в стороне реализацию отдельных функций, выполняемых операционной системой, таких как управление доступом, обработка прерываний и т. д.
За последние десять лет особенно много внимания уделялось вопросам, касающимся принципов создания операционных систем, иногда путем чисто теоретического анализа, но в большинстве случаев посредством проектирования, реализации, наблюдения и использования экспериментальных и коммерческих систем. Достигнутый за последнее время прогресс в значительной степени связан с почти повсеместным признанием того факта, что принципы хорошей инженерной организации и дизайна приложимы и к программированию систем. Операционная система iAPX-432 (iMAX) представляет собой реализацию текущего состояния этого инженерного искусства в программном обеспечении. Важную часть этой книги составляет анализ нескольких примеров структурных форм системы iMAX.
Современный язык программирования для реализации систем. Четвертым приложением современной технологии явилось использование языка Ада в качестве базового языка для реализации системы. Язык Ада отражает современный уровень исследований и развития языков программирования [6]. Особенно важным является акцент на отделение спецификации в программных единицах от реализации. Язык Ада включает в себя семантические компоненты. необходимые для того, чтобы позволить группам программистов с минимальными затратами создавать большие системы и прикладные программы и экономно управлять ими.
Язык Ада является также базовым языком для построения ряда специализированных языков, например в программах управления базами данных [7]. [Язык Ада хорошо приспособлен для работы с пакетами, структурами, изолированием объектов типа "данные" и процедур, позволяющих работать с этими объектами.]
Литература к предисловию