УДК 004.2+744.4
ББК 32.971.3
Х21
Научный редактор:
Романов А. Ю., канд. тех. наук,
доцент Московского института электроники и математики им. А. Н. Тихонова
Национального исследовательского университета «Высшая школа экономики»
Сара Л. Харрис, Дэвид Харрис
Х21 Цифровая схемотехника и архитектура компьютера: RISC-V / пер. с англ. В. С. Яценкова,
А. Ю. Романова; под ред. А. Ю. Романова. – М.: ДМК Пресс, 2022. – 810 с.: ил.
ISBN 978-5-97060-961-3
В книге представлен уникальный и современный подход к разработке цифровых
устройств. Авторы начинают с цифровых логических элементов, переходят к разработке
комбинационных и последовательностных схем, а затем используют эти базовые блоки
как основу для самого сложного: разработки настоящего процессора RISC-V. По всему
тексту приводятся примеры на языках SystemVerilog и VHDL, иллюстрирующие методы
и способы разработки схем с помощью САПР. Изучив эту книгу, читатели смогут
разработать свой собственный микропроцессор и получат полное понимание того, как
он работает. В книге объединен привлекательный и юмористический стиль изложения
с развитым и практичным подходом к разработке цифровых устройств.
В издание вошли новые материалы о системах ввода/вывода применительно к процессорам
общего назначения как для ПК, так и для микроконт роллеров. Приведены
практические примеры интерфейсов периферийных устройств с применением RS-232,
SPI, управления двигателями, прерываний, беспроводной связи и аналого-цифрового
преобразования. Представлено высокоуровневое описание интерфейсов, включая USB,
SDRAM, Wi-Fi, PCI Express и др.
Издание будет полезно студентам, инженерам, а также широкому кругу читателей,
интересующихся современной схемотехникой.
This Russian edition of Digital Design and Computer Architecture: RISC-V Edition (9780128200643)
by Sarah Harris & David Harris is published by arrangement with Elsevier Inc.
The translation has been undertaken by DMK Press at its sole responsibility. Practitioners and
researchers must always rely on their own experience and knowledge in evaluating and using any
information, methods, compounds or experiments described herein. Because of rapid advances in
the medical sciences, in particular, independent verification of diagnoses and drug dosages should be
made. To the fullest extent of the law, no responsibility is assumed by Elsevier, authors, editors or
contributors in relation to the translation or for any injury and/or damage to persons or property as
a matter of products liability, negligence or otherwise, or from any use or operation of any methods,
products, instructions, or ideas contained in the material herein.
Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы
то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев
авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность
технических ошибок все равно существует, издательство не может гарантировать абсолютную
точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности
за возможные ошибки, связанные с использованием книги.
ISBN 978-0-12-820064-3 (англ.)
ISBN 978-5-97060-961-3 (рус.)
© 2022 Elsevier, Inc. All rights reserved
© Перевод, научное редактирование, НИУ ВШЭ, 2022
© Издание, оформление, ДМК Пресс, 2022
Стр.5
Содержание
Отзывы на книгу «Цифровая схемотехника и архитектура
компьютера. RISC-V» ....................................................................................... 13
Об авторах ........................................................................................................ 14
Предисловие к русскому изданию..................................................................... 15
Предисловие от редактора русского перевода ............................................... 22
Предисловие....................................................................................................... 24
Глава 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
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
Стр.6
9
6.4.1. Инструкции типа R ............................................................................401
6.4.2. Инструкции типа I ............................................................................. 403
6.4.3. Инструкции типа S/B .......................................................................404
6.4.4. Инструкции типа U/J .......................................................................407
6.4.5. Кодирование констант ....................................................................... 408
6.4.6. Режимы адресации ............................................................................ 409
6.4.7. Расшифровываем машинные коды ..................................................... 411
6.4.8. Могущество хранимой программы .................................................... 412
6.5. Камера, мотор! Компилируем, ассемблируем и загружаем ........................ 413
6.5.1. Карта памяти ..................................................................................... 414
6.5.2. Директивы ассемблера ...................................................................... 416
6.5.3. Компиляция ....................................................................................... 419
6.5.4. Трансляция ........................................................................................ 421
6.5.5. Компоновка ....................................................................................... 424
6.5.6. Загрузка ............................................................................................ 426
6.6. Добавочные сведения................................................................................. 426
6.6.1. Порядок байтов ................................................................................. 426
6.6.2. Исключения ....................................................................................... 427
6.6.3. Команды для чисел со знаком и без знака .......................................... 431
6.6.4. Команды для работы с числами с плавающей запятой ....................... 433
6.6.5. Сжатые инструкции .......................................................................... 434
6.7. Эволюция архитектуры RISC-V ................................................................. 436
6.7.1. Базовые наборы команд и расширения RISC-V ................................. 436
6.7.2. Сравнение архитектур RISC-V и MIPS .............................................. 437
6.7.3. Сравнение архитектур RISC-V и ARM............................................... 438
6.8. Живой пример: архитектура x86 ................................................................ 439
6.8.1. Регистры x86 ..................................................................................... 440
6.8.2. Операнды x86 .................................................................................... 440
6.8.3. Флаги состояния ............................................................................... 442
6.8.4. Команды x86 ...................................................................................... 442
6.8.5. Кодировка команд х86 ....................................................................... 444
6.8.6. Другие особенности x86 .................................................................... 446
6.8.7. Архитектура х86: подведение итогов ................................................. 447
6.9. Заключение ................................................................................................ 448
Упражнения ..................................................................................................... 449
Вопросы для собеседования .............................................................................. 462
Глава 7 Микроархитектура
465
7.1. Введение .................................................................................................... 465
7.1.1. Архитектурное состояние и система команд ..................................... 466
7.1.2. Процесс разработки ........................................................................... 466
7.1.3. Микроархитектуры RISC-V ............................................................... 469
7.2. Анализ производительности ...................................................................... 470
7.3. Однотактный процессор ............................................................................. 472
7.3.1. Пример программы ............................................................................ 473
7.3.2. Однотактный тракт данных ............................................................... 473
7.3.3. Однотактный блок управления .......................................................... 482
7.3.4. Дополнительные команды ................................................................. 485
7.3.5. Анализ производительности .............................................................. 488
7.4. Многотактный процессор .......................................................................... 490
7.4.1. Многотактный тракт данных ............................................................. 491
7.4.2. Многотактное устройство управления .............................................. 497
7.4.3. Дополнительные команды ................................................................. 509
Стр.10