Как работает процессор
Конспект видео: https://www.youtube.com/watch?v=k9wK2FThEsk&list=PLIJLLSrXDPojDGKW0WZ7sU0eO3nyn0oDc&index=2
Процессоры и проблема архитектур
• Процессоров много из-за этого есть проблемы:
• у каждого свой набор команд, которые они способны выполнять => многообразие языков программирования.
• Нужно чтобы ПО для старых моделей работало и на новых. При этом новые модели должны поддерживать новые команды
• Для решения проблем нужна единая архитектура набора команд, чтобы программы написанные на разных языках могли транслироваться в общий набор команд для конкретной архитектуры процессора.
Архитектуры набора команд
• x86 - Используются в ПК и серверах
• ARM - в смартфонах и плашетах
• AVR - в микроконтроллерах встроенных систем: автомобили, тв и тд
Разрядность
• Это величина, которая определяет размер машинного слова.
• Процессоры 32 бита называют x86, а 64 битные - x86-64
Регистры
• Перед тем как приступить к выполнению команды, данные нужно считать из ОП и положить их в быструю память - Регистры или кэш
• Регистры - маленькие ячейки память расположенные на самом процессоре.
• Они могут служить переменными и в них могут хранится результаты вычислений.
• Перед тем как начать работу, ему нужно заполнить свои регистры.
Регистры общего назначения
• Регистры есть общего и специального назначения
• Общего - выступают в качестве:
• Переменные
• Параметры
• Результаты вычислений
• Регистр AX - 16 bit, состоит из AH (High) и AL (Low) по 8 бит
• 32х битные регистры называются EAX (Extended Accumulator eXtended)
• 64x - RAX (R-Register)
• Основные регистры:
• AX — главный регистр для арифметики и ввода/вывода.
• BX — базовый регистр, часто используется как указатель.
• CX — счётчик, применяется в циклах и сдвигах.
• DX — вспомогательный регистр для умножения, деления и ввода/вывода.
Регистры специального назначения
• Сегментные регистры (CS, DS, SS, ES, FS, GS) — указывают на сегменты памяти.
• Регистры стека (SS, SP, BP) — управляют стеком.
• Флаговый регистр (FLAGS/EFLAGS/RFLAGS) — хранит биты, отражающие результат операций.
• IP/EIP/RIP — указатель команд, который определяет, какая инструкция будет выполнена следующей.
Переполнение регистра
• Когда число не вмещается в регистр, происходит переполнение и отсчёт начинается с другого конца. (127+1 = -128)
Про ассемблер
• Асемблер - транслятор языка в машинный код.
• Для каждой архитектуры нужен свой ассемблер
Опкоды
• Опкод (opcode, сокращение от operation code) — это числовой код, представляющий конкретную операцию в машинном коде процессора или виртуальной машины.
• Структура инструкции:
• Опкод — код операции (например, сложение, вычитание, загрузка данных и т. д.).
• Операнды — значения или адреса памяти, с которыми работает инструкция.
Указатель на следующую команду
• После включения компьютера процессор начинает выполнять команды с фиксированного адреса.
• По этому адресу расположен bios (Базовая операционная система ввода-вывода)
• Биос находит первое дисковое устройство, берет первый сектор, загружает в память и передаёт на него управление
• Программа в этом секторе, как правило - ОС, которая переводит процессор в защищённый режим, реализуется многозадачность, работа с памятью, выставляются ограничения и тд.
• Когда запускается программа, ОС выделяет под неё место и передаёт управление
• Передать управление - сказать процессору с какого места из памяти выполнить следующую команду (IP - Instruction pointer)
Режимы работы процессора
• Адреса к которым обращается процессор выставляются программой в ходе её выполнения, но чтобы небыло проблем с безопасностью, то адреса которые выставляет программа и реальные адреса отличаются. - механизм трансляции адресов
• Режимы:
• Реальные адреса - 16 бит - переходит сразу после включения процессора - адреса не требуют преобразования
• Защищённый - 32 бит - можно перейти толко из режима реальных адресов
• 64-разрядный - 64 бит - только из защищённого - как и защищённый
• Режим совместимости обеспечивает поддержку 32 и 64 разрядного кода.
• Режимы intel/amd
• Legacy mode/IA-32 (реальные адреса + защищенный)
• Long mode/IA-32e (64 разрядный + режим совестимости)
Защищённый режим
• Означает что обеспечивается защита данных ОС от прикладных прогамм и программ друг от друга благодаря разделению по уровням привилегий
• ОС после получения управления переходит в защищённый режим, определяет таблицы дескрипторов и прерываний, условия и ограничения программ
• Если программа попытается получить доступ к участкам памяти к которым не имеет приведение, то появиться исключение и управление передастся ОС
Уровни привилегий
• Это доступ к использованию ресурсов процессора
• В режиме реальных адресов привилегий нет, так как выполняется 1 программа и данные защищать не от кого
• В остальных режимах есть 4 уровня от 0 до 3:
• 0 - полный доступ - на нем работает ОС
• 1, 2, 3 - запреты заданные на уровне выше действуют на уровни ниже
• 3 - пользовательский - на нем работают прикладные программы
• На практике 1 и 2 используются редко
Адресация в режиме реальных адресов
• Вся ОП поделена на сегменты. Их размер зависит от текущего режима процессора
• Логический адрес (адрес конкретной ячейки который выставляется программой) = адрес начала сегмента (16 бит) / смещение сегмента (16 бит)
• В режиме РА память делиться на сегменты по 64кб
• Физический адрес (20 бит) = адреса начала сегмента << 4 + смещение
Адресация в защищённом режиме
• Память делиться на сегменты от 0 до 4 Гб
• ОС активирует механизм трансляции виртуальных адресов в физические
• Но теперь логический адрес = селектор дескриптора (16 бит) : смещение (32 бит)
• селектор дескриптора (уровень привилегий, таблица, индекс в таблице)
• Поля таблицы: индекс для каждой программы, начальный адреса сегмента, уровень привилегий, размер сегмента
Страничная организация памяти
• Всё адресное пространство разбивается на страницы
• Страница - непрерывная область памяти
• Размер зависит от режима процессора и режима трансляции адресов
• Каждая страница описывается структурой, и объединяются в таблицы страниц.
• Каждая таблица описывается структоруй и объединяются в каталог страниц
• При каждом обращении к памяти, виртуальный адрес делиться на 3 части (10,10,12 бит): индекс в каталоге страниц, индекс в таблице, смещение в странице
64 битный режим
• Является расширением 32х битной архитектуры под 64
• Сегментация отключена
• Доступно 2^52 для физической памяти и 2^48 для виртуальной
Резюмируем адресацию
• Программе в ходе выполнения нужно обращаться к памяти. Для этого она формирует логические адреса в к памяти по которым происходит обращение.
• В зависимости от режима процессора Логический адрес преобразуется либо сразу в Физический, либо в виртуальный, а потом в физический
Прерывания
• Для ввода информации через переферийные устройства сигнал подаётся на контроллер прерываний и контроллер сообщает о прерывании.
• Прерывание - сигнал процессору, чтобы он прервал выполнение текущей программы и передал управление специальной функции - обработчику прерывания
• Перед передачи управления сохраняется состояние программы (регистры, адрес инструкции...) чтобы продолжить программу после окончания прерывания.
• Функция прерывания тоже использует таблицу дескрипторов с привилегиями, чтобы определить какие программы могут воспользоваться этими прерываниями
• 3 вида:
• Программные - генерирует сам программист в программе. В Windows напрямую вызывать прерывания нельзя, но можно использовать спец функции ОС для связки внешних устройств с программой
• Аппаратные - генерируется контроллером прерываний - внешними устройствами
• Исключения - генерирует процессор при попытке программы нарушить ограничения защиты или при ошибках
• Прерывания обрабатываются по приоритетам для избежания коллизий при прерываниях от нескольких источников
Многозадачность
• Быстрое переключение между выполнениями потоков/задач
• Программы разбиваются на процессы
• Процессы разбиваются на потоки/задачи
• Потоки/задачи - самостоятельная последовательность задач, которая выполняется в своём окружении
Многопроцессорность
• На каждом процессоре есть ядра. На каждом сервере есть несколько процессоров
• 3 типа многопроцессорных систем:
• На материнской плате несколько сокетов для процессоров
• Несколько ядер на процессоре
• У процессора есть виртуальные ядра