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

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

Покупка
Новинка
Артикул: 796814.02.99
Доступ онлайн
2 149 ₽
В корзину
В книге представлен уникальный и современный подход к разработке цифровых устройств. Авторы начинают с цифровых логических элементов, переходят к разработке комбинационных и последовательностных схем, а затем используют эти базовые блоки как основу для самого сложного: разработки настоящего процессора RISC-V. По всему тексту приводятся примеры на языках SystemVerilog и VHDL, иллюстрирующие методы и способы разработки схем с помощью САПР. Изучив эту книгу, читатели смогут разработать свой собственный микропроцессор и получат полное понимание того, как он работает. В книге объединен привлекательный и юмористический стиль изложения с развитым и практичным подходом к разработке цифровых устройств. В издание вошли новые материалы о системах ввода/вывода применительно к процессорам общего назначения как для ПК, так и для микроконтроллеров. Приведены практические примеры интерфейсов периферийных устройств с применением RS-232, SPI, управления двигателями, прерываний, беспроводной связи и аналого-цифрового преобразования. Представлено высокоуровневое описание интерфейсов, включая USB, SDRAM, Wi-Fi, PCI Express и др. Издание будет полезно студентам, инженерам, а также широкому кругу читателей, интересующихся современной схемотехникой.
Харрис, С. Л. Цифровая схемотехника и архитектура компьютера: RISC-V : практическое руководство / С. Л. Харрис, Д. Харрис ; пер. с англ. В. С. Яценкова, А. Ю. Романова ; под ред. А. Ю. Романова. - Москва : ДМК Пресс, 2022. - 810 с. - ISBN 978-5-97060-961-3. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2155912 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Сара Л. Харрис
Дэвид Харрис

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

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

RISC-V

Под редакцией А. Ю. Романова

Digital Design and
Computer Architecture

RISC-V Edition

Sarah L. Harris 
David Harris

AMSTERDAM · BOSTON · HEIDELBERG · LONDON        
NEW YORK · OXFORD · PARIS · SAN DIEGO
SAN FRANCISCO · SINGAPORE · SYDNEY · TOKYO
Morgan Kaufmann is an imprint of Elsevier

Москва, 2022

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

RISC-V

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

Под редакцией А. Ю. Романова

УДК 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

Содержание

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

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

Глава 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
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
Упражнения для SystemVerilog .................................................................. 287

Упражнения для VHDL ............................................................................... 289
Вопросы для собеседования .............................................................................. 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. Схемы сдвига и циклического сдвига................................................. 309
5.2.6. Умножение ........................................................................................ 310
5.2.7. Деление ............................................................................................. 312
5.2.8. Дополнительная литература.............................................................. 313
5.3. Представление чисел ................................................................................. 313
5.3.1. Числа с фиксированной запятой........................................................ 314
5.3.2. Числа с плавающей запятой .............................................................. 315
5.4. Функциональные узлы последовательностной логики ............................... 319
5.4.1. Счетчики ........................................................................................... 319
5.4.2. Сдвиговые регистры .......................................................................... 321
5.5. Матрицы памяти ........................................................................................ 324
5.5.1. Обзор матриц памяти ........................................................................ 324
5.5.2. Динамическое ОЗУ (DRAM) ............................................................. 328
5.5.3. Статическое ОЗУ (SRAM) ................................................................. 328
5.5.4. Площадь и задержки.......................................................................... 329
5.5.5. Регистровые файлы ........................................................................... 330
5.5.6. Постоянное запоминающее устройство ............................................. 330
5.5.7. Реализация логических функций с использованием матриц памяти .... 332
5.5.8. Языки описания аппаратуры и память ............................................... 333
5.6. Матрицы логических элементов ................................................................ 336
5.6.1. Программируемые логические матрицы ............................................ 336
5.6.2. Программируемые пользователем вентильные матрицы ................... 338
5.6.3. Схемотехника матриц ........................................................................ 345
5.7. Заключение ................................................................................................ 346
Упражнения ..................................................................................................... 347
Вопросы для собеседования .............................................................................. 357

