![](/user_photo/1596_Y1cpK.gif)
- •Э. Таненбаум
- •Глава 2. Организация компьютерных систем 56
- •Глава 3. Цифровой логический уровень 139
- •Глава 4. Микроархитектурный уровень 230
- •Глава 5. Уровень архитектуры команд 334
- •Глава 6. Уровень операционной системы 437
- •Глава 7. Уровень языка ассемблера 517
- •Глава 8. Архитектуры компьютеров параллельного
- •Глава 9. Библиография 647
- •Глава 8 (архитектура компьютеров параллельного действия) полностью изменена. В ней подробно описываются мультипроцессоры (uma, numa и сома) и мультикомпьютеры (мрр и cow).
- •Глава 1
- •Глава 2 знакомит читателей с основными компонентами компьютера: процессорами, памятью, устройствами ввода-вывода. В ней дается краткое описание системной архитектуры и введение к следующим главам.
- •Глава 2
- •Центральный процессор Центральный процессор
- •12 Битов б
- •24 Входные линии
- •50 Входных линий
- •Глава 4
- •Старший бит
- •Блок выборки команд
- •Сигналы управления
- •Глава 5
- •Intel ia-64
- •Глава 6
- •Глава 7
- •3. Сведения о том, можно ли получить доступ к символу извне процедуры.
- •Глава 8
- •64 Элемента на каждый регистр
- •Intel/Sandia Option Red
- •00 Процессор 2
- •Глава 9
- •4. Mazidi and Mazidi, The 80x86ibm pc and Compatible Computers, 2nd ed.
- •5. McKee et al., Smarter Memory: ImprovingBandwidthforStreamed References.
- •4. McKusick et al., Design and Implementation ofthe 4.4bsd Operating System.
- •3. Hill, Multiprocessors Should Support Simple Memory-Consistency Models.
- •Ieee Scalable Coherent Interface Working Group, ieee, 1989.
- •Ieee Micro Magazine, vol. 18, p. 60-75, July/Aug. 1998b.
- •3Rd ed., Reading, ma: Addison-Wesley, 1998.
- •1988 Int'l. Conf. On Parallel Proc. (Vol. 11), ieee, p. 94-101, 1988.
- •Implementation of the 4.4 bsd Operating System», Reading, ma: Addison-Wesley, 1996.
- •In Shared Memory Multiprocessing», ieee Computer Magazine, vol. 30, p. 4450, Dec. 1997.
- •78Jan.-March 1999.
- •0 123456789Abcdef
- •I и Ijmii him
- •Э. Таненбаум
Глава 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 (уровень языка ассемблера) появились примеры для тех машин, которые мы рассматриваем в этой книге. Кроме того, добавлен новый материал о динамическом связывании.