Почему BIOS работает в 16 битах вместо 32/64 бит?
Мой учитель говорит мне, что BIOS (или Legacy Mode) всегда загружает мой компьютер в 16 бит.
Другими словами, у меня может быть Intel Core i291832 с частотой 23,9 ГГц, но мой компьютер будет работать в 16-битном режиме, если я использую Legacy Mode. Это правда? Если так, то почему это происходит?
PS: вы можете быть очень техническим, я изучаю компьютерные науки, вероятно, поймет, что вы говорите. P.S2: Я знаю разницу между UEFI и Legacy Mode.
2 ответа
Обратная совместимость.
Современный процессор x86 может запускать программное обеспечение, написанное для оригинального 8088, например MS DOS, не прибегая к программной эмуляции. Обратите внимание, что некоторые вещи могут работать не очень хорошо, многие игры, например, полагались на тактовую частоту, поэтому то, что раньше происходило за 10 секунд на частоте 5 МГц, теперь происходит ближе к 0,02 секунды на частоте 2,5 ГГц. Удачи, реагирующей вовремя.
Реальный режим (16 бит) ведет себя иначе, чем защищенный режим (32 бита) и длинный режим (64 бита). Программа, написанная для реального режима, не может работать в защищенном или длинном режиме, она использует разные инструкции.
Поскольку обратная совместимость является одним из важнейших качеств x86, все процессоры x86 продолжают запускаться в реальном режиме. (В противном случае мы, вероятно, уже перешли бы на менее безумную архитектуру. Помните, что даже Intel хотела перейти на Itanium.)
BIOS и UEFI являются частями материнской платы, а не процессора. Таким образом, BIOS, оставаясь обратно совместимым с оригинальным IBM PC и будучи очень простым, оставляет ЦП в реальном режиме, передавая управление загрузчику. UEFI не был разработан для такой обратной совместимости и поэтому может свободно переключаться в защищенный режим перед передачей управления. Но если вы возьмете тот же процессор x86 из компьютера UEFI и поместите его в компьютер BIOS с совместимой материнской платой, он все равно будет работать, поскольку переход в 32-битный защищенный режим до загрузки загрузчика теперь остается в 16-битном режиме до загрузчика.
BIOS мертв, да здравствует UEFI!
Было ясно, что Intel планировала отказаться от BIOS к 2020 году. И да, BIOS должен был быть 16-битным, потому что он был создан для 16-битного оборудования Intel 8086/8088 и использовался 16-битным программным обеспечением. DOS на базе ПК и программное обеспечение для PC-DOS используют функции BIOS, которые представляют собой 16-битные инструкции 8086. 16-битный режим позже был назван Real Mode и представляет собой устаревший режим 8086, в котором запускается каждый процессор x86, хотя Intel ввела 16-битный защищенный режим с 80286 в 1982 году и 32-битный защищенный режим с 80386. в 1985 году. AMD представила 64-битный длинный режим (который включает 32-битный защищенный режим) с Opteron в 2003 году.
Поскольку переход из лучшего режима, т. е. в защищенном режиме, не поддерживается, возврат в реальный режим не поддерживается (хотя и возможен) , ЦП при включении должен находиться в самом низком (самом старом) режиме, в противном случае он не был бы совместим с 8086, а вместе с ним и с BIOS.
В 1980-х и 90-х годах DOS была самой широко используемой (совместимой с IBM-PC) операционной системой для ПК, за ней следовала Windows 9x на базе DOS. Поскольку DOS является настоящей 16-битной операционной системой, для ее работы требуется реальный режим. Поэтому компьютер, совместимый с IBM-PC, должен был быть 16-битным и иметь BIOS.
После тысячелетия и успеха Windows XP, основанной на 32-битной операционной системе Windows NT, собственный 16-битный реальный режим больше не использовался, вместо этого 16-битное программное обеспечение использует виртуальный режим 8086, особенность 32-битного защищенного режима. Этот виртуальный режим 8086 недоступен в режиме совместимости (в остальном 100% совместимый 32-битный защищенный режим) в новом длинном режиме 64-битной архитектуры x86 «x64». Можно возразить, что, поскольку операционной системе больше не нужен собственный 16-битный режим, процессор может запускаться в 32-битном защищенном режиме... Но нет, эти 32-битные (и ранние 64-битные) ПК все еще имел BIOS (16-битное программное обеспечение ассемблера реального режима), поэтому процессор должен был запускаться в реальном режиме. Кроме того, таким образом они оставались совместимыми со старым добрым DOS...
С появлением на ПК EFI, позже UEFI, прошивка перевела систему в 32-битный защищенный режим или 64-битный длинный режим. Только в режиме совместимости с BIOS, называемом «CSM» (модуль поддержки совместимости), (U)EFI должен переключиться обратно в реальный режим (и при этом оставаться совместимым с DOS).
Реальный вопрос: когда после 2020 года совместимость UEFI с BIOS (CSM) наконец исчезнет, зачем процессорам x86 по-прежнему запускаться в реальном режиме?
Поскольку UEFI — это новая стандартная прошивка x86, а после 2020 года предположительно всегда будет в 64-битном длинном режиме, почему бы не запустить процессор в этом режиме раз и навсегда?