Архитектура ЭВМ
(Федотов В.А.)
- Общая информация об устройстве компьютера. Процессор, память, кеш, шины. Северный и южный мост, периферийные устройства. Машинное слово. Организация оперативной памяти и выравнивание.
- Целые числа. Порядок байт. Представление знаковых целых чисел в виде дополнения двойки. Битовые операции. Логический и арифметический сдвиг вправо. Переполнения при приведении целых типов. Усечения и расширения целых типов. Переполнения при арифметических операциях. Замечания о программировании на Си.
- Числа с плавающей точкой. Стандарт IEEE 754. Представление чисел с плавающей точкой одинарной и двойной точности. Нормализованные и ненормализованные числа. Специальные значения NaN, +Inf, -Inf. Коммутативность операций + и *. Неассоциативность операций + и *. Округления и потеря точности. Замечания о программировании на Си. Замечания о размере регистра на процессорах Intel.
- Архитектура и микроархитектура процессора. Архитектуры CISC, RICS, WLIV. Принципиальная схема процессора. Управляющее устройство, арифметико-логическое устройство, счётчик команд, регистры общего назначения, регистры специального назначения, счётчик команд. Архитектура IA32. История развития IA32.
- Ассемблер IA32. Синтаксис AT&T. Регистры общего назначения. Суффиксы типов данных. Синтаксис для обращения к ячейкам памяти. Команды mov*. Арифметические и логические команды. Разбор примеров.
- Коды условий. Метки. Условные переходы. Безусловные переходы. Трансляция инструкции if в ассемблерный код. Разбор примеров. Трансляция программ на C в ассемблерный код. Дизассемблирование бинарных файлов. Компиляция программ на C и ассемблере в единый исполняемый файл.
- Вызов подпрограмм. Специальное значение регистров %ebp, %esp. Соглашения об использовании стека. Регистры сохранения вызывающей процедуры. Регистры сохранения вызываемой процедуры. Разбор примеров.
- Работа с массивами в ассемблере. Переполнение буфера. Работа со структурами в ассемблере. Таблицы переходов. Трансляция оператора case на C в ассемблерный код. Разбор примеров.
- Оптимизация. Безопасные и опасные оптимизации. Вынос вычислений, уменьшение стоимости операций, уменьшение алгоритмической стоимости операций. Конвейеры. Векторные инструкции.
- Память компьютера. Жёсткие диски, твёрдотельные накопители. Оперативная память, чипы DRAM. Кеш процессора, чипы SRAM. Различия SRAM и DRAM. Иерархия памяти. Понятия временной и пространственной локальности. Кеширование и оптимизация. Блочное перемножение матриц.
- Исключения и прерывания. Обработчики исключений и прерываний. Прозрачная обработка прерываний. Защищённый режим работы процессора. Взаимодействие прикладных процессов и операционной системы, системные вызовы.
- Виртуальная память. История ВП. Изоляция процессов. Режимы только для чтения и чтения-записи. Разделяемые библиотеки, общая разделяемая память. Системный вызов fork.
Литература
- Танненбаум Э., Остин Т. Архитектура компьютера 6-е из. – Спб.: Питер, 2013.
- Брайант Р., О'Халларон Д. Компьютерные системы: архитектура и программирование. Пер. С англ. – Спб.: БХВ-Петербург, 2005
|