
Архитектура компьютера - Э.Таненбаум
.pdf

НЛНССИНП COmPUTER SCIENCE
Э. ТАНЕНБАУМ
АРХИТЕКТУРА
КОМПЬЮТЕРА
4-Е ИЗДАНИЕ
С^ППТЕР
Москва • Санкт-Петербург• Нижний Новгород• Воронеж Ростов-на-Дону • Екатеринбург • Самара
Киев•Харьков•Минск
2003

Краткое содержание
Предисловие |
15 |
Глава 1. Предисловие |
18 |
Глава 2. Организация компьютерных систем |
56 |
Глава 3. Цифровой логический уровень |
139 |
Глава 4. Микроархитектурный уровень |
230 |
Глава 5. Уровень архитектуры команд |
334 |
Глава 6. Уровень операционной системы |
437 |
Глава 7. Уровень языка ассемблера |
517 |
Глава 8. Архитектуры компьютеров параллельного действия |
556 |
Глава 9. Библиография |
647 |
Приложение А. Двоичные числа |
663 |
Приложение Б. Числа с плавающей точкой |
674 |
Алфавитный указатель |
683 |

Содержание
Об авторе |
14 |
Предисловие |
15 |
Глава 1. Предисловие |
18 |
Многоуровневая компьютерная организация |
18 |
Языки, уровни и виртуальные машины |
19 |
Современные многоуровневые машины |
21 |
Развитие многоуровневых машин |
24 |
Развитие компьютерной архитектуры |
29 |
Нулевое поколение — механические компьютеры (1642-1945) |
29 |
Первое поколение —электронные лампы (1945-1955) |
;.... 32 |
Второе поколение — транзисторы (1955-1965) |
35 |
Третье поколение — интегральные схемы (1965-1980) |
37 |
Четвертое поколение — сверхбольшие интегральные схемы (1980-?) |
39 |
Типы компьютеров |
40 |
Технологические и экономические аспекты |
41 |
Широкий спектр компьютеров |
42 |
Семейства компьютеров |
45 |
Pentium II |
45 |
UltraSPARC II |
48 |
PicoJavall |
50 |
Краткое содержание книги |
52 |
Вопросы и задания |
54 |
Глава 2. Организация компьютерных систем |
56 |
Процессоры |
56 |
Устройство центрального процессора |
57 |
Выполнение команд |
58 |
RISC и CISC |
62 |
Принципы разработки современных компьютеров |
64 |
Параллелизм на уровне команд |
65 |
Параллелизм на уровне процессоров |
69 |
Основная память |
73 |
Бит |
73 |
Адреса памяти |
74 |
Упорядочение байтов |
75 |
Код с исправлением ошибок |
77 |
Кэш-память |
81 |
Сборка модулей памяти и их типы |
84 |

|
Содержание |
Вспомогательная память |
85 |
Иерархическая структура памяти |
85 |
Магнитные диски |
87 |
Дискеты |
90 |
Диски IDE |
91 |
SCSI-диски |
92 |
RAID-массивы |
93 |
Компакт-диски |
98 |
CD-R |
102 |
CD-RW |
105 |
DVD |
105 |
Процесс ввода-вывода |
108 |
Шины |
108 |
Терминалы |
111 |
Мыши |
119 |
Принтеры |
121 |
Модемы |
126 |
Коды символов |
129 |
Краткое содержание главы |
133 |
Вопросы и задания |
134 |
Глава 3. Цифровой логический уровень |
139 |
Вентили и булева алгебра |
139 |
Вентили |
139 |
Булева алгебра |
142 |
Реализация булевых функций |
144 |
Эквивалентность схем |
145 |
Основные цифровые логические схемы |
149 |
Интегральные схемы |
149 |
Комбинационные схемы |
151 |
Арифметические схемы |
157 |
Тактовые генераторы |
161 |
Память |
163 |
Защелки |
163 |
Триггеры (flip-flops) |
165 |
Регистры |
168 |
Организация памяти |
168 |
Микросхемы памяти |
172 |
ОЗУ и ПЗУ |
174 |
Микросхемы процессоров и шины |
177 |
Микросхемы процессоров |
177 |
Шины |
179 |
Ширина шины |
182 |
Синхронизация шины |
183 |
Арбитраж шины |
188 |
Принципы работы шины |
191 |
Примеры центральных процессоров |
193 |
Pentium II |
193 |
UltraSPARC II |
200 |
PicoJavall |
203 |

