15 лет назад 22 июля 2009 в 17:04 771

Северный мост, как наиболее высокоуровневый узел материнской платы, с периферийными интерфейсами не якшается, предоставляя эту задачу своему младшему брату – южному мосту, именуемому также ICH (Input / Output Controller Hub, «хаб-контроллер ввода-вывода»). Между собой два моста обмениваются данными по специальной шине DMI (Direct Media Interface). Она работает по принципу «точка-точка» и обеспечивает скорость обмена данными на уровне 10 Гбайт/с в обе стороны. Впервые она появилась в 2004 году вместе с южным мостом ICH6 и конструктивно представляет собой несколько переработанный интерфейс PCIE v.1.1. Непосредственно к центральному процессору южный мост подключения не имеет.

Микросхемы BIOS

ICH обладает куда более богатыми «связями», пусть и с менее высокопоставленными «лицами», чем его собрат. Он включает в себя интегрированные контроллеры Serial ATA и USB, реализует развертку шины PCI, соединяется интерфейсом HDAL (High Definition Audio Link) со звуковым кодеком, взаимодействует с интегрированной сетевой картой, а также имеет возможность подключения по шине LPC (Low Pin Count, «малое число контактов») к низкоуровневому контроллеру ввода-вывода (Super I/O). В ведении последнего находятся коннекторы передней панели (контакты включения и перезагрузки, выходы на светодиоды и спикер), иногда (преимущественно для старых систем) – датчики температуры и напряжения, а также наиболее простые из интерфейсов, населяющих заднюю панель (PS/2, COM, LPT). Обычно контроллер Super I/O реализует и интерфейс флоппи-дисковода (FDD).

Также южный мост контролирует так называемую Hardware Monitoring ASIC (Application-Specific Integrated Circuit, «интегральная схема, специализированная под приложение»), основным предназначением которой является слежение за рабочими параметрами ПК. Считываемые нами в BIOS либо при помощи специальных программ данные о температурах, напряжениях и оборотах вентиляторов поставляются именно этой микросхемой. Она же отвечает за управление вентиляторами.
В свою очередь, у чипа Hardware Monitoring тоже есть свой подчиненный – интерфейс SMB (System Management Bus). Он отвечает за непосредственное взаимодействие с самыми «тупыми» устройствами (к примеру, в ноутбуках именно через этот интерфейс контролируется состояние батареи), а также доносит до «вышестоящих инстанций» данные о модельном номере и изготовителе установленных в слоты расширения печатных плат и передает сигналы об ошибках.

Наиболее высокоуровневый компонент компьютера, с которым у SMB поддерживается связь, – оперативная память: именно через этот интерфейс осуществляется послестартовое определение объема «мозгов» и выяснение зашитых в модулях характеристик, а также отключение трансляции синхросигнала на пустующие разъемы.
Одним из плюсов применения SMB является отказ от специализированных линий управления для каждого устройства: этот всего-навсего двухпроводной последовательный интерфейс легко их заменяет, позволяя ощутимо уменьшить число дорожек на плате. Базируется SMB, кстати, на более старой шине I2C, разработанной фирмой Philips для своих электронных устройств и ныне также достаточно популярной.

Помимо вышеперечисленного в ведении южного моста находятся часы (Real-Time Clock) и система автоматического управления питанием (APM, Automatic Power Management). Наконец, «южник» имеет интерфейс SPI (Serial Peripheral Interface), который в привычных нам материнских платах в первую очередь используется для доступа к flash-микросхеме с BIOS или иной прошивкой. Вообще же сфера применения SPI – в общем-то весьма многофункционального и гибкого интерфейса – намного шире.

Бивис без Баттхеда
Рассматривать материнскую плату исключительно как совокупность северного и южного мостов с их обвязкой было бы неправильно. Существует третий ключевой компонент материнки, без которого та никогда не заработает, – микросхема, хранящая код BIOS. BIOS (Basic Input-Output System) – небольшая программа, выполняющаяся сразу после старта системы, в обязанности которой входит идентификация и быстрое тестирование всех ключевых компонентов, их начальное конфигурирование и дальнейшая передача управления операционной системе.

