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

Приложение А Система команд ARM....................................................................... 350
A.1. Команды обработки данных ................................................................................ 350
А.1.1. Команды умножения ......................................................................................... 352
А.2. Команды доступа к памяти .................................................................................. 353
А.3. Команды перехода ............................................................................................... 354
А.4. Прочие команды ................................................................................................... 354
А.5. Флаги состояния ................................................................................................... 355