Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Цифровая схемотехника и архитектура компьютера

Покупка
Артикул: 666237.03.99
Доступ онлайн
1 499 ₽
В корзину
В книге представлен уникальный и современный подход к разработке цифровых устройств. Авторы начинают с цифровых логических элементов, переходят к разработке комбинационных и последовательных схем, а затем используют эти базовые блоки как основу для самого сложного: проектирования настоящего процессора MIPS. По всему тексту приводятся примеры на языках SystemVerilog и VHDL, иллюстрирующие методы и способы проектирования схем с помощью САПР. Изучив эту книгу, читатели смогут разработать свой собственный микропроцессор и получат полное понимание того, как он работает. В книге объединен привлекательный и юмористический стиль изложения с развитым и практичным подходом к разработке цифровых устройств. Во второе англоязычное издание вошли новые материалы о системах ввода / вывода применительно к процессорам общего назначения как для ПК, так и для микроконтроллеров. Приведены практические примеры интерфейсов периферийных устройств с применением RS-232, SPI, управления двигателями, прерываний, беспроводной связи и аналого-цифрового преобразования. Представлено высокоуровневое описание интерфейсов, включая USB, SDRAM, WiFi, PCI Express и другие. Издание будет полезно студентам, инженерам, а также широкому кругу читателей, интересующихся современной схемотехникой.
Харрис, Д.М. Цифровая схемотехника и архитектура компьютера / Д.М. Харрис, С.Л. Харрис ; пер. с англ. Imagination Technologies. - Москва : ДМК Пресс, 2018. - 792 с. - ISBN 978-5-97060-570-7. - Текст : электронный. - URL: https://znanium.com/catalog/product/1032279 (дата обращения: 24.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
www.дмк.рф

Интернет-магазин www.dmkpress.com
Книга-почтой: orders@alians-kniga.ru
Оптовая продажа: «Альянс-книга»
(499)782-3889, books@alians-kniga.ru

Дэвид М. Харрис и Сара Л. Харрис

В книге представлен уникальный и современный подход к разработке цифровых 
устройств. Авторы начинают с цифровых логических элементов, переходят к 
разработке комбинационных и последовательных схем, а затем используют эти 
базовые блоки как основу для самого сложного: проектирования настоящего 
процессора MIPS. По всему тексту приводятся примеры на языках SystemVerilog и 
VHDL, иллюстрирующие методы и способы проектирования схем с помощью САПР. 
Изучив эту книгу, читатели смогут разработать свой собственный микропроцессор 
и получат полное понимание того, как он работает. В книге объединен 
привлекательный и юмористический стиль изложения с развитым и практичным 
подходом к разработке цифровых устройств.
Во второе англоязычное издание вошли новые материалы о системах ввода/
вывода применительно к процессорам общего назначения как для ПК, так 
и для микроконтроллеров. Приведены практические примеры интерфейсов 
периферийных устройств с применением RS232, SPI, управления двигателями, 
прерываний, беспроводной связи и аналого-цифрового преобразования. 
Представлено высокоуровневое описание интерфейсов, включая USB, SDRAM, 
WiFi, PCI Express и другие. 

Особенности издания:

• охвачены основы разработки цифровых устройств для расширения навыков
     проектирования и разработки микропроцессора MIPS;
• приведены примеры, улучшающие понимание и запоминание ключевых концепций 
      и методов;
• представлены особенности разработки цифровых систем как на VHDL, так и на  
      SystemVerilog, причем листинги размещены рядом для удобства сравнения и 
      выявления преимуществ;
• включена глава о программировании на C, не только дающая необходимые 
      основы языка, но и укрепляющая связь между программированием и архитектурой
      процессора;
• дополнительные материалы (лекционные слайды, лабораторные проекты 
      и решения упражнений) размещены на сайте издательства www.dmkpress.com;
• в цветном издании исправлены неточности, опечатки и ошибки.

Цифровая схемотехника
и
архитектура компьютера

Цифровая схемотехника и
архитектура компьютера

Преподаватели также могут зарегистрироваться на textbooks.elsevier.com 

и получить:

• решения всех упражнений (PDF);
• лабораторные материалы с решениями;
• HDL-файлы примеров из книги и решения упражнений;
• лекционные слайды (PPT);
• примеры экзаменационных листов;
• образцы учебных планов курса;
• рисунки из книги (JPG, PPT).

9 785970 605707

ISBN 978-5-97060-570-7
Цветное издание

Дэвид М. Харрис
Сара Л. Харрис

ЦИФРОВАЯ СХЕМОТЕХНИКА 