Само название BIOS указывает на то, что в нем присутствуют зачаточные функции ввода-вывода. В общем-то коммуникационные возможности BIOS ограничиваются лишь приемом сигналов с клавиатуры и выводом результатов изменений на экран в текстовом режиме (чего на самом деле вполне достаточно для работы с ним). Правда, на мой взгляд, BIOS следовало бы все-таки именовать как-то по-другому, поскольку реализация простейшего «человеческого» интерфейса есть нечто второстепенное (пусть и необходимое), а вовсе не основная обязанность прошивки. Второй распространенный вариант расшифровки аббревиатуры – Basic Integrated Operating System – тоже не слишком хорошо описывает предназначение BIOS, хотя и придает ему заслуженно высокий статус. Собственный BIOS присутствует практически у каждого более-менее сложного компонента персоналки – видеокарты, сетевого адаптера, дискового контроллера, – но для нас наибольший интерес представляет, разумеется, BIOS материнской платы.

Носителем кода BIOS в настоящее время являются компактные флэш-микросхемы емкостью от нескольких мегабит до нескольких мегабайт, допускающие стирание и последующую перезапись при помощи электрического сигнала. Старые версии микросхем с BIOS тоже были перезаписываемыми, однако стирались ультрафиолетом. Первоначально запоминающие модули с прошивкой подключались к шине ISA, затем в 1997 году они мигрировали на специализированную шину LPC, а в 2006 году переехали снова, на этот раз – на интерфейс SPI. Микросхемы с BIOS относятся к категории памяти, доступной только для чтения (Read-Only Memory, ROM), а точнее EEPROM (Electrically Erasable Programmable Read-Only Memory). EEPROM – это энергонезависимая память, для хранения данных в которой не требуется наличие питания.

Разумеется, при перепрошивках возможны сбои, которые способны привести к неработоспособности BIOS, а значит, и всего компьютера. После этого изменить микрокод на правильный можно будет только путем извлечения микросхемы и перепрошивки ее на программаторе. Причем, если та не сидит в «кроватке», потребуется весьма нетривиальная при отсутствии паяльного фена процедура выпайки. Для того чтобы избавить пользователя от подобных неудобств, производители BIOS стали делать в своих прошивках независимую часть, именуемую Boot Block, которая перепрошивается отдельно. Этот небольшой программный модуль после запуска системы проверяет целостность контрольной суммы BIOS и отслеживает неполадки. При наличии ошибок он предлагает вам восстановить образ BIOS (с дискеты, жесткого диска, флэшки) либо делает это сам, используя вторую распаянную на материнке микросхему с копией микрокода (такую технологию впервые начала применять в своих платах Gigabyte и так ее и окрестила – Dual BIOS). Ну а если все прошло успешно, он передает управление основной функциональной части BIOS.

Помимо доступной только для чтения области BIOS существует и изменяемая, в которой хранятся пользовательские настройки, – CMOS. Вообще говоря, CMOS (Complementary Metal-Oxide-Semiconductor – «комплементарная логика на транзисторах на основе металл-оксид-полупроводника») – это целая технология производства интегральных схем, изобретенная еще в 1963 году, о которой можно было бы написать не одну большую статью. Почему часть BIOS получила имя технологии, по которой она построена, вместо аббревиатуры, основанной на исполняемой ею роли, непонятно.

Память CMOS, используемая BIOS, для хранения данных требует дополнительного питания, и, чтобы настройки не сбрасывались на умолчальные после каждого выключения машины, на материнской плате предусмотрена батарейка, снабжающая электричеством CMOS и системные часы. Извлечение ее из гнезда является одним из способов вернуть настройки BIOS к исходным, если вы установили какой-либо параметр, из-за которого компьютер перестал работать.

