УДК 004.2+744.4
ББК 32.971.3
Х21
Дэвид М. Харрис, Сара Л. Харрис
Х21 Цифровая схемотехника и архитектура компьютера. / пер. с англ. Imagination
Technologies. – М.: ДМК Пресс, 2017. – 792 с.: ил.
ISBN 978-5-97060-522-6
В книге представлен уникальный и современный подход к разработке
цифровых устройств. Авторы начинают с цифровых логических элементов,
переходят к разработке комбинационных и последовательных схем, а затем используют
эти базовые блоки как основу для самого сложного: проектирования
настоящего процессора MIPS. По всему тексту приводятся примеры на языках
SystemVerilog и VHDL, иллюстрирующие методы и способы проектирования
схем с помощью САПР. Изучив эту книгу, читатели смогут разработать свой
собственный микропроцессор и получат полное понимание того, как он работает.
В книге объединен привлекательный и юмористический стиль изложения
с развитым и практичным подходом к разработке цифровых устройств.
Во второе англоязычное издание вошли новые материалы о системах ввода/вывода
применительно к процессорам общего назначения как для ПК, так
и для микроконтроллеров. Приведены практические примеры интерфейсов
периферийных устройств с применением RS-232, SPI, управления двигателями,
прерываний, беспроводной связи и аналого-цифрового преобразования.
Представлено высокоуровневое описание интерфейсов, включая USB,
SDRAM, WiFi, PCI Express и другие.
Издание будет полезно студентам, инженерам, а также широкому кругу
читателей, интересующихся современной схемотехникой.
This edition of «Digital Design and Computer Architecture by David Money Harris and Sarah L.
Harris is published by arrangement with ELSEVIER INC., a Delaware corporation having its
principal place of business at 360 Park Avenue South, New York, NY 10010, USA
Это издание книги Дэвида Мани Харриса и Сары Л. Харрис «Цифровая схемотехника и
архитектура компьютера» публикуется по соглашению с ELSEVIER INC., Делавэрской корпорацией,
которая осуществляет основную деятельность по адресу 360 Park Avenue South, New
York, NY 10010, USA.
Все права защищены. Любая часть этой книги не может быть воспроизведена в какой
бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев
авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность
технических ошибок все равно существует, издательство не может гарантировать абсолютную
точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности
за возможные ошибки, связанные с использованием книги.
ISBN 978-0-12-394424-5 (анг.)
ISBN 978-5-97060-522-6 (рус.)
© 2013 Elsevier, Inc. All rights reserved.
© Перевод, Imagination Technologies, 2016
© Оформление, издание, ДМК Пресс, 2017
Стр.5
Оглавление
Похвальные отзывы на книгу
«Цифровая схемотехника и архитектура компьютера»
Об авторах
Предисловие к изданию на русском языке
Предисловие
15
17
18
Благодарности участникам проекта ...................................................... 22
24
Особенности книги ................................................................................ 24
Материалы в Интернете ............................................................................... 26
Как использовать программный инструментарий в учебном курсе ............... 27
Опечатки ....................................................................................................... 28
Признательность за поддержку .................................................................... 28
Глава 1 От нуля до единицы
31
1.1. План игры ....................................................................................... 31
1.2. Искусство управления сложностью ................................................ 32
1.2.1. Абстракция .......................................................................................... 33
1.2.2. Конструкторская дисциплина .............................................................. 35
1.2.3. Три базовых принципа ......................................................................... 36
1.3. Цифровая абстракция ..................................................................... 38
1.4. Системы счисления ........................................................................ 40
1.4.1. Десятичная система счисления ........................................................... 40
1.4.2. Двоичная система счисления .............................................................. 41
1.4.3. Шестнадцатеричная система счисления ............................................. 43
1.4.4. Байт, полубайт и «весь этот джаз» ...................................................... 45
1.4.5. Сложение двоичных чисел .................................................................. 46
1.4.6. Знак двоичных чисел ........................................................................... 47
1.5. Логические элементы ..................................................................... 53
1.5.1. Логический вентиль НЕ....................................................................... 53
1.5.2. Буфер .................................................................................................. 54
1.5.3. Логический вентиль И ......................................................................... 54
1.5.4. Логический вентиль ИЛИ ................................................................... 54
1.5.5. Другие логические элементы с двумя входными сигналами ................ 55
1.5.6. Логические элементы с количеством входов больше двух................... 56
1.6. За пределами цифровой абстракции ............................................... 57
1.6.1. Напряжение питания .......................................................................... 57
1.6.2. Логические уровни .............................................................................. 57
1.6.3. Допускаемые уровни шумов ................................................................ 58
1.6.4. Передаточная характеристика............................................................. 59
1.6.5. Статическая дисциплина ..................................................................... 60
1.7. КМОП-транзисторы ........................................................................ 62
1.7.1. Полупроводники .................................................................................. 63
Стр.7
Оглавление
7
1.7.2. Диоды .................................................................................................. 64
1.7.3. Конденсаторы ...................................................................................... 64
1.7.4. n-МОП- и p-МОП-транзисторы............................................................ 65
1.7.5. Логический вентиль НЕ на КМОП-транзисторах ................................ 69
1.7.6. Другие логические вентили на КМОП-транзисторах .......................... 69
1.7.7. Передаточный логический вентиль ..................................................... 72
1.7.8. Псевдо n-МОП-логика ......................................................................... 72
1.8. Потребляемая мощность ................................................................. 73
1.9. Краткий обзор главы 1 и того, что нас ждет впереди ...................... 75
Упражнения .......................................................................................... 77
Вопросы для собеседования .................................................................. 89
Глава 2 Проектирование комбинационной логики
91
2.1. Введение ......................................................................................... 91
2.2. Булевы уравнения........................................................................... 95
2.2.1. Терминология ...................................................................................... 95
2.2.2. Дизъюнктивная форма ........................................................................ 96
2.2.3. Конъюнктивная форма ........................................................................ 98
2.3. Булева алгебра ................................................................................ 99
2.3.1. Аксиомы ............................................................................................ 100
2.3.2. Теоремы одной переменной ............................................................... 100
2.3.3. Теоремы с несколькими переменными .............................................. 102
2.3.4. Правда обо всем этом ........................................................................ 104
2.3.5. Упрощение уравнений ....................................................................... 105
2.4. От логики к логическим элементам ...............................................106
2.5. Многоуровневая комбинационная логика .....................................110
2.5.1. Минимизация аппаратуры ................................................................. 111
2.5.2. Перемещение инверсии ..................................................................... 112
2.6. Что за X и Z? ..................................................................................115
2.6.1. Недопустимое значение: Х ................................................................ 115
2.6.2. Третье состояние: Z ........................................................................... 116
2.7. Карты Карно ..................................................................................118
2.7.1. Думайте об овалах ............................................................................. 119
2.7.2. Логическая минимизация на картах Карно ........................................ 120
2.7.3. Безразличные переменные ................................................................ 124
2.7.4. Подводя итоги ................................................................................... 124
2.8. Базовые комбинационные блоки ....................................................125
2.8.1. Мультиплексоры ............................................................................... 125
2.8.2. Дешифраторы .................................................................................... 129
2.9. Временные характеристики ...........................................................131
2.9.1. Задержка распространения и задержка реакции ............................... 131
2.9.2. Импульсные помехи .......................................................................... 136
2.10. Резюме .........................................................................................139
Упражнения .........................................................................................140
Вопросы для собеседования ................................................................ 147
Стр.8
8
Оглавление
Глава 3 Проектирование последовательной логики
149
3.1. Введение ....................................................................................... 149
3.2. Защелки и триггеры .......................................................................150
3.2.1. RS-триггер ......................................................................................... 151
3.2.2. D-защелка .......................................................................................... 154
3.2.3. D-Триггер .......................................................................................... 155
3.2.4. Регистр .............................................................................................. 156
3.2.5. Триггер с функцией разрешения........................................................ 156
3.2.6. Триггер с функцией сброса ................................................................ 158
3.2.7. Проектирование триггеров и защелок на транзисторном уровне ...... 159
3.2.8. Общий обзор ..................................................................................... 160
3.3. Проектирование синхронных логических схем ..............................161
3.3.1. Некоторые проблемные схемы .......................................................... 161
3.3.2. Синхронные последовательные схемы .............................................. 163
3.3.3. Синхронные и асинхронные схемы .................................................... 166
3.4. Конечные автоматы .......................................................................166
3.4.1. Пример проектирования конечного автомата .................................... 167
3.4.2. Кодирование состояний ..................................................................... 173
3.4.3. Автоматы Мура и Мили .................................................................... 176
3.4.4. Декомпозиция конечных автоматов .................................................. 180
3.4.5. Восстановление конечных автоматов по электрической схеме ......... 182
3.4.6. Обзор конечных автоматов ............................................................... 185
3.5. Синхронизация последовательных схем ........................................185
3.5.1. Динамическая дисциплина ................................................................ 187
3.5.2. Временные характеристики системы................................................. 188
3.5.3. Расфазировка тактовых сигналов ...................................................... 194
3.5.4. Метастабильность ............................................................................. 197
3.5.5. Синхронизаторы ................................................................................ 199
3.5.6. Вычисление времени разрешения ..................................................... 201
3.6. Параллелизм ..................................................................................205
3.7. Резюме ...........................................................................................209
Упражнения .........................................................................................210
Вопросы для собеседования .................................................................218
Глава 4 Языки описания аппаратуры
221
4.1. Введение ........................................................................................221
4.1.1. Модули .............................................................................................. 222
4.1.2. Происхождение языков SystemVerilog и VHDL ................................ 222
4.1.3. Симуляция и Синтез .......................................................................... 224
4.2. Комбинационная логика ................................................................226
4.2.1. Битовые операторы ........................................................................... 227
4.2.2. Комментарии и пробелы .................................................................... 229
4.2.3. Операторы сокращения ..................................................................... 230
4.2.4. Условное присваивание ..................................................................... 230
4.2.5. Внутренние переменные .................................................................... 233
4.2.6. Приоритет ......................................................................................... 235
4.2.7. Числа ................................................................................................. 235
Стр.9
Оглавление
9
4.2.8. Z-состояние и X-состояние ................................................................ 237
4.2.9. Манипуляция битами ........................................................................ 239
4.2.10. Задержки ......................................................................................... 239
4.3. Структурное моделирование .........................................................241
4.4. Последовательностная логика ...................................................... 245
4.4.1. Регистры ............................................................................................ 245
4.4.2. Регистры со сбросом .......................................................................... 245
4.4.3. Регистры с сигналом разрешения ...................................................... 248
4.4.4. Группы регистров .............................................................................. 249
4.4.5. Защелки............................................................................................. 250
4.5. И снова комбинационная логика ....................................................251
4.5.1. Операторы case ................................................................................. 254
4.5.2. Операторы if ...................................................................................... 256
4.5.3. Таблицы истинности с незначащими битами ..................................... 259
4.5.4. Блокирующие и неблокирующие присваивания ................................ 260
4.6. Конечные автоматы ...................................................................... 264
4.7. Типы данных ..................................................................................268
4.7.1. SystemVerilog .................................................................................... 268
4.7.2. VHDL................................................................................................. 269
4.8. Параметризованные модули ..........................................................272
4.9. Среда тестирования .......................................................................275
4.10. Резюме .........................................................................................280
Упражнения .........................................................................................281
Вопросы для собеседования .................................................................291
Глава 5 Цифровые функциональные узлы
293
5.1. Введение ........................................................................................293
5.2. Арифметические схемы ................................................................ 294
5.2.1. Сложение .......................................................................................... 294
5.2.2. Вычитание ......................................................................................... 302
5.2.3. Компараторы ..................................................................................... 303
5.2.4. АЛУ ................................................................................................... 304
5.2.5. Схемы сдвига и циклического сдвига................................................. 306
5.2.6. Умножение ........................................................................................ 308
5.2.7. Деление ............................................................................................. 309
5.2.8. Дополнительная литература.............................................................. 311
5.3. Представление чисел .....................................................................311
5.3.1. Числа с фиксированной точкой ......................................................... 311
5.3.2. Числа с плавающей точкой ................................................................ 312
5.4. Функциональные узлы последовательностной логики ...................317
5.4.1. Счетчики ........................................................................................... 317
5.4.2. Сдвигающие регистры ....................................................................... 318
5.5. Матрицы памяти ............................................................................321
5.5.1. Обзор ................................................................................................. 321
5.5.2. Динамическое ОЗУ (DRAM) ............................................................. 324
5.5.3. Статическое ОЗУ (SRAM) ................................................................. 325
Стр.10
10
Оглавление
5.5.4. Площадь и задержки.......................................................................... 326
5.5.5. Регистровые файлы ........................................................................... 327
5.5.6. Постоянное запоминающее устройство ............................................. 327
5.5.7. Реализация логических функций с использованием матриц памяти .... 330
5.5.8. Языки описания аппаратуры и память ............................................... 331
5.6. Матрицы логических элементов ....................................................332
5.6.1. Программируемые логические матрицы ............................................ 333
5.6.2. Программируемые пользователем матрицы логических элементов ....335
5.6.3. Схемотехника матриц ........................................................................ 340
5.7. Резюме .......................................................................................... 342
Упражнения ........................................................................................ 343
Вопросы для собеседования ................................................................ 353
Глава 6 Архитектура
355
6.1. Предисловие ................................................................................. 355
6.2. Язык ассемблера ........................................................................... 357
6.2.1. Инструкции ....................................................................................... 358
6.2.2. Операнды: регистры, память и константы ......................................... 360
6.3. Машинный язык ........................................................................... 367
6.3.1. Инструкции типа R ............................................................................ 368
6.3.2. Инструкции типа I ............................................................................. 369
6.3.3. Инструкции типа J ............................................................................. 371
6.3.4. Расшифровываем машинные коды ..................................................... 371
6.3.5. Могущество хранимой программы .................................................... 372
6.4. Программирование ....................................................................... 373
6.4.1. Арифметические/логические инструкции ........................................ 374
6.4.2. Переходы ........................................................................................... 378
6.4.3. Условные операторы ......................................................................... 381
6.4.4. Зацикливаемся .................................................................................. 383
6.4.5. Массивы ............................................................................................ 385
6.4.6. Вызовы функций ................................................................................ 390
6.5. Режимы адресации.........................................................................400
6.6. Камера, мотор! Компилируем, ассемблируем и загружаем ........... 404
6.6.1. Карта памяти ..................................................................................... 404
6.6.2. Трансляция и запуск программы ....................................................... 406
6.7. Добавочные сведения ................................................................... 409
6.7.1. Псевдокоманды ................................................................................. 410
6.7.2. Исключения ....................................................................................... 411
6.7.3. Команды для чисел со знаком и без знака .......................................... 413
6.7.4. Команды для работы с числами с плавающей точкой ........................ 415
6.8. Живой пример: архитектура х86 ................................................... 417
6.8.1. Регистры x86 ..................................................................................... 418
6.8.2. Операнды x86 .................................................................................... 418
6.8.3. Флаги состояния ............................................................................... 420
6.8.4. Команды х86 ...................................................................................... 421
6.8.5. Кодировка команд х86 ....................................................................... 423
6.8.6. Другие особенности х86 .................................................................... 425
Стр.11
Оглавление
11
6.8.7. Оглядываясь назад ............................................................................ 425
6.9. Резюме .......................................................................................... 426
Упражнения ........................................................................................ 427
Вопросы для собеседования ................................................................ 437
Глава 7 Микроархитектура
439
7.1. Введение ....................................................................................... 439
7.1.1. Архитектурное состояние и система команд ..................................... 440
7.1.2. Процесс разработки ........................................................................... 441
7.1.3. Микроархитектуры MIPS .................................................................. 443
7.2. Анализ производительности ......................................................... 444
7.3. Однотактный процессор ............................................................... 446
7.3.1. Однотактный тракт данных ............................................................... 446
7.3.2. Однотактное устройство управления ................................................ 452
7.3.3. Дополнительные команды ................................................................. 456
7.3.4. Анализ производительности .............................................................. 458
7.4. Многотактный процессор ............................................................. 460
7.4.1. Многотактный тракт данных ............................................................. 460
7.4.2. Многотактное устройство управления .............................................. 467
7.4.3. Дополнительные команды ................................................................. 474
7.4.4. Анализ производительности .............................................................. 478
7.5. Конвейерный процессор................................................................ 479
7.5.1. Конвейерный тракт данных ............................................................... 482
7.5.2. Конвейерное устройство управления ................................................ 484
7.5.3. Конфликты ........................................................................................ 484
7.5.4. Дополнительные команды ................................................................. 496
7.5.5. Анализ производительности .............................................................. 496
7.6. Пишем процессор на HDL ............................................................. 498
7.6.1. Однотактный процессор .................................................................... 499
7.6.2. Универсальные строительные блоки ................................................. 504
7.6.3. Тестовое окружение .......................................................................... 506
7.7. Исключения ...................................................................................510
7.8. Улучшенные микроархитектуры ....................................................513
7.8.1. Длинные конвейеры .......................................................................... 514
7.8.2. Предсказание условных переходов .................................................... 516
7.8.3. Суперскалярный процессор ............................................................... 518
7.8.4. Процессор с внеочередным выполнением команд ............................. 521
7.8.5. Переименование регистров ............................................................... 524
7.8.6. SIMD ................................................................................................. 525
7.8.7. Многопоточность .............................................................................. 526
7.8.8. Симметричные мультипроцессоры .................................................... 528
7.8.9. Гетерогенные мультипроцессоры ...................................................... 529
7.9. Живой пример: микроархитектура x86 ..........................................532
7.10. Резюме ........................................................................................ 539
Упражнения ........................................................................................ 541
Вопросы для собеседования ................................................................ 546
Стр.12
12
Оглавление
Глава 8 Иерархия памяти и подсистема ввода‑вывода
549
8.1. Введение ....................................................................................... 549
8.2. Анализ производительности систем памяти ................................. 554
8.3. Кэш-память ................................................................................... 556
8.3.1. Какие данные хранятся в кэш-памяти? .............................................. 557
8.3.2. Как найти данные в кэш-памяти? ...................................................... 558
8.3.3. Какие данные заместить в кэш-памяти? ............................................ 567
8.3.4. Улучшенная кэш-память ................................................................... 569
8.3.5. Эволюция кэш-памяти процессоров MIPS ......................................... 573
8.4. Виртуальная память...................................................................... 573
8.4.1. Трансляция адресов ........................................................................... 576
8.4.2. Таблица страниц ................................................................................ 578
8.4.3. Буфер ассоциативной трансляции ..................................................... 580
8.4.4. Защита памяти .................................................................................. 582
8.4.5. Стратегии замещения страниц .......................................................... 583
8.4.6. Многоуровневые таблицы страниц .................................................... 584
8.5. Системы ввода-вывода ...................................................................586
8.6. Ввод-вывод во встроенных системах ..............................................588
8.6.1. Микроконтроллер PIC32MX675F512H ............................................. 589
8.6.2. Цифровой ввод-вывод общего назначения ......................................... 594
8.6.3. Последовательный ввод-вывод .......................................................... 596
8.6.4. Таймеры............................................................................................. 610
8.6.5. Прерывания ....................................................................................... 612
8.6.6. Аналоговый ввод-вывод ..................................................................... 614
8.6.7. Другие внешние устройства микроконтроллера ................................ 621
8.7. Интерфейсы ввода-вывода персональных компьютеров................ 644
8.7.1. USB ................................................................................................... 646
8.7.2. PCI и PCI Express .............................................................................. 647
8.7.3. Память DDR3 .................................................................................... 648
8.7.4. Сеть ................................................................................................... 648
8.7.5. SATA ................................................................................................. 649
8.7.6. Подключения к ПК ............................................................................ 649
8.8. Живой пример: системы памяти и ввода-вывода семейства х86 ....652
8.8.1. Системы кэш-памяти процессоров семейства х86 ............................. 652
8.8.2. Виртуальная память х86 .................................................................... 655
8.8.3. Программируемый ввод-вывод х86 .................................................... 656
8.9. Резюме .......................................................................................... 656
Эпилог ................................................................................................. 657
Упражнения .........................................................................................658
Вопросы для собеседования ................................................................ 665
Приложение А Реализация цифровых систем
667
А.1. Введение ...................................................................................... 667
А.2. Логические микросхемы серии 74xx .............................................668
А.2.1. Логические элементы ....................................................................... 668
А.2.2. Другие логические функции ............................................................. 669
Стр.13
Оглавление
13
А.3. Программируемая логика ..............................................................671
А.3.1. PROM ............................................................................................... 672
А.3.2. Блоки PLA......................................................................................... 673
А.3.3. FPGA ................................................................................................ 673
А.4. Заказные специализированные интегральные схемы ................... 676
А.5. Работа с документацией ............................................................... 677
А.6. Семейства логических элементов .................................................682
А.7. Корпуса и монтаж интегральных схем ..........................................685
А.8. Линии передачи ............................................................................690
A.8.1. Согласованная нагрузка ................................................................... 691
A.8.2. Нагрузка холостого хода ................................................................... 693
A.8.3. Нагрузка короткого замыкания ......................................................... 694
A.8.4. Рассогласованная нагрузка ............................................................... 695
A.8.5. Когда нужно применять модели линии передачи .............................. 697
A.8.6. Правильное подключение нагрузки к линии передачи ........................ 698
A.8.7. Вывод формулы для Z0
...................................................................... 700
A.8.8. Вывод формулы для коэффициента отражения ................................. 701
A.8.9. Подводя итог ..................................................................................... 702
Приложение B Инструкции архитектуры MIPS
Приложение C Программирование на языке Си
A.9. Экономика .................................................................................... 704
707
713
C.1. Введение .......................................................................................713
C.2. Добро пожаловать в язык Си .........................................................716
C.2.1. Структура программы на языке СИ ................................................... 716
C.2.2. Запуск Си-программы ....................................................................... 717
C.3. Компиляция ...................................................................................718
C.3.1. Комментарии..................................................................................... 719
C.3.2. #define .............................................................................................. 719
C.3.3. #include ............................................................................................ 720
C.4. Переменные ..................................................................................721
C.4.1. Базовые типы данных ........................................................................ 722
C.4.2. Глобальные и локальные переменные ............................................... 724
C.4.3. Инициализация переменных ............................................................. 725
C.5. Операции.......................................................................................726
C.6. Вызовы функций ...........................................................................729
C.7. Управление последовательностью выполнения действий .............731
C.7.1. Условные операторы ......................................................................... 731
C.7.2. Циклы ............................................................................................... 733
C.8. Другие типы данных ..................................................................... 736
C.8.1. Указатели ......................................................................................... 736
C.8.2. Массивы ........................................................................................... 738
C.8.3. Символы............................................................................................ 743
C.8.4. Строки символов ............................................................................... 744
C.8.5. Структуры ......................................................................................... 745
Стр.14
14
Оглавление
C.8.6. Оператор typedef ............................................................................... 747
C.8.7. Динамическое распределение памяти ............................................... 748
C.8.8. Связные списки................................................................................. 749
C.9. Стандартная библиотека языка C ..................................................752
C.9.1. stdio ................................................................................................... 753
C.9.2. stdlib .................................................................................................. 757
C.9.3. math .................................................................................................. 759
C.9.4. string ................................................................................................. 760
C.10. Компилятор и опции командной строки .......................................760
C.10.1. Компиляция нескольких исходных C-файлов .................................. 761
C.10.2. Опции компилятора ........................................................................ 761
C.10.3. Аргументы командной строки ......................................................... 762
C.11. Типичные ошибки ........................................................................762
Литература для дальнейшего изучения
Дополнительная информация
Предметный указатель
769
771
772
Стр.15