Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Архитектура компьютера. Э. Таненбаум..doc
Скачиваний:
109
Добавлен:
20.06.2014
Размер:
7.54 Mб
Скачать

Глава 8. Архитектуры компьютеров параллельного

действия 556

Вопросы разработки компьютеров параллельного действия 557

Информационные модели 559

Сети межсоединений 564

Производительность 572

Метрика программного обеспечения 574

Программное обеспечение 579

Классификация компьютеров параллельного действия 584

Компьютеры SIMD 587

Массивно-параллельные процессоры 587

Векторные процессоры 588

Мультипроцессоры с памятью совместного использования 592

Семантика памяти 593

Архитектуры UMASMP с шинной организацией 597

Мультипроцессоры UMA с координатными коммутаторами 603

Мультипроцессоры UMAc многоступенчатыми сетями 605

Мультипроцессоры NUMA 607

Мультипроцессоры CC-NUMA 609

Мультипроцессоры СОМА 619

Мультикомпьютеры с передачей сообщений 621

МРР — процессоры с массовым параллелизмом 622

COW — Clusters of Workstations {кластеры рабочих станций) 626

Планирование 627

Связное программное обеспечение для мультикомпьютеров 632

Совместно используемая память на прикладном уровне 635

Краткое содержание главы 642

Вопросы и задания 643

Глава 9. Библиография 647

Литература для дальнейшего чтения 647

Организация компьютерных систем 648

Цифровой логический уровень 649

Микроархитектурный уровень 649

Уровень команд 650

Уровень операционной системы 651

Уровень языка ассемблера 652

Архитектуры компьютеров параллельного действия 652

Двоичные числа и числа с плавающей точкой 653

Алфавитный список литературы 654

Приложение А. Двоичные числа 665

Числа конечной точности 665

Позиционные системы счисления 667

Преобразование чисел из одной системы счисления в другую 669

Отрицательные двоичные числа 670

Двоичная арифметика 673

Вопросы и задания 674

Приложение Б. Числа с плавающей точкой 676

Принципы представления с плавающей точкой 676

Стандарт IEEE 754 680

Вопросы и задания 683

Алфавитный указатель 685

Сюзанне, Барбаре, Марвину, Брэму и памяти моей дорогой я

Об авторе

Эндрю С. Таненбаум получил степень бакалавра естественных наук в Массачу-сетском технологическом институте и степень доктора в Университете Калифор­нии в Беркли. В настоящее время является профессором Амстердамского универси­тета в Нидерландах, где возглавляет группу разработчиков компьютерных систем. Он также возглавляет факультет вычислительной техники (межвузовскую аспи­рантуру, в которой исследуются и разрабатываются системы параллельной обра­ботки, распределенные системы и системы формирования изображения). Тем не менее он всеми силами старается не превратиться в бюрократа.

В прошлом он занимался компиляторами, операционными системами, сетями и локальными распределенными системами. Его настоящее исследование связано с разработкой глобальных распределенных систем, которые включают в себя мил­лионы пользователей. Результатом этих исследовательских проектов стали 85 ста­тей, опубликованных в разных журналах, выступления на конференциях и 5 книг.

Профессор Таненбаум разрабатывает программное обеспечение. Он является главным разработчиком пакета «Amsterdam Compiler Kit» (набора инструменталь­ных средств для написания портативных компиляторов), а также разработчиком системы MINIX (клона UNIX для студенческих лабораторий программирования). Вместе со своими учениками и программистами он участвовал в разработке систе­мы Amoeba (это распределенная система с высокой производительностью на основе микроядра). Системы MINIX и Amoeba находятся в свободном доступе в Интернете.

Его аспиранты достигли больших высот после получения ученых степеней. Он очень гордится ими.

Профессор Таненбаум — член Ассоциации по вычислительной технике, член Института инженеров по электротехнике и электронике (IEEE), член Королевской голландской академии науки и искусства. В 1994 году получил премию от Ассоциа­ции по вычислительной технике как ведающийся педагог. В 1997 году награжден

премией от Специальной группы по образованию в области вычислительной тех­ники (Ассоциации по вычислительной технике) за вклад в образование в области вычислительной техники. Его имя включено в справочник «Кто есть кто» («Who s Who in the World»). Его домашнюю страничку в Интернете можно найти по адресу http://www.cs.vu.nl/~ast/.