Шаг за шагом
Сейчас я предлагаю подробно рассмотреть процессы, происходящие в компьютере, начиная с того момента, как вы замыкаете контакты PW_ON на материнской плате.
В первую очередь стартуют не мать с процессором, а блок питания. Несложная интегральная схема в нем измеряет выдаваемые напряжения, и, если те находятся в пределах нормы, блок подает сигнал Power Good на восьмой по счету контакт стандартного разъема ATX. Все это, как правило, занимает не более 0,5 с. По факту получения управляющей микросхемой на матплате сигнала о «хорошем питании» она прекращает подачу на процессор сигнала сброса в исходное состояние (Reset), тем самым запуская его. Если процессор полностью неисправен, на этом все и закончится, и вы не услышите даже звукового сигнала об ошибке. Если же с камнем все (или почти все) в порядке, тот обратится к доступной только для чтения части BIOS по адресу FFFF0h. Там хранится команда безусловного перехода к другому адресу, который уже будет являться ссылкой на программу загрузки конкретного BIOS, тогда как адрес FFFF0h един для всех.

На следующем этапе начинается собственно работа BIOS. Он сразу же начинает инициализацию и проверку исправности компонентов компьютера, называемую POST (Power-On Self Test). В первую очередь проверку проходят чипсет и оперативная память. В случае обнаружения сбоя BIOS подаст на спикер звуковой сигнал и выведет номер ошибки на индикатор POST-кодов (при наличии оного). Если же с памятью все в порядке, светлый образ BIOS будет скопирован в нее для более быстрого выполнения программы. Далее прошивка сканирует адреса памяти в диапазоне С0000h-C7800h с целью обнаружить там BIOS видеокарты. Если тот найден, подсчитывается его контрольная сумма (CRC) и сравнивается с эталонной. При их совпадении управление передается Video BIOS, который инициализирует видеокарту, в противном случае мы получим сообщение об ошибке контрольной суммы.

Если в указанном диапазоне адресов BIOS видеоадаптера найден не был либо он оказался поврежденным, вместо него используется стандартный инициализирующий драйвер видеокарты, предусмотренный в BIOS материнской платы. С момента инициализации графической карты информация начинает выводиться на монитор.
Затем примерно по тому же сценарию основной микрокод сканирует адреса памяти начиная с C8000h, пытаясь обнаружить BIOS`ы периферийных устройств и инициализировать последние. На следующем шаге BIOS материнки считывает машинное слово по адресу 0472h, которое указывает на то, «горячая» или «холодная» загрузка должна быть произведена. Первый тип загрузки происходит, когда компьютер до этого уже был запущен и перезагружен из-под ОС, второй – когда он стартует после завершения работы с отключением питания либо после нажатия кнопки Reset. Обнаружив по адресу слово 1234h, BIOS выполняет «горячую» загрузку и, пропуская множество шагов, сразу передает управление Boot Loader`у операционной системы.

Микросхемы с BIOS относятся к категории памяти, доступной только для чтения (Read-Only Memory, ROM), а точнее EEPROM (Electrically Erasable Programmable Read-Only Memory)
Микросхемы с BIOS относятся к категории памяти, доступной только для чтения (Read-Only Memory, ROM), а точнее EEPROM (Electrically Erasable Programmable Read-Only Memory)

В случае же «холодного» старта процедура самотестирования продолжается. Выполняется идентификация самой прошивки BIOS, отображается информация о ее версии и производителе. Затем BIOS инициализирует процессор и, сверяясь с имеющимися данными, выводит информацию о его производителе, марке и частоте. Если соответствия между полученным от процессора идентификационным кодом и кодами, хранящимися в BIOS, не обнаружено, появится надпись «Unknown CPU» или аналогичная ей. В случае если на старую материнскую плату был установлен новый процессор, архитектурно существенно отличающийся от предшественников, возможно, загрузка на этом этапе остановится и будет выведен сигнал об ошибке. При успешном завершении процедуры вы услышите один короткий писк, который будет означать, что основные трудности уже остались позади.

Следом проверяются системные часы (Real Time Clock), измеряется текущая рабочая частота процессора и проводится более дотошное, чем в первые мгновения после старта, тестирование базовой и расширенной памяти. Если в той есть ошибки, компьютер обычно зависает. На следующем этапе BIOS выделяет адреса и ресурсы устройствам на периферийных шинах, инициализирует контроллеры жестких дисков, клавиатуру, USB-устройства и флоппи-дисковод. Вслед за этим он выполняет некоторые специфичные операции – подсчитывает контрольную сумму собственной CMOS-памяти, проверяет соответствие напряжений допустимым, информирует пользователя о неудачно завершившемся оверклокинге, сообщает о слишком низких оборотах вентилятора и т. д. В большинстве случаев после появления на экране списка ошибок рекомендуется зайти в BIOS и исправить неугодные ему настройки, но можно и пропустить эту стадию. (Типичная ситуация – «Клавиатура не обнаружена. Нажмите F1, чтобы продолжить» (смайл).) Если в системе присутствует внешний дисковый или RAID-контроллер, BIOS материнской платы на следующем этапе передаст управление его прошивке.

