Цифровая схемотехника и архитектура компьютера: RISC-V
Покупка
Новинка
Тематика:
Схемотехника. Общие вопросы
Издательство:
ДМК Пресс
Год издания: 2022
Кол-во страниц: 810
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-961-3
Артикул: 796814.02.99
В книге представлен уникальный и современный подход к разработке цифровых устройств. Авторы начинают с цифровых логических элементов, переходят к разработке комбинационных и последовательностных схем, а затем используют эти базовые блоки как основу для самого сложного: разработки настоящего процессора RISC-V. По всему тексту приводятся примеры на языках SystemVerilog и VHDL, иллюстрирующие методы и способы разработки схем с помощью САПР. Изучив эту книгу, читатели смогут разработать свой собственный микропроцессор и получат полное понимание того, как он работает. В книге объединен привлекательный и юмористический стиль изложения с развитым и практичным подходом к разработке цифровых устройств. В издание вошли новые материалы о системах ввода/вывода применительно к процессорам общего назначения как для ПК, так и для микроконтроллеров. Приведены практические примеры интерфейсов периферийных устройств с применением RS-232, SPI, управления двигателями, прерываний, беспроводной связи и аналого-цифрового преобразования. Представлено высокоуровневое описание интерфейсов, включая USB, SDRAM, Wi-Fi, PCI Express и др. Издание будет полезно студентам, инженерам, а также широкому кругу читателей, интересующихся современной схемотехникой.
- ДМК Пресс. Информационная безопасность
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационная безопасность (сводная)
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 02.03.02: Фундаментальная информатика и информационные технологии
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Сара Л. Харрис Дэвид Харрис ЦИФРОВАЯ СХЕМОТЕХНИКА И АРХИТЕКТУРА КОМПЬЮТЕРА: 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