Книга Эндрю Таненбаума, всемирно известного специалиста в области информационных технологий, писателя и преподавателя, выходящая уже в пятом издании, посвящена структурной организации компьютера. В ее основе лежит идея иерархической структуры, в которой каждый уровень выполняет вполне определенную функцию. В рамках этого нетрадиционного подхода подробно описываются цифровой логический уровень, уровень архитектуры команд, уровень операционной системы и уровень языка ассемблера. Книга рассчитана на широкий круг читателей: как на студентов, изучающих компьютерные технологии, так и на тех, кто самостоятельно знакомится с архитектурой компьютера.
Предисловие От издателя перевода Глава 1. Введение Многоуровневая компьютерная организация Языки, уровни и виртуальные машины Современные многоуровневые машины Развитие многоуровневых машин Развитие компьютерной архитектуры Нулевое поколение - механические компьютеры (1642-1945) Первое поколение - электронные лампы (1945-1955) Второе поколение- транзисторы (1955-1965) Третье поколение - интегральные схемы (1965-1980) Четвертое поколение - сверхбольшие интегральные схемы (1980-?) Пятое поколение - невидимые компьютеры Типы компьютеров Технологические и экономические аспекты Широкий спектр компьютеров Одноразовые компьютеры Микроконтроллеры Игровые компьютеры Персональные компьютеры Серверы Комплексы рабочих станций Мэйнфреймы Семейства компьютеров Pentium 4 Знакомство с микросхемой UltraSPARC III Знакомство с микросхемой 8051 Единицы измерения Краткое содержание книги Вопросы и задания Глава 2. Организация компьютерных систем Процессоры Устройство центрального процессора Выполнение команд Системы RISC и CISC Принципы разработки современных компьютеров Параллелизм на уровне команд Параллелизм на уровне процессоров Основная память Бит Адреса памяти Упорядочение байтов Код исправления ошибок Кэш-память Сборка модулей памяти и их типы Вспомогательная память Иерархическая структура памяти Магнитные диски Дискеты IDE-диски SCSI-диски RAID-массивы Диски CD-ROM Диски CD-R Диски CD-RW DVD-диски Диски Blu-Ray Ввод-вывод Шины Терминалы Видеопамять Мыши Принтеры Телекоммуникационное оборудование Цифровые фотокамеры Коды символов Краткое содержание главы Вопросы и задания Глава 3. Цифровой логический уровень Вентили и булева алгебра Вентили Булева алгебра Реализация булевых функций Эквивалентность схем Основные цифровые логические схемы Интегральные схемы Комбинаторные схемы Арифметические схемы Тактовые генераторы Память Защелки Триггеры Регистры Организация памяти Микросхемы памяти ОЗУ и ПЗУ Микросхемы процессоров и шины Микросхемы процессоров Компьютерные шины Ширина шины Синхронизация шины Арбитраж шины Принципы работы шины Примеры центральных процессоров Pentium 4 UltraSPARC III 8051 Примеры шин Шина ISA Шина PCI PCI Express Шина USB Интерфейсы Микросхемы ввода-вывода Декодирование адреса Краткое содержание главы Вопросы и задания Глава 4. Уровень микроархитектуры Пример микроархитектуры Тракт данных Микрокоманды Управление микрокомандами - микроархитектура Mic-1 Пример архитектуры набора команд-IJVM Стек Модель памяти IJVM Набор IJVM-команд Компиляция IJVM Пример реализации микроархитектуры Микрокоманды и их запись Реализация IJVM с использованием микроархитектуры Mic-1 Разработка уровня микроархитектуры Быстродействие и стоимость Сокращение длины пути Упреждающая выборка команд из памяти - микроархитектура Mic-2 Конвейерная конструкция - микроархитектура Mic-З Семиступенчатый конвейер - микроархитектура Mic-4 Повышение производительности Кэш-память Прогнозирование ветвлений Исполнение с изменением последовательности и подмена регистров Спекулятивное исполнение Примеры уровня микроархитектуры Микроархитектура процессора Pentium 4 Микроархитектура процессора UltraSPARC III Си Микроархитектура процессора 80 Сравнение процессоров Pentium, UltraSPARC и 8051 Краткое содержание главы Вопросы и задания Глава 5. Уровень архитектуры набора команд Общий обзор уровня архитектуры набора команд Свойства уровня архитектуры набора команд Модели памяти Регистры Команды Общий обзор уровня архитектуры набора команд Pentium 4 Общий обзор уровня архитектуры набора команд UltraSPARC III Обзор уровня архитектуры набора команд микросхемы 8051 Типы данных Числовые типы данных Нечисловые типы данных Типы данных процессора Pentium 4 Типы данных машины UltraSPARC III Типы данных 8051 Форматы команд Критерии разработки форматов команд Расширение кода операций Форматы команд процессора Pentium 4 Форматы команд процессора UltraSPARC III Форматы команд 8051 Адресация Режимы адресации Непосредственная адресация Прямая адресация Регистровая адресация Косвенная регистровая адресация Индексная адресация Относительная индексная адресация Стековая адресация Режимы адресации в командах перехода Ортогональность кодов операций и режимов адресации Режимы адресации процессора Pentium 4 Режимы адресации процессора UltraSPARC III Режимы адресации процессора 8051 Сравнение режимов адресации Типы команд Команды перемещения данных Бинарные операции Унарные операции Сравнения и условные переходы Команды вызова процедур Управление циклами Команды ввода-вывода Команды процессора Pentium 4 Команды UltraSPARC III Команды 8051 Сравнение наборов команд Поток управления Последовательный поток управления и переходы Процедуры Сопрограммы Перехват исключений Прерывания Ханойская башня Решение задачи «Ханойская башня» на ассемблере Pentium 4 Решение задачи «Ханойская башня» на ассемблере UltraSPARC III Архитектура IA-64 и процессор Itanium 2 Проблема Pentium 4 Модель IA-64 - вычисления с явным параллелизмом команд Сокращение числа обращений к памяти Планирование команд Сокращение числа условных переходов - предикация Спекулятивная загрузка Краткое содержание главы Вопросы и задания Глава 6. Уровень операционной системы Виртуальная память Страничная организация памяти Реализация страничной организации памяти Вызов страниц по требованию и рабочее множество Политика замещения страниц Размер страниц и фрагментация Сегментация Реализация сегментации Виртуальная память Pentium 4 Виртуальная память UltraSPARC III Виртуальная память и кэширование Виртуальные команды ввода-вывода Файлы Реализация виртуальных команд ввода-вывода Команды управления каталогами Виртуальные команды для параллельной работы Формирование процесса Состояние гонок Синхронизация процесса с использованием семафоров Примеры операционных систем Знакомство с операционными системами UNIX и Windows XP Примеры виртуальной памяти Примеры виртуального ввода-вывода Примеры управления процессами Краткое содержание главы Вопросы и задания Глава 7. Уровень ассемблера Знакомство с ассемблером Понятие ассемблера Назначение ассемблера Формат оператора в ассемблере Директивы Макросы Макроопределение, макровызов и макрорасширение Макросы с параметрами Дополнительные возможности Реализация макросов в ассемблере Процесс ассемблирования Ассемблирование за два прохода Первый проход Второй проход Таблица символов Компоновка и загрузка Задачи компоновщика Структура объектного модуля Время компоновки и динамическое перераспределение памяти Динамическая компоновка Краткое содержание главы Вопросы и задания Глава 8. Параллельные компьютерные архитектуры Внутрипроцессорный параллелизм Параллелизм на уровне команд Внутрипроцессорная многопоточность Однокристальные мультипроцессоры Сопроцессоры Сетевые процессоры Мультимедиа-процессоры Криптопроцессоры Мультипроцессоры Мультипроцессоры и мультикомпьютеры Семантика памяти UMA-мультипроцессоры в симметричных мультипроцессорных архитектурах NUMA-мультипроцессоры СОМА-мультипроцессоры Мультикомпьютеры Коммуникационные сети Процессоры с массовым параллелизмом Кластерные вычисления Коммуникационное программное обеспечение для мультикомпьютеров Планирование Общая память на прикладном уровне Производительность Распределенные вычисления Краткое содержание главы Вопросы и задания Глава 9. Библиография Литература для дополнительного чтения Вводная и неспециальная литература Организация компьютерных систем Цифровой логический уровень Уровень микроархитектуры Уровень архитектуры набора команд Уровень операционной системы Уровень ассемблера Параллельные компьютерные архитектуры Двоичные числа и числа с плавающей точкой Программирование на языке ассемблера Алфавитный список литературы Приложение А. Двоичные числа Числа конечной точности Позиционные системы счисления Преобразование чисел из одной системы счисления в другую Отрицательные двоичные числа Двоичная арифметика Вопросы и задания Приложение Б. Числа с плавающей точкой Принципы представления чисел с плавающей точкой Стандарт IEEE 7 Вопросы и задания Приложение В. Программирование на языке ассемблера Основные понятия Язык ассемблера Небольшая программа на языке ассемблера Процессор 8088 Цикл процессора Регистры общего назначения Регистры-указатели Память и адресация Организация памяти и сегменты Адресация Набор команд 8088 Перемещение, копирование и арифметические команды Логические операции, побитовые операции и операции сдвига Операции организации циклов и повторяющиеся строковые операции Команды перехода и вызова Вызовы подпрограмм Системные вызовы и системные подпрограммы Заключительные замечания о наборе команд Ассемблер Введение Ассемблер as88 из набора АСК Некоторые отличия от других ассемблеров 8088 Трассер Команды трассера Подготовительные действия Примеры Hello World Регистры общего назначения Вызов регистров команд и указателя Отладка программы вывода массива Обработка символьных строк и строковые команды Таблицы диспетчеризации Буферизованный и произвольный доступ к файлам Вопросы и задания Список терминов Алфавитный указатель