Ну и, наконец, после выполнения всех этих стадий (что на самом деле занимает от 4 до 15 с), BIOS, сверяясь с параметрами, указанными в его разделе Boot Priority, ищет на жестком диске, дискете, компакт-диске или флэшке моего тезку – Bootsector, или же MBR (Master Boot Record), располагающийся на нулевой дорожке по адресу 1. Загрузочный сектор содержит в себе программу, именуемую Boot Loader или Partition Loader, а также таблицу разделов (партиций). Содержимое сектора копируется в память и исследуется на предмет загрузочности. Если оно оканчивается словом 55AAh, то Boot Loader диска просматривает таблицу разделов в поисках активного и начинает загружаться с него.

При наличии на компьютере нескольких операционных систем загрузчик по умолчанию подменяется специальным (например, NTLDR для современных ОС Windows), позволяющим осуществить выбор нужной «оси». После того как Boot Loader выяснит номер требуемой партиции, он считывает с ее первого сектора информацию о ней (объем, размер кластера и т. д.) и переходит к загрузке в память файлов операционной системы, которой в дальнейшем и передается управление. В случае же если первый сектор дискового устройства не оканчивается заветной шестнадцатеричной комбинацией, на экран выводится сообщение об ошибке вида «Disk boot failure, insert system disk and press Enter».

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

Заключение
Пожалуй, на этом мне пора подвести свой рассказ к концу. Данный материал, как вы помните, относится к циклу статей, посвященных тому, как работают различные компоненты компьютера. Мы будем рады ознакомиться с вашими замечаниями по статье, чтобы учесть их в последующих материалах, так что пишите активнее!

Мы пойдем своим путем!
С момента своего прихода на рынок центральных процессоров фирма AMD занималась не слишком благородным делом – выпускала практически точные копии камней Intel (по поводу чего, кстати, с последней постоянно судилась). В 1995 году она наконец-то изготовила первый процессор «почти» собственной разработки – K5 («почти» – потому что он изначально был создан компанией NexGen, купленной затем AMD), но тот оказался крайне неудачным, причем в значительной мере из-за удешевляющих доработок, которым его подвергли в AMD.

Следом за ним последовали три ревизии процессоров с архитектурой K6 (тоже в оригинале разработки NexGen), которые демонстрировали уже несколько более высокую производительность. При этом общим для всех вышеупомянутых камней было то, что они предназначались для установки в разъем Socket 7 (за исключением K6-II и K6-III, которым полагался несколько доработанный Super Socket 7) – тот же самый, что использовала для своих Pentium I и Pentium MMX фирма Intel. Соответственно, и вся сопутствующая логика для старых процессоров AMD была полностью идентична интеловской.

Такая ситуация имела место лишь до выпуска первого процессора Athlon в 1999 году, для которого предназначались уже собственные материнские платы с разъемом типа Slot A либо Socket A и набором микросхем AMD 750 (кодовое название Irongate), состоящим из северного моста 751 System Controller и южного 756 Peripheral Bus Controller. Вскоре системную логику для процессоров AMD стали производить и другие компании, в частности VIA и SiS, но общий принцип компоновки чипсета из северного и южного мостов сохранился.

Самое же кардинальное изменение произошло в 2003 году, с выходом первых Athlon 64. Они обладали интегрированным контроллером памяти, следовательно, северному мосту оставалось отвечать только за шину PCI Express. Поскольку расходовать на это нехитрое дело целый чип было слишком расточительно, более поздние матплаты под процессоры архитектуры K8 и K10 стали оснащать лишь одной микросхемой системной логики, играющей роль эдакого гипертрофированного южного моста. Исключение из правила «одна мать – один мост» составляли лишь те изделия, на которых присутствовало встроенное видеоядро.