Глава 6 
Архитектура 
359
6.1. Предисловие .............................................................................................. 359
6.2. Язык ассемблера ........................................................................................ 362
6.2.1. Инструкции ....................................................................................... 362
6.2.2. Операнды: регистры, память и константы ......................................... 364
6.3. Программирование .................................................................................... 370
6.3.1. Порядок выполнения программы ....................................................... 371
6.3.2. Арифметические/логические инструкции ........................................ 371
6.3.3. Ветвление программ .......................................................................... 374
6.3.4. Условные операторы ......................................................................... 377
6.3.5. Циклы ................................................................................................ 378
6.3.6. Массив .............................................................................................. 381
6.3.7. Вызовы функций ................................................................................ 385
6.3.8. Псевдокоманды ................................................................................. 398
6.4. Машинный язык ........................................................................................ 400

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

7.4.4. Анализ производительности .............................................................. 512
7.5. Конвейерный процессор ............................................................................. 515
7.5.1. Конвейерный тракт данных ............................................................... 518
7.5.2. Конвейерное устройство управления ................................................ 520
7.5.3. Конфликты ........................................................................................ 520
7.5.4. Анализ производительности .............................................................. 531
7.6. Разрабатываем процессор на HDL ............................................................. 533
7.6.1. Однотактный процессор  ................................................................... 535
7.6.2. Универсальные строительные блоки ................................................. 539
7.6.3. Тестбенч ............................................................................................ 542
7.7. Улучшенные микроархитектуры ................................................................ 547
7.7.1. Длинные конвейеры .......................................................................... 548
7.7.2. Микрокоманды .................................................................................. 549
7.7.3. Предсказание условных переходов .................................................... 550
7.7.4. Суперскалярный процессор ............................................................... 552
7.7.5. Процессор с внеочередным выполнением команд ............................. 555
7.7.6. Переименование регистров ............................................................... 558
7.7.7. Многопоточность .............................................................................. 560
7.7.8. Мультипроцессоры ............................................................................ 561
7.8. Живой пример: эволюция микроархитектуры RISC-V ............................... 565
7.9. Заключение ................................................................................................ 569
Упражнения ..................................................................................................... 571
Вопросы для собеседования .............................................................................. 579

Глава 8 
Системы памяти 
581
8.1. Введение .................................................................................................... 581
8.2. Анализ производительности систем памяти .............................................. 586
8.3. Кеш-память ................................................................................................ 588
8.3.1. Какие данные хранятся в кеш-памяти? .............................................. 589
8.3.2. Как найти данные в кеш-памяти?....................................................... 590
8.3.3. Какие данные заместить в кеш-памяти? ............................................ 599
8.3.4. Улучшенная кеш-память ................................................................... 600
8.4. Виртуальная память ................................................................................... 604
8.4.1. Трансляция адресов ........................................................................... 607
8.4.2. Таблица страниц ................................................................................ 609
8.4.4. Защита памяти .................................................................................. 612
8.4.5. Стратегии замещения страниц .......................................................... 612
8.4.6. Многоуровневые таблицы страниц .................................................... 613
8.5. Заключение ................................................................................................ 616
Эпилог .............................................................................................................. 616
Упражнения ..................................................................................................... 617
Вопросы для собеседования .............................................................................. 624

Глава 9 
Ввод/вывод во встраиваемых системах  
626
9.1. Введение .................................................................................................... 626
9.2. Отображение ввода/вывода в пространство памяти ................................. 627
9.3. Ввод/вывод во встраиваемых системах .................................................... 629
9.3.1. Плата RED-V ..................................................................................... 629
9.3.2. Система на кристалле FE310-G002.................................................... 631
9.3.3. Цифровой ввод/вывод общего назначения ....................................... 634
9.3.4. Драйверы устройств ввода/вывода ................................................... 638
9.3.5. Последовательный ввод/вывод......................................................... 642

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