8 |
Содержание |
^ |
|
|
||
Примеры шин |
|
|
|
|
205 |
|
|
Шина ISA |
|
|
|
206 |
|
|
Шина PCI |
|
|
|
207 |
|
|
Шина USB |
|
|
|
215 |
|
Средства сопряжения |
|
|
|
219 |
||
|
Микросхемы ввода-вывода |
219 |
||||
|
Декодирование адреса |
220 |
||||
Краткое содержание главы |
223 |
|||||
Вопросы и задания |
|
|
|
224 |
||
Глава4.Микроархитектурныйуровень |
230 |
|||||
Пример микроархитектуры |
230 |
|||||
|
Тракт данных |
|
|
|
231 |
|
|
Микрокоманды |
|
|
|
237 |
|
|
Управление микрокомандами: Mic-1 |
240 |
||||
Пример архитектуры команд: IJVM |
244 |
|||||
|
Стек |
|
|
|
245 |
|
|
Модель памяти IJVM |
|
|
|
247 |
|
|
Набор команд IJVM |
|
|
|
248 |
|
|
Компиляция Java для IJVM |
252 |
||||
Пример реализации микроархитектуры |
254 |
|||||
|
Микрокоманды и их запись |
254 |
||||
|
Реализация IJVM с использованием Mic-1 |
258 |
||||
Разработка микроархитектурного уровня |
271 |
|||||
|
Скорость и стоимость |
|
|
|
271 |
|
|
Сокращение длины пути |
274 |
||||
|
Микроархитектура с упреждающей выборкой команд из памяти: Mic-2 |
280 |
||||
|
Конвейерная архитектура: Mtc-З |
284 |
||||
|
Конвейер с 7 стадиями: Mic-4 |
290 |
||||
Увеличение производительности |
293 |
|||||
|
Кэш-память |
|
|
|
294 |
|
|
Прогнозирование ветвления |
300 |
||||
|
Исполнение с изменением последовательности и подмена регистров |
306 |
||||
|
Спекулятивное выполнение |
311 |
||||
Примеры микроархитектурного уровня |
314 |
|||||
|
Микроархитектура процессора Pentium II |
314 |
||||
|
Микроархитектура процессора UltraSPARC II |
319 |
||||
|
Микроархитектура процессора picoJava II |
322 |
||||
|
Сравнение Pentium, UltraSPARC и picoJava |
327 |
||||
Краткое содержание главы |
329 |
|||||
Вопросы и задания |
|
|
|
330 |
||
Глава 5. Уровень архитектуры команд |
334 |
|||||
Общий обзор уровня архитектуры команд |
336 |
|||||
|
Свойства уровня команд |
336 |
||||
|
Модели памяти |
|
|
|
338 |
|
|
Регистры |
|
|
|
340 |
|
|
Команды |
|
|
|
342 |
|
|
Общий обзор уровня команд машины Pentium II |
342 |
||||
|
Общий обзор уровня команд системы UltraSPARC II |
345 |
||||
|
Общий обзор виртуальной машины Java |
348 |

Содержание |
9 |
Типы данных |
349 |
Числовые типы данных |
350 |
Нечисловые типы данных |
351 |
Типы данных процессора Pentium II |
351 |
Типы данных машины UltraSPARC II |
352 |
Типы данных виртуальной машины Java |
352 |
Форматы команд |
353 |
Критерии разработки для форматов команд |
354 |
Расширение кода операций |
356 |
Форматы команд процессора Pentium II |
358 |
Форматы команд процессора UltraSPARC II |
360 |
Форматы командЛУМ |
361 |
Адресация |
364 |
Способы адресации |
365 |
Непосредственная адресация |
365 |
Прямая адресация |
366 |
Регистровая адресация |
366 |
Косвенная регистровая адресация |
366 |
Индексная адресация |
367 |
Относительная индексная адресация |
369 |
Стековая адресация |
369 |
Способы адресации для команд перехода |
372 |
Ортогональность кодов операций и способов адресации |
373 |
Способы адресации процессора Pentium II |
375 |
Способы адресации процессора UltraSPARC II |
377 |
Способы адресации машины JVM |
377 |
Сравнение способов адресации |
378 |
Типы команд |
379 |
Команды перемещения данных |
379 |
Бинарные операции |
380 |
Унарные операции |
381 |
Сравнения и условные переходы |
383 |
Команды вызова процедур |
385 |
Управление циклом |
385 |
Команды ввода-вывода |
386 |
Команды процессора Pentium И |
390 |
Команды UltraSPARC II |
394 |
Команды компьютера picoJava II |
397 |
Сравнение наборов команд |
403 |
Поток управления |
404 |
Последовательный поток управления и переходы |
404 |
Процедуры |
405 |
Сопрограммы |
410 |
Ловушки |
412 |
Прерывания |
413 |
Ханойская башня |
417 |
Решение задачи «Ханойская башня» на ассемблере Pentium II |
418 |
Решение задачи «Ханойская башня» на ассемблере UltraSPARC II |
419 |
Решение задачи «Ханойская башня» на ассемблере для JVM |
421 |