Мы пойдем своим путем! – 2
Другим заметным отличием поздних материнок под AMD от современных им «проинтеловских» плат являлся отказ от шины FSB в пользу куда более быстрого и совершенного интерфейса HyperTransport, ранее известного как Lightning Data Transport, – созданной в 2001 году двунаправленной шины, способной работать как в параллельном, так и в последовательном режиме. Она используется в десятках компьютеров различных архитектур, причем порой играя довольно разные роли.
«Ширина» этой шины может составлять от 2 до 32 линий, а частота работы – до 3,2 ГГц, что обеспечивает пропускную способность вплоть до 51,2 Гбайт/с. Электрически интерфейс HT относится к типу LVDS (Low Voltage Differential Signaling), напряжение на его проводниках составляет до 2,5 В.

Передача данных в HT осуществляется путем обмена так называемыми пакетами, состоящими из нескольких 32-битных «слов» (вне зависимости от физической ширины интерфейса). Первое слово каждого пакета несет команду, за которой следуют уже сами данные. Если же в пакете необходимо передать адрес, то управляющие слова объединяются со следующим словом (словами) пакета, образуя единый адрес нужной длины (вплоть до 64 бит). Остальные слова пакета несут непосредственно передаваемую информацию, причем если длина в 32 бита избыточна, то объем слова все равно будет «добит» до нужного, но в пакете появится специальный флаг, указывающий, сколько бит из слова являются значащими. HyperTransport допускает передачу данных как с отчетами о доставке, так и без оных, что позволяет ей либо обеспечивать высокую надежность, либо развивать высокую скорость.

Существенное преимущество HyperTransport заключается в том, что единожды разработанные системы коммутации этой шины с иными интерфейсами могут быть в дальнейшем использованы всеми устройствами, поддерживающими HT, без необходимости разрабатывать чипы-коммутаторы для каждого из них, как это было раньше. Потому HyperTransport находит применение во множестве узлов (в частности, она используется в качестве интерфейса между северным и южным мостами в чипсетах NVIDIA), но для нас она более известна в роли соединения процессора с чипсетом в системах AMD. Также она выступает как неотъемлемая часть архитектуры DirectConnect, открывающей возможности для связи нескольких камней между собой в многопроцессорных системах. Быстрота и универсальность HT позволили ей одержать уверенную победу над «классической» FSB, так что даже фирма Intel, долго являвшаяся приверженцем последней, отказалась от нее в пользу шины QPI, организованной по похожему принципу.

Он способен на большее!
М икрокод матплаты может иметь функциональность, значительно превышающую ту, что описана в основной части статьи. К примеру, старые BIOS обладали встроенным интерпретатором языка Basic и утилитами для подробного тестирования узлов компьютера (как правило, видеокарты и жесткого диска), а некоторые новые прошивки позволяют производить разметку винчестера, а то и вовсе выполнять некоторые прикладные задачи без задействования операционной системы. Примером такой многофункциональной микропрограммы является EFI (Extensible Firmware Interface), обладающая приятным графическим интерфейсом и дополнительными возможностями вплоть до воспроизведения мультимедиа. EFI совершеннее, чем BIOS, и в других аспектах: изначально созданная для Intel Itanium, она позволяет процессору работать «во всю ширь» своей разрядности вместо 16-битного режима и использовать больше памяти, чем жалкий 1 Мбайт, доступный в «классических» BIOS.

Помимо EFI существует такая разработка, как Coreboot, ранее известная под именем LinuxBIOS. Фактически это открытая операционная система с предельно сокращенной функциональностью, выполняющая послестартовую инициализацию устройств и передающая управление «взрослой» операционке. Наконец, фирма ASUS применяет в своих материнских платах и некоторых готовых компьютерах дистрибутив Linux, именуемый Splashtop, который предоставляет функциональность, вполне достаточную для повседневной работы с неспецифическими приложениями и даже интернет-серфинга. Располагается этот «BIOS-переросток» на массиве флэш-памяти емкостью 512 Мбайт, распаянном прямо на материнской плате.

Никто не прокомментировал материал. Есть мысли?