Сердцем "центра управления" является чипсет - он связывает процессор, память, периферию и кэш. Все "связи" выполнены в виде различных "шин" и "мостов". Например, для организации быстрейшего обмена данными между процессором и памятью (кэшем второго уровня, передача данных от остальных шин к процессору и памяти) предназначена т.н. "системная шина" (управляет этим системный контроллер, входящий, конечно в весь чипсет). Из основных шин - шина PCI, шина ISA, шина ввода/вывода, USB, AGP и др. Скорости на сегодняшний день на них распределены следующим образом: AGP -66МГц, PCI - 33 МГц, скорость системной шины (а вместе с ней и памяти) зависит от чипсета. Например, 440BX (самый распространенный на сегодня чипсет для PII) поддерживает стандартно до 100МГц на системной шине. Все чипсеты для процессоров Intel Pentium 100-200МГц (K6-2, Cyrix) процессоров (440TX и пр.) - стандартно до 66МГц.
На рисунке показана стандартная архитектура чипсета 440TX. Как можно заметить, более скоростная шина PCI является транспортом для медленной ISA. Мостом в этом случае (как и контроллером для жестких дисков, которые теперь "висят" на PCI) является контроллер шины периферии. На шине ISA находится BIOS, который управляет инициализацией и загрузкой компьютера после включения питания.
Как это происходит
На самом деле, "чисто" описать, как компьютер инициализируется, не получится - во многих системах это происходит с небольшими отличиями, да и надо учитывать набор оборудования, предустановки и пр. Но в основном - это выглядит следующим образом:
Возьмем вот такой набор - материнская плата под Socket7, PCI, ISA, AGP, на борту кроме стандартного набора периферийных контроллеров (клавиатура, диски, коммуникации) ничего нет.
Итак, включаем питание - происходит общий reset логики и процессора, процессор начинает выполнять набор инструкций, которые изначально хранятся в ПЗУ на материнской плате. Набор можно логически разбить на три части - Power On Self Test (POST) - запускается только один раз и сразу после включения питания - в этом тесте проверяется аппаратура на наличие грубых ошибок (функционирование аппаратуры вообще). Одним из видимых шагов на экране - тестирование памяти. Следующая часть - Инициализация - запускается каждый раз, когда машина перегружается (например, когда пользователь нажимает Ctrl-Alt-Del) - инициализирует все доступные устройства на плате и в слотах расширения (ISA, PCI, AGP). Третья часть - это собственно BIOS (basic I/O support) - поддержка ввода/вывода на низком уровне. Этими функциями пользуются некторые операционные системы (DOS, Windows и др.) Обычно, весь BIOS располагается на отдельном чипе, который программируется на заводе, хотя в современных компьютерах может быть перепрограммирован прямо из системы. Т.е. сейчас используется Flash Memory.
Нелишним будет отметить, что существуют системы, читающие все инструкции BIOS из специальной области на жестком диске - у них нет микросхемы BIOS. А вообще, нет безбиосных компьютеров, даже если "убить" биос на жестком диске такой машины, в нем остается один нестираемый сектор, который грузит с дискетки программу перепрошивки.
Особенность существующих BIOS в том, что они весьма медленны (гораздо медленнее, чем обычная оперативная память). Поэтому, многие системы просто копируют весь BIOS в оперативную память.
На схеме можно увидеть, в какой последовательности располагаются области памяти - 128Kb - окно памяти видеоадаптера, далее - окно памяти ввода-вывода адаптеров, присоединенных к шине ввода-вывода и выше - все содержимое BIOS, теперь уже скопированное в ОЗУ (кстати, это и называется Shadow ROM).
И когда в компьютере установлено, например, 8Мб ОЗУ, а на экране показано только 7808K - (а должно быть 8192K), то это значит, что доступно для задач будет только это количество памяти (8192К минус 384К). Однако, в современной архитектуре компьютера память просто раздвигается (контроллером памяти чипсета) на 384К от 640К до 1Мб. Памяти при этом для операционной системы не теряется.
Тест памяти - это наиболее видимая часть теста аппаратуры на этапе POST. Кстати, о видимости - видеоадаптер - тоже аппаратура, и его как раз необходимо инициализировать в первую очередь - чтобы пользователь мог видеть процесс тестирования и инициализации устройств. Так же, необходимо установить еще и режим (частоту обновления, разрешение) экрана. Ведь видеокарточки могут быть сделаны разными фирмами, да еще и разные модели - кому как не биосу самой карточки знать досконально, как ее нужно инициализировать?
На каждой видеокарте есть свой BIOS, который опрашивается на его наличие при тестировании аппаратуры. Сначала системный биос ищет видео- по стандартным адресам ISA VGA, - если там нет адаптера, то он ищется на PCI , потом на AGP (или сначала AGP, а потом PCI - это в установках биоса можно прописать). И если видеобиос найден в одном из слотов, то управление передается на него.
И вообще, присутствие биоса на различных адаптерах заставляет системный биос отдавать им управление - в случае с видеоадаптером - это включение режима и т.д., в случае с сетевой картой - загрузка с сети (в случае с бездисковыми машинами - удаленная загрузка с сети) - при наличие BIOS на сетевой карте и наличие жесткого диска биос, например, может спросить - как будем грузиться - с сети или с имеющегося HDD? При наличии SCSI адаптера - он должен проинициализировать свои устройства (диски, CD-приводы, ленточные накопители и т.п.) и если таковые найдутся из числа дисков SCSI - необходимо будет поддержать int13 для того, чтобы система могла обращаться к ним, как к обычным жестким дискам. Хотя, инициализация SCSI устройств необязательна - например при старте ее можно отключать - если SCSI устройство не является загрузочным, это разумно. Причем, PCI SCSI адаптеров может быть несколько - и на каждом свой BIOS, в этом случае, системный BIOS и биосы на платах вместе разбираются, какой и куда загрузить.
Все биосы адаптеров отображаются в адресном пространстве тех 128К, которые обозначены, как I/O Bus на рисунке, где показано раздвигание памяти на 384К. Эти адреса следующие: от 0xC0000 до 0xDFFFF. Каждый раз, когда системы инициализируется, программа "пробегает" весь блок 128К и проверяет на наличие специальной сигнатуры, которая указывает на начало собственного обработчика у адаптера. И запускает его, разумеется, в этом случае.
Такой механизм позволяет, например сетевому адаптеру, правильно инициализировать самого себя - вне зависимости от производителя или модели - ведь собственный биос карточки расчитан специально для нее.
Так... что дальше.
Дальше проверяется наличие жестких дисков (IDE) на контроллере ввода-вывода (если такая опция задана в сетапе биоса), дисководов для дискет и пр. подобной периферии. Проверяется клавиатура и после успешной проверки выдается одиночный звуковой сигнал, указывающий, что инициализация прошла успешно (если нет - различным сочетанием звуковых сигналов биос сигнализирует об ошибках и/или сообщает о них на экране).
Итак, коротко можно описать следующим образом: все, кроме SCSI, IDE, USB "оживает" сразу - из адаптеров исключение составяет видеоадаптер, который инициализируется даже до проверки памяти.
Далее - если в слотах ISA находятся другие устройства, имеющие свои ПЗУ (с BIOS) - они инициализируются на этапе проверки внешних устройств, потом проходит проверка и назначение PCI (проверка устройств Plug and Play). Кстати, PnP есть и на ISA адаптерах.
Только после этого начинается проверка наличия устройств на IDE шине.
Тут может возникнуть вопрос - а как быть, если на ISA нет видеоадаптера, а есть на PCI - но ведь он "оживает" сразу - не дожидаясь даже проверки всего PCI?
Просто на PCI есть BIOS, отображаемый в обычное простанство памяти, и все VGA PCI имеют еще и стандаратную VGA программную часть, находящуюся в тех же регистрах, как и в случае, если бы это был ISA адаптер. Системный BIOS проверяет, есть ли VGA на ISA шине - если да, то на PCI шину и "не лезет", если нет - то сканирует PCI.
Ну, и в конце концов, после инициализации - считывается первый сектор первой дорожки первой головки жесткого диска и управление передается загрузочному сектору, который уже управляет дальнейшими действиями (либо выдается сообщение типа "no system to boot"). Или подобным же образом система грузится с дискеты.
Теперь, после того, как немного рассмотрели в простейшем описании инициализацию компьютера, стоит порассуждать о диагностике неполадок.
Неполдки в биосе сразу сказываются на работе PCI видеоадаптера - например, установка в слот ISA старенькой видеокарты может помочь диагностировать на экране ошибки в инициализации PCI или работы самого биоса.
Касательно сборки
Несколько неполадок, которые могут встретиться при сборке:
- все работает, Floppy drive не инициализируется - постоянно горит светодиод на дискводе - скорее всего неправильно присоединен разъем шлейфа к контроллеру. Обычно, первый провод (помечен красным) должен располагаться около разъема питания дисковода, но сущестуют модели дисководов, где это правило нарушено - там как раз наоборот - первый провод должен быть с другой стороны. То же относится к жестким дискам - система просто не инициализируется - не проходит POST, сообщающий системе о наличие запрещенных уровней сигнала на шине IDE.
- Достаточно редкая, но все же, случающаяся ошибка - неправильное подключение питания к дисководу (у него разъем не очень удачной конструкции и иногда можно ошибиться) - система после включения питания не заводится, вентилятор на процессоре чуть дернеться и все - это сразу срабатывает защита в блоке питания.
Стоит заметить, что после включения питания (и нарушения питания нет), жесткие диски издают характерный звук - сперва раскручиваются сами диски, потом частые "щелчки" - это работает система позиционирования головок. Точно таким же образом он будет инициализироваться, даже при отключенном сигнальном шлейфе к IDE контроллеру. Так что, при общей диагностике жесткий диск вам особо не помощник. Отключайте его, чтобы не мешал. Далее - удалите из слотов все адаптеры, кроме видео (желательно использовать на момент тестирования ISA адаптер). Из управляющих кнопок на плате необходим лишь reset. Из устройств сигнализации - динамик. Если по прошествии некоторого времени биос выдаст звуковой сигнал, указывающий на успешность инициализации устройств, а экран так и не ожил - очевидно, неполадка кроется в видеоадаптере.
При наличие SCSI адаптера и устройств типа SCSI - проверяйте их адреса - они выставляются у каждго SCSI устройства перемычками (ID от 0 до 7) - при совпадении многие SCSI адаптеры могут очень надолго задуматься при инициализации и проверке этих устройств.
Мышь в системе не работает. Ее не видят ни DOS, ни Windows. Первое - сигнальный шлейф с разъемом должен быть родной (поставляется вместе с материнской платой), потому как существует несколько распаек кабелей для COM портов. Некоторые подходят к другим моделям, некоторые - нет. Или причина кроется в настройках самого биоса. В setup'е в разделе Integrated Peripherals необходимо изменить значение auto у назначений адресов памяти и прерываний у COM портов на стандартные - 0x3F8, IRQ 4 у первого COM порта и 0x2F8, IRQ3 - у второго.
Ошибки работы оперативной памяти диагностировать достаточно сложно, за исключением явно нерабочих модулей, о которых сообщает POST звуковыми сигналами (система не инициализируется) - а память выше 1М хорошо проверяется только специальными программами. В любом случае, при подозрении на память, желательно иметь заведомо рабочие модули, причем от сходных систем. Например, 60нс память SIMM не работает на 486 материнских платах - не те временные характеристики.
Так же, стоит быть очень внимательным к креплению материнских плат - часто бывает, что плохо закрепленная плата касается радиаторами (транзисторов) железных частей корпуса - это практически всегда приводит к потере материнской платы...