10 |
Содержание |
|
Intel IA-64 |
423 |
|
|
Проблема с Pentium II |
423 |
|
Модель IA-64: открытое параллельное выполнение команд |
425 |
|
Предикация |
426 |
|
Спекулятивная загрузка |
429 |
|
Проверка в реальных условиях |
430 |
Краткое содержание главы |
430 |
|
Вопросы и задания |
431 |
|
Глава 6. Уровень операционной системы |
437 |
|
Виртуальная память |
438 |
|
|
Страничная организация памяти |
439 |
|
Реализация страничной организации памяти |
441 |
|
Вызов страниц по требованию и рабочее множество |
444 |
|
Политика замещения страниц |
445 |
|
Размер страниц и фрагментация |
448 |
|
Сегментация |
449 |
|
Как реализуется сегментация |
452 |
|
Виртуальная память в процессоре Pentium II |
455 |
|
Виртуальная память UltraSPARC II |
460 |
|
Виртуальная память и кэширование |
463 |
Виртуальные команды ввода-вывода |
463 |
|
|
Файлы |
464 |
|
Реализация виртуальных команд ввода-вывода |
465 |
|
Команды управления директориями |
469 |
|
Виртуальные команды для параллельной обработки |
470 |
|
Формирование процесса |
471 |
|
Состояние гонок |
472 |
|
Синхронизация процесса с использованием семафоров |
476 |
Примеры операционных систем |
479 |
|
|
Введение |
480 |
|
Примеры виртуальной памяти |
489 |
|
Примеры виртуального ввода-вывода |
493 |
|
Примеры управления процессами |
504 |
Краткое содержание главы |
510 |
|
Вопросы и задания |
511 |
|
Глава 7. Уровень языка ассемблера |
517 |
|
Введение в язык ассемблера |
518 |
|
|
Что такое язык ассемблера? |
518 |
|
Зачем нужен язык ассемблера? |
519 |
|
Формат оператора в языке ассемблера |
521 |
|
Директивы |
524 |
Макросы |
527 |
|
|
Макроопределение, макровызов и макрорасширение |
527 |
|
Макросы с параметрами |
529 |
|
Расширенные возможности |
530 |
|
Реализация макросредств в ассемблере |
530 |
Процесс ассемблирования |
531 |
|
|
Двухпроходной ассемблер |
531 |
|
Первый проход |
532 |

Содержание |
11 |
Второй проход |
536 |
Таблица символов |
537 |
Связывание и загрузка |
538 |
Задачи компоновщика |
540 |
Структура объектного модуля |
543 |
Время принятия решения и динамическое перераспределение памяти |
545 |
Динамическое связывание |
547 |
Краткое содержание главы |
551 |
Вопросы и задания |
552 |
Глава 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 |

12 Содержание
Приложение А. Двоичные числа |
665 |
Числа конечной точности |
665 |
Позиционные системы счисления |
667 |
Преобразование чисел из одной системы счисления в другую |
669 |
Отрицательные двоичные числа |
670 |
Двоичная арифметика |
673 |
Вопросы и задания |
674 |
Приложение Б. Числа с плавающей точкой |
676 |
Принципы представления с плавающей точкой |
676 |
Стандарт IEEE 754 |
680 |
Вопросы и задания |
683 |
Алфавитный указатель |
685 |