Задать вопрос
@Demon_block-sha256

Как происходит сброс и заполнение регистров ip и cs когда CPU получает сигнал reset при включении ПК?

Интересует, как именно это реализовано на цифровой схеме в архитектуре x86. Откуда процессор берёт значения которые указывают адрес reset vector. Где они хранятся пока процессор выключен.
  • Вопрос задан
  • 138 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
15432
@15432
Системный программист ^_^
1. Включается Intel ME, загружает свою прошивку из SPI флеш-памяти, инициализирует своё оборудование (внешние и внутренние PCIe шины, sideband, DMI), всё это происходит в мини-операционке внутри чипсета PCH
2. Intel ME считывает модель CPU, находит соответствующий блок микрокода в FIT разделе флешки, проверяет его цифровую подпись и загружает в CPU, вероятно, по шине DMI
3. RISC-подобный микрокод запускается на CPU, в том числе в нем закодированы инструкции по инициализации режима процессора и начальные значения программного заполнения некоторых регистров. Часть регистров заполняется аппаратно - они выполнены "в кремнии" так, что когда на reset-domain, которому они принадлежат, приходит сигнал сброса, они устанавливаются в значение по умолчанию. Опционально могут быть программные или аппаратные "страпы", меняющие значение по умолчанию на другое, например, загрузка с резервного бутлоадера.
4. RISC Микрокод начинает парсить x86 команды и исполнять программный код, симулируя CISC архитектуру и обеспечивая конвейеризацию, hyper-threading и кучу всего другого

Это если очень и очень кратко, все подробности вам вряд ли кто расскажет, многое под NDA, многое сложно понять.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Железо
software engineer
для x86 стартовый адрес CS:CI будет FFFF:0000
можно почитать детали тут https://wiki.osdev.org/System_Initialization_(x86)
Ответ написан
Комментировать
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Можно посмотреть в Intel developer manual и в разделе 11.1.1 Processor State After Reset третьего тома увидеть следующее:
677467b8789a3779090596.png

Откуда процессор берёт значения которые указывают адрес reset vector. Где они хранятся пока процессор выключен.

Оттуда же, откуда и знание о том, как закодированы инструкции -- изнутри самого процессора. Более точный ответ зависит от модели процессора. В случае 8086 это могла быть часть схемы процессора активируемая сигналом сброса и инициализирующая регистры и внутреннее состояние. В современных моделях -- наверняка это где-то в микрокоде.

Чтобы ощутить сложность можно посмотреть на то, как устроен сброс в реализации i8080 (куда более простого, чем x86) на верилоге, сделанной на основе реверс-инжениринга этого ядра по фото его кристалла. Спойлер: устроен неочевидно, тупым поиском стейт-машины по слову reset не найти.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы