Лекции по Вычислительным машинам, системам и сетям   

3. Тридцатидвухразрядные процессоры фирмы Intel

3.23. Инициализация процессора

Процесс инициализации МП автоматически инициируется после появления сигнала «сброс» на входе RESET. При этом, если выполняются определенные внешние условия (эти условия различаются для разных процессоров, например, для МП 486 в момент заднего фронта сигнала RESET на входе AHOLD должен стоять активный сигнал), то МП выполняет самотестирование (так называемый BIST (build in self test)). Если этот процесс прошел успешно, в eax возвращается 0. В противном случае МП неисправен. Независимо от того, было самотестирование или нет, в dh возвращается номер МП (например, для Pentium – 5), а в dl ‑ номер модели. Содержимое регистров ecx, ebx, esp, ebp, esi и edi ( а также eax, если не было самотестирования) равно нулю.

В теневую часть idtr записываются начальный адрес и размер таблицы прерываний, соответственно 0 и 3FFh.

В cr0 заносится 60000010h. То есть МП стартует в реальном режиме, с выключенным страничным механизмом и запрещенным кэшем. В регистрах cr2, cr3 и cr4 возвращаются нули.

В видимые части всех сегментных регистров (кроме cs) заносятся нули, а в теневые части (в том числе и теневую часть сs) загружается размер сегмента, равный FFFFh.

В видимую часть cs заносится F000h, а в eip0000FFF0h. Казалось бы, что МП должен стартовать с адреса Аф = (сs)×16+(eip) = 000FFFF0h, но это не так. Дело в том, что при инициализации в теневую часть cs в качестве начального адреса сегмента кода загружается FFFF0000h. Поэтому стартовый адрес МП Аф = FFFF0000h +(eip) = FFFFFFF0h. То есть МП стартует с адреса, отстоя-щего на 16 байт от конца 4-гигабайтного пространства. Сделано это для того, чтобы адреса стартового ПЗУ не располагались где-нибудь в середине адресного пространства, а однозначно находились бы в его конце.

Итак, несмотря на утверждение о том, что МП в реальном режиме не может адресовать память свыше одного мегабайта, на самом деле сразу после старта МП «находится» в адресах FFFF0000h - FFFFFFFFh, т.е. в последних 64 килобайтах 4-гигабайтного пространства. Он будет там оставаться до тех пор, пока не встретит команду jmp far. Эта команда занесет в видимую часть cs новое число, процессор умножит это число на 16 и занесет полученный результат в теневую часть cs в качестве начального адреса сегмента кода. После этого МП действительно «окажется» в самом младшем мегабайте адресного пространства и будет там оставаться до тех пор, пока не перейдем в защищенный режим.



*****
© Банк лекций Siblec.ru
Формальные, технические, естественные, общественные, гуманитарные, и другие науки.