Предисловие

В основе первых трех изданий книги лежит идея о том, что компьютер можно рас­сматривать как иерархию уровней, каждый из которых выполняет какую-либо определенную функцию. Это фундаментальное утверждение сейчас столь же пра­вомерно, как и в момент выхода в свет первого издания, поэтому мы по-прежнему берем его за основу, на этот раз уже в четвертом издании. Как и в первых трех

изданиях, в этой книге мы подробно описываем цифровой логический уровень,

уровень архитектуры команд, уровень операционной системы и уровень языка ас­семблера (хотя мы изменили некоторые названия, чтобы следовать современным установившимся обычаям).

В целом структура книги осталась прежней, но в четвертое издание внесены некоторые изменения, что объясняется стремительным развитием компьютерной промышленности. Например, все программы, которые в предыдущих изданиях были написаны на языке Pascal, в четвертом издании переписаны на язык Java, чтобы продемонстрировать популярность языка Java в настоящее время. Кроме того, в качестве примеров в книге рассматриваются более современные машины (Intel Pentium II, Sun UltraSPARC II и Sun picojava II).

Мультипроцессоры и компьютеры параллельного действия получили широкое распространение, поэтому материал, связанный с архитектурами параллельно­го действия, был полностью переделан и значительно расширен. В этой книге мы затрагиваем широкий диапазон тем от мультипроцессоров до кластеров рабочих станций.

С годами книга увеличилась в объеме (хотя не так сильно, как другие популяр­ные компьютерные издания). Это неизбежно, поскольку происходит постоянное развитие и о предмете становится известно все больше и больше. Поэтому если книга используется в целях обучения, нужно иметь в виду, что этот курс может занять более длительное время, чем раньше. Возможный вариант — изучать пер­вые три главы, часть четвертой главы (до раздела о разработке микроархитектур­ного уровня включительно) и пятую главу в качестве минимума, а оставшееся время на ваше усмотрение потратить на шестую, седьмую, восьмую главы и вторую часть

четвертой главы.

В четвертое издание внесены следующие изменения В главе 1 по-прежнему излагается история развития архитектуры компьютеров, но мы расширили ряд рассматриваемых машин. В главе вводятся три основных примера: Pentium II,

UltraSPARC II и picojava II. Материал второй главы обновлен и переработан. В ней мы рассматриваем

современные устройства ввода-вывода: диски RAID, CD-R, DVD, цветные прин­теры и т. п.

Глава 3 (цифровой логический уровень) претерпела некоторые изменения — теперь в ней рассматриваются компьютерные шины и современные устройства ввода-вывода. Главное изменение — это новый материал о шинах (в частности, PCI и USB). Три новых примера описываются на уровне микросхем.

Глава 4 (теперь она называется «Микроархитектурный уровень») была полно­стью переписана. Идея использовать пример микропрограммируемой машины для демонстрации работы тракта данных была сохранена, но в качестве примера взят сокращенный вариант JVM. В соответствии с этим была изменена микроархитек­тура. В главе продемонстрированы возможные компромиссы с точки зрения сто­имости и производительности. В последнем примере, Mic-4, используется конвей­ер из семи стадий. Этот пример наглядно демонстрирует основные принципы работы современных компьютеров (например, Pentium II). К главе добавлен но­вый раздел о способах увеличения производительности, в котором рассматрива­ются новые технологии (кэширование, прогнозирование переходов, исполнение с изменением последовательности, спекулятивное выполнение и предикация). Новые примеры машин рассматриваются на микроархитектурном уровне.

В главе 5 (теперь она называется «Уровень архитектуры команд») рассказы­вается о так называемом машинном языке. В качестве основных примеров здесь используются Pentium II, UltraSPARC II и JVM.

Глава 6 (уровень операционной системы) содержит примеры операционных систем для Pentium II (Windows NT) и UltraSPARC II (UNIX). Первая операци­онная система сравнительно новая. Она содержит множество особенностей, кото­рые стоит изучить. Система UNIX все еще используется во многих университетах и компаниях, и, кроме того, она довольно проста, поэтому тоже заслуживает наше­го внимания.

В главе 7 (уровень языка ассемблера) появились примеры для тех машин, которые мы рассматриваем в этой книге. Кроме того, добавлен новый материал о динамическом связывании.