BIOS Inside
BIOS – все, кто более-менее сталкивался с компьютером, слышал про это
слово. Для того, чтоб основательно разобраться в этом
вопросе, разберём всё по порядку.
Материнская плата -
куча больших и маленьких, квадратных и прямоугольных
микросхем, нашлёпанных между многочисленными разъёмами и
связанные друг с дружкой паутиной дорожек-проводников,
часть которых видна, а часть нет (современные платы
имеют 5- 6-тислойный монтаж). Одна из многих микросхем
представляет собой микросхему памяти, смешного по
теперешним меркам объёма - от 64кБ у 486-х до 512кБ у
Пентиум-3 с интегрированными компонентами («стандарт»
для 486-х - 64kB, Pentium-1 - 128kB, Pentium-2/3 -
256kB). При чём её содержимое сохраняется при отсутствии
питания, это - ПЗУ (Постоянное Запоминающее Устройство)
или, по-буржуйски, ROM (Read Only Memory - Память Только
Для Чтения). В ней-то и прописан объект исследований -
программа BIOS (Basic Input/Output System – Базовая
Система Ввода-Вывода). Итак, первое: «биос» - это
программа. Просто под этим словом часто понимается и
сама микросхема памяти, где она (программа BIOS)
записана. Ещё под этим словом имеют в виду одну из
подпрограмм – “BIOS Setup”, которая запускается обычно
по клавише “Del” во время загрузки компьютера. Но мы под
словом «биос» будем иметь в виду именно саму
программу. Отсюда второе: это
программа, а значит, состоит из подпрограмм. А зная, что
делает каждая из подпрограмм, можно понять всю суть
работы BIOS. Разберём по порядку все этапы
(подпрограммы) работы BIOS. Нужно добавить, что они
выполняются последовательно, и, если на каком-либо этапе
произойдёт сбой, BIOS останавливается и сигнализирует об
ошибке (чаще всего, начиная противно пищать в динамик).
Итак, включили питание, всё в порядке, в том числе
присутствует и процессор:). Главная большая квадратная
микросхема на плате (чипсет) делает сброс всех и вся
(Reset). В результате процессор переходит по адресу ПЗУ
и начинает выполнять записанную в нём программу BIOS
(здесь и далее будем брать в качестве примера BIOS от
Award, как более распространённый, хотя всё
нижеизложенное большей частью с некоторыми поправками
будет верно и для др. производителей BIOS).
1. Первоначальная
инициализация и программирование всей логики - настройка
всего этого высокотехнологичного "металлолома" на
рабочий ритм. Любой
малейший сбой уже на этом этапе обозначает полную
неработоспособность системы. При условии исправности
главных компонентов (блока питания, материнской платы и
процессора) это чаще всего является результатом
некорректно выставленных перемычек, например, задающих
частоту работы процессора выше его возможностей
(«переразгон»). Как правило, при ошибке на этом
этапе ничего не происходит - ничто не пищит, тёмный
экран, компьютер прикидывается совсем дохлым. Что можно
посоветовать в такой ситуации? – Стандартно. Если уж
совсем никак не выходит, прочтите, наконец, инструкцию
по эксплуатации (мануал).
2. Определение типа и количества памяти, её
расположения по слотам. Для работы компьютера, естественно,
нужна память. Здесь определяется её тип, количество и
расположение её по гнёздам (для корректного
программирования контроллера памяти). Думаю, знакомое
явление, связанное с проблемой памяти (во всех
смыслах:), когда при включении компьютер начинает
противно пищать. Это может быть из-за того, что вы
забыли её (память) вставить; вставили, но не так;
вставили, и так, но BIOS (плата, т.е. чипсет) её (её
тип) не знает (не поддерживает); ну, или, вставили, и
так, и знает, но тогда она неисправная. Здесь первый совет - используйте
(покупайте) только ту память (тип), которую поддерживает
ваш BIOS (плата, чипсет). Это крайне актуально в свете
теперешнего обвала цен на память DIMM, когда нужно
учитывать, что современная память может быть совершенно
не знакома старым и даже относительно "молодым"
материнским платам.
3. Проверка целостности кода BIOS путём
подсчёта контрольной суммы. Если
контрольная сумма не совпадает с подсчитанной, BIOS
"решает", что он повреждён и запускается аварийная
программа восстановления BIOS. На экран выводится
сообщение типа "BIOS checksum error", система обращается
к дисководу с целью загрузиться с него и запустить
программу перешивки. Если же дисковод
выключен/отсутствует или в нём нет дискеты/не
загрузочная, то компьютер останавливается. Кстати, на
старых машинах (Pentium1-2) при установленной PCI- или
AGP-видеокарте, сообщение об ошибке может и не
выводиться на экран, для этого нужна старенькая
ISA-видео. Поэтому, если у вас установлена
PCI/AGP-видеокарта и нет дисковода/ выключен, то при
такой ошибке может вообще ничего не произойти -
компьютер просто будет молчать. Ну, а если дисковод
включен и, вдруг, весёлым утром, вы просыпаетесь,
включаете компьютер, а он, кроме дурацкого подмигивания
лампочкой дисковода и пожёвывания забытой дискеты,
ничего не делает да не хочет ничего показывать даже на
третьем одолженном у соседа мониторе, знайте – придётся
«шить-перешивать», надо было предохраняться, вирусы не
шутки (хотя могут быть и другие происки
врагов) Здесь второй совет - не пробуйте
редактировать содержимое BIOS обычным шестнадцатеричным
редактором и потом перешивать отредактированную версию -
придётся мучаться (или тратиться), чтобы вернуть "как
было". Даже более опытным пользователем, знающим, что
такое программа modbin, нужно взять на заметку – modbin
не всегда корректно вычисляет контрольную сумму и на
многих платах, после изменения, например, заставки или,
чтоб появлялась какая крутая надпись, типа «Pentium –
VIII 33.3GHz», можно запросто столкнуться с
вышеописанной ситуацией. Замечено на многих платах от
Chaintech, некоторых Asus, MicroStar и других, при чём
это в основном «породистые» производители. Вообще, данная ситуация (checksum
error) возникает довольно частенько: и при неправильной
перешивке - плачевно, и при установке памяти, совсем
неизвестной BIOS-у (плате, чипсету) - обратимо, и при
жестоком разгоне - в основном обратимо, но иногда и
плачевно. Соответственно, решение возникших в результате
этого проблем достаточно просто и понятно - поставить
нужный тип памяти, "отразогнать" систему, ну, а если не
помогло - перешить "родной" BIOS.
4. Определение типа процессора и его
частоты. Если BIOS не
"узнает" процессор (его тип - модель/стэппинг), то
система как бы должна остановится. Но чаще всего на
экран просто выводится что-нибудь смешное типа "80486DX2
at 66MHz" для первых Pentium-ов (так обычно старые биосы
ругаются на AMD K6-2) или вдруг Intel Celeron Coppermine
воспринимается за Pentium III. В любом случае компьютер
или не заработает, или же будет работать некорректно, а
то и опасно для самих процессоров (например, в случае
"незнания", выставив неверное напряжение питания
процессора). Соответственно,
очередной совет - перед тем как приобрести себе новый
процессор убедитесь, что ваша плата/ BIOS его
поддерживают. В этом смысле не всегда правильно
руководствоваться тем, что написано в инструкции на
плату (мануале) или на самой плате. Документация на
плату обычно не самая свежая и на момент её печати
производитель мог и не подозревать, что когда-то
появится вот такой "крутой" процессор, вот на «столько
много» мегагерц. Поэтому в ней может быть и не указано,
что она поддерживает этот процессор, хотя в «последнем»
(самой «свежей» версии) BIOS будет его полная поддержка.
Ограничения чаще всего связаны как раз не с
возможностями биоса-чипсета, а с невозможностью
установить нужное напряжение питания процессора, которое
у всё более новых процессоров всегда понижалось, а
установленный на плате блок питания процессора не был на
это рассчитан.
5. Основная настройка чипсета и прочей
логики. Главная
настройка/программирование переменных чипсета. Часть
значений BIOS устанавливает сам, по умолчанию (задаётся
производителем платы), а часть может задать/изменить
пользователь в подпрограмме BIOS Setup, куда обычно
попадают, нажимая Del при загрузке. Переменные, заданные
в BIOS Setup записываются в специальную CMOS-память (в
старых системах отдельная микросхемка, а с Пентиум-1 она
встраивается в сам чипсет). Именно возможностями
этого пункта и отличаются «крутые для разгона» платы,
где можно задать множество настроек, влияющих на
скорость (и стабильность) всего компьютера, в первую
очередь, подсистемы памяти. Совет «гонщикам»: перед тем как
запрограммировать переменные, BIOS «смотрит» нажата ли
клавиша “INS”, и если да, то устанавливает все значения
«по умолчанию». А это может оказаться крайне полезно,
особенно когда выбор частоты процессора/памяти был
«случайно» задан «за слишком» круто.
6. Проверка CMOS-памяти, исправности батарейного
питания.
CMOS-память - это совсем маленькая по объёму
память (256 байт), которая благодаря своей технологии
(CMOS- или КМОП- технологии, по нашему) потребляет
очень мало энергии. Поэтому для достаточно долгой
беспрерывной работы ей хватает маленькой трёхвольтовой
батарейки. CMOS-память крайне важна для работы всего
компьютера (в ней хранится вся конфигурационная информация),
поэтому она также проверяется на контрольную сумму
и при ошибке система просто останавливается, плата
не запустится.
Вместе с CMOS-памятью проверяется наличие и исправность
батарейки, питающей её. В результате ошибки, BIOS
выдаёт соответствующую надпись (что-то типа “CMOS-checksum
error” или “Battery Low Level”, если батарейка разрядилась).
Если в CMOS-е по каким-либо причинам (например, в
результате разгона, севшей батарейки, после перешивки
BIOS) будет просто беспорядочная информация, компьютер
может совсем не запуститься. Поэтому, в любом случае,
в подобной ситуации всегда есть смысл «сбросить CMOS»
(перемычка Clear CMOS, расположенная обычно рядом
с батарейкой) или же проверить напряжение батарейки,
оно не должно быть меньше трёх вольт.
Здесь ещё один комментарий: логично было бы предположить,
что во время работы компьютера, батарейка должна подпитываться
для подзарядки. Так вот, оказывается, есть такие супер-платы,
где об этом забыли подумать, и когда батарейка садится,
они тихо- мирно издыхают из-за вышеописанной проблемы.
Расстроенные обладатели таких супер-плат отдают их
скупщикам как металлолом, а последним остаётся просто
перешить BIOS/заменить батарейку и получить абсолютно
рабочую плату. Правда, до того, как она опять не вырубится
таким же способом. Не буду показывать пальцем, что
за монстры придумывали такие перлы, скажу только,
что, видимо, не зря название этой фирмы начинается
с самой последней буквы буржуйского алфавита.
7. Установка подпрограмм низкоуровневой
работы с железом. Именно здесь записываются в память
все подпрограммы обработки прерываний: от клавиатуры и
таймера до видео и винчестера. От правильной реализации
этого пункта во многом зависит и скорость, и
стабильность, и совместимость системы. Поэтому из-за
некорректной работы именно этого пункта сыпятся всякие
проклятия и обвинения платы в глючности А значит, именно
в этот пункт чаще всего и вносятся изменения, – выходят
новые версии BIOS, где исправляются замеченные ошибки.
Характерный, ещё свежий пример – проблема, с которой
столкнулись счастливые обладатели Атлонов на ВИА-шных
платах с Лайв-звуком от Креатив. Очередной совет:
если свежекупленная плата, ну, просто дико радует вас
своей стабильностью и только какой-нибудь проклятый 3D-
Mark-ообразный тест постоянно подвешивает систему или
после просыпания компьютера (из Suspend Mode) вдруг
куда-то пропадает мышка, или любая другая, не совсем
логичная, экзотичная, неадеквадная реакция со стороны
почти любимца – не расстраивайтесь, не кричите, что нет
в жизни счастья, идеальных женщин и материских плат, – а
просто зайдите на страничку производителя вашей платы,
там вполне может оказаться свежая прошивочка, где как
раз и будут заборены эти столь досадные
недоразумения. Ещё один момент
происходит на данном этапе, который, кстати, отражает
тот факт, что и лично процессор (совершенно не
разогнанный) может быть повинен в возникающих ошибках.
Думаю, все помнят, что, как ни странно, поговорка о том,
что не ошибаются только компьютеры, не совсем верна.
Ошибаются. И на ноль они успешно делят, и два плюс два у
них не четыре получается, в общем, тоже грешны. Конечно,
эти ошибки очень мелкие и, как уверяют маркетологи,
могут случиться раз в тысячелетия. Но скорости растут,
тысячелетия сжимаются до дней, а то и минут. Потому в
Intel-процессорах начиная с PentiumPro (семейство P6, в
которое входят и P-2/Celeron/P-III/P4) ввели что-то типа
«набортного BIOS» самого процессора – изменяемый
микрокод его команд. Ведь проще заменить микрокод
программно, просто включив новый код с найденной и
исправленной ошибкой, в свежую прошивку BIOS, а не
отзывать назад проданные процессоры и менять их на
новые, которые не будут твердить, что 2+2=3.9999999999.
В общем, на этом этапе, кроме всего прочего, происходит
ещё и инициализация внутреннего микрокода процессора. Но
не все ошибки (именно процессора) можно исправить/уже
исправлены подобным способом (обновлённый микрокод). Все
равно остаётся несколько десятков, пусть встречающихся в
основном лишь теоретически, но однозначных багов. Это
надо помнить – нет ничего идеального.
8. Обнаружение и инициализация видеоадаптера,
клавиатуры, мыши (PS/2), дисковода. Настройка
контроллера ввода-вывода (LPT, COM1, COM2), других
PNP-устройств. На этом этапе происходит
поиск видеоадаптера, управление передаётся Video BIOS
адаптера, который инициализирует видеокарту и выводит её
заставку. Если видеокарта не обнаружена, система опять
же противно пищит. Также контроллером опрашивается,
подключена ли клавиатура: если да, то происходит её
внутренний самотест, если нет, то выдаётся
соответствующее сообщение об ошибке (если это не
запрещено в BIOS Setup). Инициализируется мышь-PS/2 и
дисковод. Если мыши нет, отключается её прерывание
(IRQ12). Во многих последних платах появилась
возможность освободить также и прерывание дисковода
(IRQ6), если он отсутствует/не
используется. Происходит настройка параметров Super
I/O (так зовут микросхему контроллера ввода-вывода) в
соответствие с переменными, записанными в CMOS (которые,
в свою очередь, задаются в BIOS Setup). Тут же
происходит поиск других PNP-устройств и распределение
между ними прерываний. …Поделись прерыванием своим
и оно к тебе ещё не раз вернётся… Некоторые замечание на
эту тему. **Если ваша «крайне» плагэндплэйная
карточка постоянно «залазит не туда», не забывайте, что,
как правило, во всех BIOS есть возможность вручную
распределить прерывания в BIOS Setup. **Часто, когда
в системе много устройств, прерываний может просто не
хватать. В этом случае можно порекомендовать отключить
«неиспользуемые» прерывания. Но не “жадничайте”, т.к.
если прерывание для USB можно и отключить (особенно если
у вас и разъёма такого то и нет), то, например,
отключение прерывания для вашей видеокарты, если у вас
стоит 3D-ускоритель, будет плачевным – Windows
предстанет пред вами в аскетичной 16-цветной
палитре. **Ну, а если у вас вообще
что-нибудь антикварно-неплагэндпэйное, нужно быть
внимательным и не использовать «уже кем-то занятых»
прерываний для этих устройств. Обычно это касается
стареньких звуковых карточек, которые пытаются отбить
прерывание у принтера (IRQ7) или сетевых карт, всячески
требующих IRQ3 от COM2 (туда же сунутся многие не-PNP
ISA-модемы) - нужно вырубать COM2 в соответствующем
разделе BIOS Setup.
9. Отображение на экране типа/частоты
процессора, основного теста памяти, лого
EnergyStar. Кроме определения типа
процессора происходит и определение его частоты. Как
правило, это происходит следующим способом. В процессоре
есть специальный регистр, который увеличивается на
единицу за каждый такт. BIOS засекает время (примерно
1/18-я секунды – период таймера), смотрит сколько
нащёлкает за это время тактов и получает частоту.Но
частота, конечно, получается примерная, не всегда
«круглая», поэтому BIOS берёт ближайшее «круглое»
значение из зашитой в него «таблицы частот». Кстати,
именно из-за того, что частота берётся из таблицы,
многие платы с процессорами, частота которых превышает
последнюю строчку из этой таблицы, будут писать,
например, «AMD K6-2™ at 400MHz» и для К6-2 400 и для
К6-2 450 и для К6-2 500. «Таблица частот» в системах
Pentium-III/Athlon была бы совсем громадной, поэтому там
“округление” происходит по специальному
алгоритму. Также на этом этапе выводится лого
EnergyStar и происходит проверка всей памяти путём
последовательной записи и проверки.
10. Детектирование
IDE-устройств. Предварительно происходит
программный сброс контроллера HDD. Если диски ранее были
продетектированы в BIOS Setup, то их параметры берутся
из CMOS. Если стоит режим Auto, они детектируются на
данном этапе. После происходит поиск других IDE-
устройтсв: CD-ROM, Zip-Drive и др. Обнаруженные
Primary-IDE устройства получают прерывание IRQ14, на
Secondary-IDE – IRQ15. Тут хотелось бы отметить
крайне важную для теперешнего времени проблему –
ограничение со стороны BIOS/интерфейса IDE на поддержку
HDD большой ёмкости. Когда-то, давно, большой ёмкостью
считались винчестеры ёмкостью более 512Mb. Это было
первое ограничение. Потом, в некоторых системах – 2Gb.
Но большинство старых Pentium1 ограничивается
использованием максимум 8Gb- тных винчестеров. Следующая
планка самая проблемная. Если предыдущие проблемы можно
было обойти разными способами, потому как BIOS Setup
просто показывал неправильные параметры диска, то,
начиная с 32Gb, он просто отказывается детектировать их
вообще. Поэтому, совет: eсли Вы
счастливый обладатель даже не самой старой
Socket7-системы или имеете совсем «беспородистую»
систему на Slot1/Socket370, то при выборе нового диска
ограничьтесь лучше HDD 30Gb максимум, иначе точно
придётся модернизировать вашу старушку. Платы “взрослых”
производителей, точнее их последние версии BIOS, как
правило, рассчитаны на использование HDD большой
ёмкости.
11. Поиск других BIOS (например, BIOS
SCSI-контроллера). В системе также
могут присутствовать другие устройства имеющие свой
BIOS. При их обнаружении, управление передаётся им для
инициализации обслуживаемых ими устройств. Замечание. Некоторые
SCSI-контроллеры не имеют собственного BIOS. Но во
многие BIOS, как «породистых» так и не очень,
производителей, по этому поводу встраивается небольшая
подпрограммка (или несколько) для работы с самыми
распространёнными типами адаптеров. Эта подпрограмма и
выполняют роль функции BIOS адаптера.
12. Передача управления загрузочному (boot)
сектору. Ну и на конец, последний
этап. Опрашивая устройства в порядке, предписанном в
BIOS Setup, управление передаётся программе- загрузчику.
Все дальнейшие действия по загрузке компьютера уже
выполняет именно он.
© apple_rom,
9.9.2001.
|