И АРХИТЕКТУРА КОМПЬЮТЕРА

Переведено командой из компаний и университетов  
России, Украины, США и Великобритании

ЦВЕТНОЕ ИЗДАНИЕ

Digital Design and
Computer Architecture

Second Edition

David Money Harris
Sarah L. Harris

        AMSTERDAM • BOSTON • HEIDELBERG • LONDON        

                                        NEW YORK • OXFORD • PARIS • SAN DIEGO
                                 SAN FRANCISCO • SINGAPORE • SYDNEY • TOKYO
                                                     Morgan Kaufmann is an imprint of Elsevier

Цифровая схемотехника
и архитектура компьютера

Дэвид М. Харрис
Сара Л. Харрис

Imagination Technologies

Второе издание, исправленное

Москва, 2018

УДК 004.2+744.4
ББК 32.971.3
 
Х21

Дэвид М. Харрис, Сара Л. Харрис
Х21
Цифровая схемотехника и архитектура компьютера. / пер. с англ. Imagination Technologies. – М.: ДМК Пресс, 2018. – 792 с.: цв. ил.

ISBN 978-5-97060-570-7

В книге представлен уникальный и современный подход к разработке 
цифровых устройств. Авторы начинают с цифровых логических элементов, 
переходят к разработке комбинационных и последовательных схем, а затем используют эти базовые блоки как основу для самого сложного: проектирования 
настоящего процессора 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 (анг.)
        © 2013 Elsevier, Inc. All rights reserved.

   © Перевод, Imagination Technologies, 2016
ISBN 978-5-97060-570-7 (рус.)
        © Оформление, издание, ДМК Пресс, 2017

Моей семье, Дженнифер, Абрахаму, Сэмюелю и Бенджамину
– DMH

Ивану и Окаану, бросающим вызов логике
– SLH 

Оглавление

Похвальные отзывы на книгу  
«Цифровая схемотехника и архитектура компьютера» 
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

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

Глава 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

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

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

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

Глава 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

А.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
A.9. Экономика .................................................................................... 704

Приложение B   Инструкции архитектуры MIPS 
707

Приложение C   Программирование на языке Си 
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

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

Похвальные отзывы на книгу
«Цифровая схемотехника 
и архитектура компьютера»

Авторы книги вывели преподавание предмета на качественно иной уровень, 
создав более доступный для понимания и наглядный учебник, чем «Устройство 
и проектирование компьютеров» («Computer Organization and Design»), и описав в нем в деталях, как спроектировать микропроцессор архитектуры MIPS 
с помощью языков SystemVerilog и VHDL. Текст окажется особенно полезным 
для студентов, которые в процессе обучения столкнутся с разработкой больших цифровых систем на современных ПЛИС. 

Дэвид А. Паттерсон, Калифорнийский Университет в Беркли1 

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

Джим Френзел, Университет Айдахо

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

Джеймс Пинтер-Люк, Колледж им. Дональда Маккенны, Клермонт 

Харрис и Харрис написали очень ясную и легкую для понимания книгу. 
Упражнения хорошо разработаны, а примеры из реальной практики являются 
замечательным дополнением. Длинные и вводящие в заблуждение объяснения, 
часто встречающиеся в подобных книгах, здесь отсутствуют. Очевидно, что 
авторы посвятили много времени и усилий созданию доступного текста. Я настоятельно рекомендую книгу.

Пейи Чжао, Университет Чепмена

Харрис и Харрис написали первую книгу, которая успешно совмещает проектирование цифровых систем и архитектуру компьютеров. Книга – долгожданное учебное пособие, в котором подробно рассматривается проектирова
1  
Дэвид Паттерсон – соавтор вышеупомянутого учебника «Устройство и проектирование компьютеров». – Прим. 
перевод

 Похвальные отзывы на книгу
16

ние цифровых систем и в фантастических деталях объясняется архитектура 
MIPS. Я настоятельно рекомендую эту книгу.

Джеймс Э. Стайн, Мл., Университет Оклахомы 

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

Джеха Ким, Рамбус Инк

Это очень хорошо написанная книга, которая будет полезна как молодым 
инженерам, изучающим предмет впервые, так и опытным инженерам, которые смогут использовать ее в качестве справочника. Я настоятельно рекомендую ее.

А. Утку Дирил, Корпорация Энвидиа

Об авторах

