УДК 004.2+744.4
ББК 32.971.3
Х20
Дэвид М. Харрис, Сара Л. Харрис
Х20 Цифровая схемотехника и архитектура компьютера. Дополнение по архитектуре
ARM / пер. с англ. Слинкин А. А. / науч. ред. Косолобов Д. А. – М.:
ДМК Пресс, 2019. – 356 с.: ил.
ISBN 978-5-97060-650-6
Данное издание является дополнением к книге «Цифровая схемотехника и
архитектура компьютера» с описанием отличий архитектуры ARM от MIPS,
описанной в первой книге. Оно состоит из глав, посвященных архитектуре
процессоров ARM, их микроархитектуре, описанию подсистемы памяти
и системы ввода-вывода. Также в приложении приведена система команд
ARM. Книгу рекомендуется использовать совместно с первым (основным)
изданием по архитектуре MIPS.
Издание будет полезно студентам, инженерам, а также широкому кругу
читателей, интересующихся современной схемотехникой.
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-800056-4 (анг.)
ISBN 978-5-97060-650-6 (рус.)
© 2016 Elsevier, Inc. All rights reserved.
© Оформление, издание, ДМК Пресс, 2019
Стр.5
Оглавление
Похвальные отзывы на книгу «Цифровая схемотехника
и архитектура компьютера». Дополнение по архитектуре ARM
Предисловие
10
12
Особенности книги ................................................................................ 12
Материалы в Интернете ............................................................................... 14
Как использовать программный инструментарий в учебном курсе ............... 14
Опечатки ....................................................................................................... 16
Признательность за поддержку .................................................................... 16
Глава 1 Архитектура
19
1.1. Введение ......................................................................................... 19
1.2. Язык ассемблера ............................................................................. 21
1.2.1. Команды .............................................................................................. 21
1.2.2. Операнды: регистры, память и константы ........................................... 23
1.3. Программирование ......................................................................... 29
1.3.1. Команды обработки данных ................................................................. 29
1.3.2. Флаги условий ..................................................................................... 32
1.3.3. Переходы ............................................................................................. 34
1.3.4. Условные предложения ....................................................................... 36
1.3.5. Циклы .................................................................................................. 38
1.3.6. Память ................................................................................................. 40
1.3.7. Вызовы функций .................................................................................. 45
1.4. Машинный язык ............................................................................. 58
1.4.1. Команды обработки данных ................................................................. 58
1.4.2. Команды доступа к памяти .................................................................. 62
1.4.3. Команды перехода ............................................................................... 63
1.4.4. Режимы адресации .............................................................................. 65
1.4.5. Интерпретация кода на машинном языке ............................................ 66
1.4.6. Могущество хранимой программы ...................................................... 67
1.5. Свет, камера, мотор! Компилируем, ассемблируем и загружаем .... 69
1.5.1. Карта памяти ....................................................................................... 69
1.5.2. Компиляция ......................................................................................... 71
1.5.3. Ассемблирование ................................................................................ 72
1.5.4. Компоновка ......................................................................................... 74
1.5.5. Загрузка .............................................................................................. 75
1.6. Дополнительные сведения .............................................................. 76
1.6.1. Загрузка литералов ............................................................................. 76
1.6.2. NOP ..................................................................................................... 78
1.6.3. Исключения ......................................................................................... 78
1.7. Эволюция архитектуры ARM .......................................................... 82
1.7.1. Набор команд Thumb ........................................................................... 83
Стр.7
Оглавление
7
1.7.2. Команды для цифровой обработки сигналов ........................................ 84
1.7.3. Команды арифметики с плавающей точкой ......................................... 90
1.7.4. Команды энергосбережения и безопасности ....................................... 91
1.7.5. Команды SIMD .................................................................................... 92
1.7.6. 64-битовая архитектура ....................................................................... 93
1.8. Живой пример: архитектура х86 ..................................................... 94
1.8.1. Регистры x86 ....................................................................................... 95
1.8.2. Операнды x86 ...................................................................................... 96
1.8.3. Флаги состояния ................................................................................. 97
1.8.4. Команды х86 ........................................................................................ 98
1.8.5. Кодирование команд х86 ..................................................................... 98
1.8.6. Другие особенности х86 .................................................................... 102
1.8.7. Общая картина .................................................................................. 102
1.9. Резюме ...........................................................................................103
Упражнения .........................................................................................104
Вопросы для собеседования .................................................................117
Глава 2 Микроархитектура
119
2.1. Введение ........................................................................................119
2.1.1. Архитектурное состояние и набор команд ......................................... 120
2.1.2. Процесс проектирования ................................................................... 120
2.1.3. Микроархитектуры ........................................................................... 123
2.2. Анализ производительности ..........................................................124
2.3. Однотактный процессор ................................................................126
2.3.1. Однотактный тракт данных ............................................................... 126
2.3.2. Однотактное устройство управления ................................................ 133
2.3.3. Дополнительные команды ................................................................. 138
2.3.4. Анализ производительности .............................................................. 140
2.4. Многотактный процессор ..............................................................142
2.4.1. Многотактный тракт данных ............................................................. 143
2.4.2. Многотактное устройство управления .............................................. 150
2.4.3. Анализ производительности .............................................................. 160
2.5. Конвейерный процессор.................................................................161
2.5.1. Конвейерный тракт данных ............................................................... 164
2.5.2. Конвейерное устройство управления ................................................ 166
2.5.3. Конфликты ........................................................................................ 167
2.5.4. Анализ производительности .............................................................. 178
2.6. Представление на языке HDL ........................................................180
2.6.1. Однотактный процессор .................................................................... 181
2.6.2. Универсальные строительные блоки ................................................. 186
2.6.3. Тестовое окружение .......................................................................... 189
2.7. Улучшенные микроархитектуры ................................................... 194
2.7.1. Длинные конвейеры .......................................................................... 194
2.7.2. Микрооперации ................................................................................. 196
2.7.3. Предсказание условных переходов .................................................... 197
2.7.4. Суперскалярный процессор ............................................................... 199
2.7.5. Процессор с внеочередным выполнением команд.............................. 201
2.7.6. Переименование регистров ............................................................... 204
Стр.8
8
Оглавление
2.7.7. Многопоточность .............................................................................. 206
2.7.8. Мультипроцессоры ............................................................................ 207
2.8. Живой пример: эволюция микроархитектуры ARM .......................210
2.9. Резюме ...........................................................................................217
Упражнения .........................................................................................218
Вопросы для собеседования .................................................................225
Глава 3 Подсистема памяти
227
3.1. Введение ........................................................................................227
3.2. Анализ производительности подсистемы памяти ..........................232
3.3. Кэш-память ................................................................................... 234
3.3.1. Какие данные хранятся в кэш-памяти? .............................................. 235
3.3.2. Как найти данные в кэш-памяти? ...................................................... 235
3.3.3. Какие данные заместить в кэш-памяти? ............................................ 245
3.3.4. Улучшенная кэш-память ................................................................... 246
3.3.5. Эволюция кэш-памяти процессоров ARM ......................................... 250
3.4. Виртуальная память.......................................................................251
3.4.1. Трансляция адресов ........................................................................... 254
3.4.2. Таблица страниц ................................................................................ 256
3.4.3. Буфер ассоциативной трансляции ..................................................... 258
3.4.4. Защита памяти .................................................................................. 260
3.4.5. Стратегии замещения страниц .......................................................... 260
3.4.6. Многоуровневые таблицы страниц .................................................... 261
3.5. Резюме .......................................................................................... 264
Упражнения ........................................................................................ 264
Вопросы для собеседования .................................................................273
Глава 4 Системы ввода-вывода
275
4.1. Введение ........................................................................................275
4.2. Ввод-вывод с отображением на память ..........................................276
4.3. Ввод-вывод во встраиваемых системах ..........................................278
4.3.1. Система на кристалле BCM2835 ....................................................... 279
4.3.2. Драйверы устройств .......................................................................... 281
4.3.3. Цифровой ввод-вывод общего назначения ......................................... 284
4.3.4. Последовательный ввод-вывод .......................................................... 287
4.3.5. Таймеры............................................................................................. 300
4.3.6. Аналоговый ввод-вывод ..................................................................... 302
4.3.7. Прерывания ....................................................................................... 310
4.4. Другие периферийные устройства микроконтроллеров .................311
4.4.1. Символьный ЖК-дисплей .................................................................. 311
4.4.2. VGA-монитор .................................................................................... 315
4.4.3. Беспроводная связь Bluetooth ........................................................... 321
4.4.4. Управление двигателями ................................................................... 323
4.5. Интерфейсы шин .......................................................................... 334
4.5.1. AHB-Lite ............................................................................................ 335
4.5.2. Пример интерфейса с памятью и периферийными устройствами ...... 336
Стр.9
Оглавление
9
4.6. Интерфейсы ввода-вывода персональных компьютеров................ 340
4.6.1. USB ................................................................................................... 342
4.6.2. PCI и PCI Express .............................................................................. 343
4.6.3. Память DDR3 .................................................................................... 344
4.6.4. Сеть ................................................................................................... 344
4.6.5. SATA ................................................................................................. 345
4.6.6. Подключение к ПК ............................................................................ 346
Эпилог
Приложение А Система команд ARM
4.7. Резюме .......................................................................................... 348
349
350
A.1. Команды обработки данных ...........................................................350
А.1.1. Команды умножения ......................................................................... 352
А.2. Команды доступа к памяти ........................................................... 353
А.3. Команды перехода ........................................................................ 354
А.4. Прочие команды ........................................................................... 354
А.5. Флаги состояния .......................................................................... 355
Стр.10