Дэвид Мани Харрис (David Money Harris) – доцент в колледже им. Харви Мадда 
(Harvey Mudd College). Он получил ученую степень кандидата наук по электронике 
в Стэнфордском университете и степень магистра по электронике и информатике 
в Массачусетском технологическом институте (MIT). Перед Стэнфордом он работал в компании Интел (Intel) в качестве схемотехника и разработчика логики для 
процессоров Итаниум и Пентиум 2 (Itanium and Pentium II). Впоследствии он работал консультантом в Сан Майкросистемз (Sun Microsystems), Хьюлетт-Паккард 
(Hewlett-Packard), Эванс энд Сазерленд (Evans & Sutherland) и других компаниях.
Увлечения Дэвида включают в себя преподавание, разработку чипов и активный 
отдых на природе. В свободное от работы время он занимается пешим туризмом, 
скалолазанием и альпинизмом. Особенно он любит длинные прогулки с сыном Абрахамом, который родился, когда Дэвид начал работать над этой книгой. Дэвид имеет 
более десяти патентов и является автором трех других учебников по проектированию чипов, а также двух путеводителей по горам Южной Калифорнии.

Сара Л. Харрис (Sarah L. Harris) – доцент в колледже им. Харви Мадда (Harvey 
Mudd College). Она получила степени магистра и кандидата наук по электронике в 
Стэнфордском университете и степень бакалавра по электронике и вычислительной 
технике в университете Брайама Янга (BrighamYoung University). Сара также работала в компаниях Хьюлетт-Паккард, Суперкомпьютерном Центре Сан-Диего (San 
Diego Supercomputer Center), Энвидиа (Nvidia) и исследовательском отделе компании Майкрософт (Microsoft Research) в Пекине.
Интересы Сары не ограничиваются преподаванием,изучением и разработкой 
новых технологий, она также любит путешествовать, увлекается виндсерфингом, 
скалолазанием и игрой на гитаре. Среди ее недавних начинаний можно отметить 
исследования в области интерфейсов, позволяющих проектировать цифровые электрические схемы простыми рисунками от руки, работу в качестве научного корреспондента для филиала Национального Общественного Радио (National Public 
Radio) и обучение кайтсерфингу. Сара говорит на четырех языках и собирается изучить еще несколько в ближайшем будущем.

Предисловие 
к изданию на русском 
языке

История развития вычислительной техники в СССР насчитывает практически столько же лет, как и в США, так как разработка быстродействующих компьютеров являлась неотъемлемой частью технологического соперничества двух сверхдержав. Вскоре после разработки первого американского компьютера общего назначения ENIAC 
(1943–1947), в СССР была разработана МЭСМ (Малая электронная счетная машина, 
1947–1950), самый быстрый компьютер в континентальной Европе того времени. 
С развалом СССР для вычислительной техники наступили трудные времена, когда всем новым государствам она оказалась практически не нужна. Рыночные реформаторы считали, что все проблемы можно решить закупками на мировом рынке и 
современная электронная промышленность является излишней обузой для страны 
в условиях перестройки экономики.
Компьютерная и электронная инженерия оказались невостребованными в отечественной промышленности и устойчиво деградировали с 1990-х и до середины 2000-х 
годов, когда руководителям страны стала очевидной невозможность решения проблем 
информатизации страны за счет импорта без угрозы полной потери технологического 
суверенитета, совмещенной с возможным подрывом национальной безопасности.
Разработка собственных архитектур электронно-вычислительных машин (ЭВМ) 
и микропроцессоров были практически остановлены, и немногочисленные выжившие конструкторско-технологические структуры занимались, в основном, клонированием микропроцессоров ведущих мировых производителей в пределах выделенных весьма ограниченных бюджетов. Чудесным исключением можно назвать 
микропроцессоры с отечественной архитектурой «Эльбрус», которые разрабатывают и развивают ОАО «ИНЭУМ им. И. С. Брука» и фирма «МЦСТ». 
Разумеется, это привело к сужению сферы применения современной компьютерной инженерии в рамках этого круга предприятий, которым были доступны лицензии на производство и соответствующие инструментальные средства. Кроме того, 
такое состояние сказалось на вкладе отечественной электроники в мировую индустрию. Стал актуальным вопрос: есть ли в России электроника?
Если сравнивать с Россией 1913 года, то электроника в стране, безусловно, была. 
Но если сравнивать с мировой индустрией – то ее практически не было. Общий объем производства электроники в России в 2008 году составлял восемь миллиардов 
долларов (данные ассоциации производителей электронной продукции РФ), то есть 
всего 0.4% от мирового рынка, объем которого составлял более двух триллионов 
долларов. Население России (142 млн) составляло тогда 2.14% населения планеты, 
то есть уровень развития электроники был в пять раз ниже «порога самоуважения 

Доступ онлайн
1 499 ₽
В корзину