Светит звездочка с небес, не понятно, на кой бес!.. (с) кто-то из Wonderland
Структура и опции BIOS(окончание)Структура и опции BIOS(окончание)
2.2. Специальные функции чипсета
Drive NA before BRDY
- когда выбрано "Enabled", сигнал NA (Next Address, подробнее читай ниже) устанавливается в каждом цикле чтения/записи на один такт раньше последнего сигнала BRDY#, таким образом вызывая генерацию процессором сигнала ADS# после сигнала BRDY# в следующем цикле, тем самым устраняя один потерянный такт и фактически увеличивая пропускную способность системной шины. С помощью сигнала BRDY# (Bus Ready) чипсет (точнее, т.н. "северный мост") сообщает процессору о том, что имеются данные и они доступны для чтения или есть готовность для приема данных для их дальнейшей записи.
В данной опции речь фактически идет о механизме конвейеризации, об "ускоряющих" возможностях сигнала "Next Address".
Extended CPU-PIIX4 PHLDA#
- при установке значения "Enabled" системный контроллер, входящий в состав "северного" моста, увеличивает на один такт (в тактах шины PCI) длительность сигнала PHLDA# и оставляет его активным в двух случаях:
в течение адресной фазы в начале PCI-цикла чтения/записи,
сопровождая адресную фазу "LOCK"-цикла центрального процессора.
При включенном значении опции функции "Passive Release" и "Delayed Transaction" должны быть также включены.
Сигнал PHLDA# (PCI Hold Acknowledge) применяется, в частности, для управления работой "арбитра" PCI-шины. Тема арбитража будет рассмотрена отдельно.
Gate A20 Option
- (выбор способа включения вентиля линии A20). Параметр позволяет управлять способом включения адресной линии A20, которая отвечает за доступ к памяти, физические адреса которой превышают 1 Мбайт. Стоит напомнить, что 20-разрядная адресная шина (A0 - A19) позволяла адресоваться в пределах первого мегабайта памяти. Если быть более точным, то эта линия отвечает за доступ к первым 64 килобайтам верхней памяти, известным как область HMA (High Memory Area). Доступ к HMA требует управления специальным аппаратным узлом, работа которого может быть блокирована или активизирована. При установке опции "Gate A20 Option" в состояние "Fast" работа линии будет контролироваться специальным набором микросхем на системной плате. Если линия А20 деблокирована, то HMA-область доступна для любой программы, функционирующей в реальном режиме работы процессора. Обычно эта область памяти отдается под MS-DOS, а для деблокирования линии используется драйвер HIMEM.SYS. Может принимать значения:
"Fast" - управление осуществляется чипсетом, что повышает скорость работы, "Normal" - управление осуществляется через контроллер клавиатуры.
В некоторых версиях BIOS опция может называться "Fast Gate A20 Option", а параметрами будут стандартные "Enabled"/"Disabled". Иногда в старых версиях BIOS можно встретить опцию с почти романтическим названием "LOWA20# Select". А речь идет о том, какое устройство управляет низким уровнем сигнала на линии A20: чипсет или контроллер клавиатуры. Достаточно редко, но все же можно встретить в литературе в отношении управления линии A20 такой термин, как "эмуляция". В данном случае имеется ввиду, что стандартный способ управления "вентилем" осуществляется через контроллер клавиатуры. А чипсет заменяет, подменяет это управление, "эмулирует" его (дополнительно см. ниже). И следующая опция очень хорошо показывает это. "Keyboard Emulation" имеет два значения. "Enabled" соответствует "Fast", а "Disabled" - "Normal". Следующая опция "Gate A20 Emulation" (или "Fast Gate A20 Emulation") уже не должна вызывать вопросов. Правда, опций с такими названиями, пожалуй, уже не встретишь. Иногда в литературе можно найти трактовку опции "Turbo Switch Function" как аналога "Fast Gate A20 Option", подразумевая функцию переключения, но это не совсем корректно.
Пользователям, умеющим работать с командной строкой, можно порекомендовать внешнюю команду DOS MEM /A, показывающую стандартную информацию о памяти и дополнительную информацию о сегменте HMA. Команда работает и в среде "Windows 9x".
Ну и наконец, опция "Cyrix A20M Pin", применявшаяся во времена 386-х процессоров. Процессоры Cyrix уже тогда были "особенными". Речь идет о дополнительной поддержке со стороны BIOS. Ведь в отличие от процессоров Intel, 386-е процессоры Cyrix имели собственный кэш. Такие процессоры могли иметь проблемы с обновленными комплектующими, поддерживающими кэш-память. Вполне вероятными были и другие системные конфликты. Чтобы обеспечить управление линии A20 контроллером клавиатуры, BIOS через включение опции ("Enabled") сообщал центральному процессору о состоянии вентиля. И еще о кэше. Установка "BIOS Setup" позволяла процессору через внутренний кэш кэшировать первые 64 КБ каждого (!) мегабайта памяти в реальном режиме (вентиль всегда был открыт в защищенном режиме работы процессора), и это было достаточно эффективным.
Логически память разбивается на сегменты размером по 64 КБ, что соответствует 2^16. В совсем "стареньких" машинах с 16-разрядными процессорами физически адрес не мог перейти ограничение в 64 КБ. 20-разрядная адресация, т.е. использование 20-разрядной адресной шины, достигалась благодаря тому, что при формировании 20-разрядного физического адреса использовалось суммирование со смещением в 4 разряда двух адресов: адреса сегмента и исполнительного адреса. При вычислении физических адресов в системах с 8086/88-ми процессорами могла иметь место вполне стандартная ситуация, а именно адресное переполнение, которое при наличии 20-разрядной шины адреса приводило к сворачиванию адресного пространства в т.н. кольцо. А это и происходило как раз в процессе упомянутого суммирования.
В процессорах следующего поколения (в 286-х был преодолен предел в 1 МБ адресного пространства) на его выходе A20 устанавливалось значение "1", что соответствовало адресу из второго мегабайта памяти. При разработке процессоров и чипсетов машин класса IBM PC/AT) в схему чипсета был введен специальный вентиль Gate A20. В то время его появление в наборе логики было прежде всего связано с обеспечением полной программной совместимости с предыдущим классом машин. Вентиль принудительно устанавливал нулевое значение на линии A20 адресной шины.
На первых машинах, где был реализован контроль и управление линией A20, управление последней осуществлялось через программно управляемый бит чипа контроллера клавиатуры 8042 (или 8742) (см. дополнительно раздел "Keyboard"). Позднее эта функция была возложена и на чипсет, что значительно ускорило скоростные характеристики ("Gate A20 Fast Control") системы. В итоге это означало, что появление 32-разрядных процессоров не вызвало заметных изменений по данной теме, поскольку специальный вход процессоров (A20M - A20 Mask) остался. Упомянутый вход современного процессора есть не что иное, как маскирование бита A20 физического адреса для эмуляции адресного пространства 8086 в реальном режиме работы процессора. А это связано и с тем, адресная линия A20 используется также для переключения из реального режима в защищенный, что сразу нашло применение в многозадачных и сетевых средах. Иногда можно встретить в описаниях и такие пояснения. Что существует категория пользователей, использующих старое программное обеспечение. Для таких и предназначена эта опция. Это означает, что наличие такой опции связано с совместимостью со старым ПО. Правда, фразы о категориях пользователей встречаются все реже и реже, но опция по прежнему входит в "стандартный" набор "BIOS Setup". Необходимо также отметить, что некоторые старые драйверы MS-DOS, например VDISK.SYS, могут блокировать линию А20, входя в конфликт с драйвером HIMEM.SYS (это опять таки из далекого прошлого).
Уточним вопрос об "эмуляции" и переключении процессора. Обычным образом программы для A20-операций используют обращения через BIOS или порты 60/64h, предназначенные для контроллера клавиатуры. Чипсет перехватывает эти обращения, тем самым эмулируя контроллер клавиатуры и разрешая дальнейшую генерацию соответствующих сигналов. Последовательность при этом следующая. В порт 64h записывается значение D1h, а затем в порт 60h - 02h. Если же в порт 64h затем записать значение FEh, то можно произвести "теплый" рестарт процессора. В обычном режиме работы процессора контроль линии A20, как "Fast", осуществляется через порт 92h, который программы используют для BIOS-вызовов. Возможна ситуация, когда контроль одновременно осуществляется и контроллером клавиатуры, и чипсетом. В этом случае линия A20 контроллируется через порты 60/64h.
Graphic Posted Write Buff
- чипсет может поддерживать собственный внутренний буфер для циклов записи графической памяти. Когда этот буфер включен, т.е. опция установлена в "Enabled", циклы записи процессора в графическую память попадают в буфер отложенной записи. При этом центральный процессор может начать новый цикл передачи данных еще до того, как графическая память закончит предыдущий цикл. При установке параметра в "Disabled" буфер не будет использоваться, и процессор будет находиться в ожидании в течение каждого цикла записи.
IBC DEVSEL# Decoding
- (декодирование адреса устройства). Сигнал DEVSEL (Device Select) означает "выбор устройства". Эта опция позволяет установить тип декодирования, используемый IBC (ISA Bridge Controller) для определения выбранного устройства. Чем дольше длится цикл декодирования, тем выше шанс корректного декодирования адреса, но снижаются скоростные показатели. Для отбора представлены следующие значения: "Fast", "Medium" и "Slow" (по умолчанию).
LOCK Function
- поскольку в данной опции идет речь об использовании сигнала LOCK#, то отключение опции ("Disabled") приведет к отказу от применения режима "bus-master" в системе.
NA Delay
- данная опция позволяет регулировать задержку (в системных тактах) перед выдачей сигнала NA# (Next Address). Меньшее значение повышает скоростные характеристики системы, но... Возможные значения опции: "0T", "1T", "2T".
NA# Enable
- если дословно, опция включения/отключения сигнала NA#. Установив "Enabled", мы включаем механизм конвейеризации, при котором чипсет сигнализирует центральному процессору о выдаче нового адреса памяти еще до того, как все данные, переданные в текущем цикле, будут обработаны. Следующий адрес (вместе со стробом EADS#) появится через два такта после NA#. Естественно, что включение такого режима повышает производительность системы. Запрещение опции ("Disabled") вовсе не означает отказ от использования сигнала "NA#", но его функционирование в значительной степени будет уже зависеть от качественных характеристик используемой в системе кэш-памяти и ее размера. То же содержание заключено в опциях "NA# Pin Assertion" и "Chipset NA# Asserted".
NA# On Single Write Cycle
- возвращаясь к предыдущей опции, необходимо отметить, что центральный процессор может держать на внешней шине до нескольких незавершенных циклов. Данная опция позволяет "избавиться" от незавершенных циклов, вызванных неоптимальной частотой выдачи адресной информации, сбоями в конвейере, функционированием прикладного программного обеспечения в многозадачной среде, т.п. Включение данной опции фактически ведет к отказу от конвейеризации, выделению одиночных циклов записи, что действительно может потребоваться при сбоях в системе.
Negate LOCK#
- (отрицание сигнала LOCK#). Напомним, что сигнал LOCK# (Bus Lock) - это сигнал монополизации управления шиной, сигнал блокировки доступа к шине других абонентов. При установке опции в "Enabled" ранее некэшируемые "locked" циклы будут исполняться как "незакрытые" циклы, и поэтому они могут быть кэшированы. Повышение производительности очевидно.
Single ALE Enable
- (pазpешение одиночного сигнала ALE). Немножко информации. Пин B28 на шине ISA - это сигнал BALE (Bus Adress Latch Enable - разрешение защелкивания адреса). Это сигнал стробирования адресных разрядов. Может использоваться устройствами ввода/вывода для заблаговременной подготовки к предстоящему обмену информацией. Эта линия становится активной всякий pаз пpи появлении на адресной шине информации. Можно было встретить даже такую информацию об этом сигнале: "...показывает, что действительный адрес отложен (posted) на шине". Стоит добавить, что этот сигнал использовался еще во времена 808x-х процессоров. По некоторой информации сигнал этот мог использоваться DMA-контроллерами для сообщений центральному процессору о передаче данных. Его применение было связано с программированием устройств, поэтому использование сигнала было крайне редким.
Устанавливая "Enabled", активизируем одиночный сигнал ALE вместо множественных сигналов-стробов во время ISA-циклов. В какой-то степени выбор параметра был привязан и к скорости системной шины, т.е. пропускной способности системы. Поэтому установка в "Enabled" могла привести к замедлению быстpодействия видеоканала. Эта функция всегда оставалась достаточно "темной" функцией "BIOS Setup". "Disabled" рекомендовано.
Опция может называться также "ALE During Bus Conversion" с возможными вариантами выбора: "Single" (одиночный) или "Multiple" (множественный). Естественно, что при потоковой работе ISA-шины (т.е. множественных циклов чтения/записи) предпочтительнее была бы установка опции в "Multiple". Но какой правильный выбор должен был сделать пользователь, всегда оставалось загадкой.
Некоторые чипсеты имели поддержку усовершенствованного режима, при котором выдача множественных сигналов ALE производилась во время одиночных циклов шины. Функция BIOS при этом называлась "Extended ALE", а параметрами служили "Disabled" и "Enabled". Встречая данную опцию в более современных системах, естественно при наличии ISA-шины, необходимо понимать, что присутствие оной связано только с совместимостью со спецификациями AT-шины.
В наиболее "древних" версиях BIOS весь смысл сказанного выше был заключен в опции под названием "Quick Mode".
Stop CPU when PCI Flush
- при установке опции в "Enabled" центральный процессор, получив по своей входной линии (FLUSH) активный сигнал низкого уровня FLUSH#, вынужден будет приостановиться до тех пор, пока PCI-шина не закончит передачу данных. Запрещение опции не позволит процессору входить в режим ожидания, что естественно более приемлемо для системы. "Disabled" устанавливается и по умолчанию.
Опция может называться "Stop CPU When Flush Assert".
3. CPU
Backoff Processor
- очень редкая опция и не совсем однозначно трактуемая. BOFF# (Back Off) - сигнал безусловного отключения процессора от шины. По этому сигналу процессор отдает управление шиной в следующем же такте с прерыванием текущего цикла. По окончании действия сигнала "BOFF#" процессор рестартует прерванный шинный цикл. Возможные значения опции: "Disabled" (или "No"), "Enabled" (или "Yes").
Исходя из всего изложенного, можно предположить, что в опции речь идет о безусловной передаче управления шиной другому устройству, т.е. без установок различных интервалов ожидания, определенных условий передачи управления и т.п. Об этом будет подробно изложено далее (тема "арбитража"). Понятно, что для использования указанного сигнала опцию необходимо включить.
Опция может называться "Backoff CPU".
Base I/O Address
- опция установки базового адреса устройства. I/O-адреса - это адреса ввода/вывода, называемые также портами системных и периферийных устройств. По сути, это "почтовые ящики", через которые программы и устройства обмениваются сообщениями, данными. Каждому адресу отведен один байт системной памяти. Начиная с 386-х систем таких адресов имеется в наличии 65536, хотя большинство из них никогда не используется.
Базовый I/O-адрес - это первый адрес из того адресного пространства, что предоставлен данному устройству. Например, большинство сетевых адаптеров использует адресный диапазон в 20h, а для COM 1 резервируется диапазон с адресами от 3F8h по 3FFh, которые используются для различных задач, например, установки скорости, четности, т.п. Весь адресный диапазон ввода/вывода - 0000-FFFFh.
Для данной опции не приводятся конкретные значения. Да и по содержанию опция в большей степени "подходит" материалам, посвященным распределению ресурсов различных устройств. Но опция помещена в данном месте умышленно, чтобы подчеркнуть принадлежность адресов ввода/вывода не только памяти, а и центральному процессору. Ведь от него то и начинаются управляющие процедуры, и производятся они через порты ввода/вывода.
Если просмотреть главу "Порты", то можно обратить внимание на то, что имеющиеся адреса уже "закреплены" за системными или периферийными устройствами. Но при программировании устройства ввода/вывода, а это может быть карта расширения, вполне допустимо задействование "традиционных" адресов либо неиспользуемых. В некоторых случаях использование незадействованных адресов, что связано, например, с отсутствием устройства, не обязательно ведет к конфликтам.
Рассмотренная выше опция "Extended I/O Decode" показала нам некоторые нюансы и даже сложности декодирования адресов ввода/вывода. Опция "PCI I/O Start Address", предназначенная в общем-то для PCI-устройств, тем не менее позволяет для ISA-устройств создать дополнительную область адресов и тем самым избежать "неприятных накладок".
Branch Target Buffer
- просто редчайшая функция, скорее в смысле уникальности, а не частоты появления в различных версиях BIOS. О чем идет речь? BTB (Branch Target Buffer - буфер адресов перехода) - блок центрального процессора, отвечающий за динамическое предсказание переходов. При этом принимается во внимание, какие адреса переходов были выбраны ранее. Это важнейший узел современного процессора (см. специальную литературу). Получается, что с помощью данной опции можно отказаться ("Disabled") от использования механизма предсказания переходов, ветвлений команд процессора или включить его ("Enabled"). Остается добавить, что включение опции повышает производительность системы.
CPU ADS# Delay 1T or Not
- опция установки задержки для сигнала ADS#. Несколько предваряющих слов. ADS# (Address Status) - строб адреса, вводимый инициатором обмена как индикатор действительности адреса. Сигнал действует на системной шине и может быть выходным как стороны процессора, так и со стороны чипсета. Передача адреса и адресного строба происходит одновременно, поскольку для адресного строба системная шина имеет свою выделенную линию. Понятно, что ADS# - это стандартный сигнал процессоров.
Представленная опция указывает и на возможность отсутствия задержки, что повышает скоростные характеристики обмена данными в системе. Фактически данная опция позволяет устанавливать время, в течение которого процессор (или чипсет, контроллер памяти) будет ждать от чипсета (процессора) сигнал статуса адреса данных, который определяет скорость отложенной записи на системной шине. Понятно, что речь также идет о передаче данных в PCI-интерфейс. Значение, устанавливаемое по умолчанию, менять нет необходимости. Однако при установке более скоростного процессора скорость можно и увеличить, т.е. снять задержку. Вынесенная в заголовок опция имеет два значения: "1T", "No Delay".
А вот опция "Cyrix M2 ADS# delay" предложила стандартные "Enabled" и "Disabled". Опция "Latency from ADS# status" предложила числовые значения в тактах системной шины: "2T" (по умолчанию), "3T".
Необходимо понимать, что устанавливая "время задержки", мы тем самым определяем временные характеристики циклов записи. И с учетом того, что использование буфера отложенной записи ведет, как правило, к формированию небольших пакетов (двойными словами или в два DW). Поэтому установив значение "3T", мы получаем 5 системных тактов для каждого двойного слова. Арифметика тут простая. 3 такта задержки, один адресный такт и один такт на считывание данных.
CPU BIST Enable
- в некоторых чипсетах, начиная с 430-й серии, нашли применение специализированные BIST-регистры. Большой нагрузки они не несли. Если система (чипсет + процессор) поддерживает функцию встроенного самотестирования (Built-In Self Test), то BIST-регистр хранит в своих разрядах команды "Start BIST" или "Completion Code". Если "система" не поддерживает BIST-функции, то установка опции в "Enabled" не даст эффекта, а в соответствующих разрядах регистра будут установлены "0".
Встроенный и, что немаловажно, полноценный механизм самотестирования BIST был реализован в процессорах Pentium III. Он обеспечивал постоянный контроль над зависаниями и сбоями в микрокоде, больших программируемых логических матрицах, а также обеспечивал тестирование кэша команд (инструкций) и кэша данных, буферов TLB (Translation Lookaside Buffer - буфера страничной переадресации) и сегментов памяти ROM. В течение 10-30 мсек (время связано с внутренней частотой ядра процессора) внутренним тестированием охватывается около двух третей всех внутренних блоков процессора. Лишь только после завершения теста процессор переходит в рабочий режим, результаты же теста фиксируются в регистре EAX.
CPU Drive Strength
- данная и не совсем ясная опция определяет интенсивность (strength), а точнее длительность действия сигналов при передаче данных от чипсета к процессору. Параметр измеряется в системных тактах. Чем выше значение параметра, тем выше длительность сигналов, а применение этой опции "BIOS Setup" может оказаться полезным для процедур "разгона" процессоров. Но не для всякой системы увеличение значений опции может привести к сохранению стабильности "разогнанного" процессора. Значения опции следующие: 0, 1, 2, 3. Осталось добавить, что данная опция требует дополнительного уточнения.
CPU Fast String
- (быстрые операции со строками). Разрешение этого параметра ("Enabled") позволяет использовать некоторые специфические особенности архитектуры семейства процессоров Pentium Pro (Pentium II, Deschutes и т.п.), в частности, возможность кэширования операций со строками. Надо только понимать, что и в самой пользовательской программе должны быть выполнены условия для включения этого механизма. Эти условия указаны в документации на любой процессор данного семейства. Параметр рекомендуется оставлять в состоянии "Разрешено".
CPU Line Read Multiple
- в данной опции речь идет о чтении процессором т.н. "full cache"-линии. Когда "cache"-линия заполнена данными, то их объем составляет 32 байта (восемь двойных слов). Поскольку линия "полная", система точно знает, как долго данные на линии будут считываться. На это системе потребуется 4 такта, после чего будет выставлен новый адрес. Поэтому системе не требуется сигнал об окончании передачи данных, и система не будет находиться в ожидании такого сигнала, будучи свободной для решения других задач. Когда опция включена ("Enabled"), процессор сможет считывать данные одновременно с нескольких "full cache"-линий. По умолчанию - "Disabled".
Опция может называться "CPU Multiple Reads".
Перечисленные ниже функции не содержат свойств множественности, но их размещение в данном месте более чем оправдано. Вот их наименования: "Allow Full Line Reads", "Full Cache Line Reads", "CPU Line Read". Каждая из них через "Disabled" или "Enabled" запрещает или разрешает использование "полных" линий чтения.
Опция "CPU-to-PCI Read-Line" имеет значения "On" и "Off", но различия на этом не заканчиваются. Опция под таким наименованием была введена и оптимизирована для работы с процессорами Intel OverDrive. Поэтому повышение эффективности использования CPU может быть достигнуто только с указанными процессорами. В противном случае опция должна быть отключена.
CPU Read Multiple Prefetch
- опция включения/отключения режима множественной предвыборки. Смысл процесса предвыборки (prefetch) заключается в том, что процессор, выбирая нужную инструкцию (например, из PCI-шины или памяти), одновременно начинает читать следующую, тем самым инициируя следующий процесс. Этому "способствует" то, что чипсет может иметь четыре линии чтения. Например, первые наборы логики с поддержкой процессоров Pentium Pro (Intel 450KX/GX, оба с кодовым названием Orion) как раз имели 4 такие линии чтения. Множественная же предвыборка позволяет выполнять одновременно несколько операций выборки инструкций, что существенно повышает быстродействие системы. По умолчанию устанавливается "Disabled".
Опция может называться и "CPU Multiple Read Prefetch".
Если же речь не идет о "множественных" операциях, то опция может называться "CPU Line Read Prefetch", "CPU Read Prefetch".
I/O Space Access
- данная опция через "Enabled" разрешает доступ ко всему пространству адресов ввода/вывода. Редкий BIOS обходится без странных опций.
Linear Burst
- на материнских платах, предназначенных также для для использования семейства процессоров Cyrix 6x86/L/MX, обычно используется джампер для переключения между процессорами семейств "Pentium" и "AMD", с одной стороны, и "Cyrix", с другой. Этот джампер, как правило, носит название "CPU Burst Mode", что говорит об особенностях архитектуры данных процессоров. Естественно, что при установке "Cyrix"-процессоров в слот Socket 7 опция должна быть включена ("Enabled"), так как она и была введена в BIOS для поддержки, например, процессоров Cyrix M1/M2.
Опция может называться "Linear Burst (LINBRST)", "M1 Linear Burst Mode" или "M1/M2 Linear Burst".
M1/M2 Burst & K6 Write Alloc.
- данная опция предназначена для поддержки не только процессоров семейства "Cyrix", но и процессоров "AMD K6". О функции "K5/K6 Write Allocation" детально рассказано в разделе "Кэширование памяти". Поэтому необходимо упомянуть только значения опции: "Disabled", "Enabled".
Processor Number Feature
- опция для установки автоматического считывания и вывода информации о встроенном серийном номере процессора Pentium III в BIOS материнских плат, поддерживающих его установку. Для реализации такой возможности, естественно, требуется значение параметра как "Enabled". Во всех остальных случаях устанавливается значение "Disabled". Оно же устанавливается по умолчанию.
Опция может носить название "Processor S/N". В "Phoenix BIOS" встречена аналогичная опция с названием "CPU Serial Number", а в "AMI BIOS" - "Processor Serial Number".
Зачем нужна информация о серийном номере? Скажем, для внешних программ. Один из примеров - считывание информации о процессоре при работе в Интернет. Естественно, что при этом нарушаются конфиденциальность и права пользователя. В свое время эта проблема достаточно бурно обсуждалась.
3.1. CPU Speed
Материал данного подраздела построен в соответствии со стандартными действиями пользователя: установка тактовой частоты системной шины + установка множителя (коэффициента перемножения) = установка внутренней частоты (частоты ядра) процессора. В большинстве современных версий BIOS опции установки частот системной шины, процессора вынесены, как правило, в отдельное меню, которое может называться, например, "CPU Frequency Control". Но вполне реальна и ситуация, когда для возможных пользовательских действий через BIOS предварительно необходимо переставить соответствующую перемычку на системной плате в положение типа "Configure".
CPU Host Clock Select
- опция установки тактовой частоты системной шины. Еще не так давно BIOS достаточно новой материнской платы мог предложить такой замечательный ряд значений (в МГц): 66, 75, 83, 100, 103, 112, 124, 133. Затем появились наборы из 16-18 фиксированных значений, но они начинали отсчет уже со значения 100 МГц. В общем случае вариаций установки частоты может быть достаточно много. Особенно в этом плане выделяются материнские платы, буквально созданные для разгона (например, компаний "Soltek", "Abit", "ASUS"). И тогда без проблем можно "добраться" и до 166 МГц, и даже выше.
Опция может называться "CPU Bus Frequency" и предлагать такую подборку: "Auto", "66.8MHz", "68.5MHz", "75MHz", "83.3MHz", "100MHz", "103MHz", "112MHz". Значение "Auto" устанавливается по умолчанию и оно является рекомендованным.
Может быть предложен более "изощренный" вариант опции, связанный с тем, что модули памяти работают на частоте системной шины. Тогда опция может называться "Host/DRAM Frequency", а значения будут следующими: "66 MHz", "100 MHz". Понятно, что в данном варианте речь идет о SDRAM-памяти и интеловском чипсете с двумя фиксированными значениями тактовой частоты, например, 440BX.
Опция может называться "CPU Host Clock" или "External Bus Speed".
Несколько нестандартной оказалась опция "CPU Clock/Spread Spectrum" (смотри раздел "Special"). Согласно опции устанавливается не только частота системной шины, но и разрешается/запрещается ("On"/"Off") включение механизмов понижения электромагнитной интерференции в системе. На выбор параметров влияет также и установка базовой перемычки тактовой частоты шины процессора: 66 или 100 МГц. В итоге для предустановленных 66 МГц имеем следующий набор значений: "Default", "66MHz/Off", "66MHz/On", "75MHz/Off", "83MHz/Off", "95MHz/Off". Если же предварительно установлено 100 МГц, то имеем такой внушительный ряд: "100MHz/Off", "100MHz/On", "112MHz/On", "117MHz/On", "124MHz/Off", "133MHz/Off", "133MHz/On", "138MHz/Off", "140MHz/On", "150MHz/Off".
Опция "CPU Operating Speed" через значение "User Define" дает возможность устанавливать частоту FSB (Front Side Bus) от 66 до 153 МГц. В противном случае можно однозначно выбрать одно из фиксированных соотношений частоты ядра CPU и частоты шины от "300/66" до "1G/133".
Непосредственно к рассматриваемой теме примыкают вопросы т.н. "разгона" (overclocking) процессоров. Эта проблема уже достаточна освещена в литературе, нет смысла на ней останавливаться подробно. Со стороны же установок BIOS очень удобно, когда пользовательские действия адекватно воспринимаются и оцениваются. В этом плане меню "CPU Bus/PCI Freq" наиболее оптимально. Ведь превышение частоты PCI-шины свыше 37 МГц может повлечь за собой неисправность не только карт расширения, но и сбои жестких дисков.
В последние годы вариаций опций для установки системной частоты стало очень много. Простое их перечисление заняло бы немало места. Перечислим лишь некоторые. "CPU Host Clock Frequency". "CPU Host/PCI Clock" предлагает значение "Default", что равнозначно автоматической установке "стандартных" значений, а также возможность комбинирования двух системных частот. Опция может называться "CPU Host/3V66/PCI Clock".
CPU Ratio
- может принимать значения: 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5. Приведен практически весь возможный ряд коэффициентов умножения, который, как и сама опция, впрочем может отсутствовать вовсе, если коэффициент является фиксированным. Это довольно обычная ситуация, если речь идет об "интеловских" комплектующих. "Благоприятная" ситуация позволяет настраивать параметры работы CPU через BIOS, включая естественно нашумевший разгон процессоров.
Опция может называться "CPU Freq Ratio", а ряд значений может иметь несколько непривычный вид: "1:2", "1:3", "1:4", "1:5", "1:6", "1:7", "1:8", "2:5", "2:7", "2:9", "2:11", "2:13", "2:15".
В некоторых случаях для коэффициента умножения "не жалко" и двух опций: "CPU Multiplier Shown" и "CPU Multiplier (Real)". Одна из этих опций позволяет установить значение вручную, а другая выводит на экран реально полученное значение, которое может и отличаться от желаемого.
Должно быть также понятно, что любая указанная цифра может оказаться недостаточно высокой для какой-нибудь последней реализации процессора и чипсета.
CPU Speed
- поскольку внутренняя частота процессора является результатом перемножения двух других параметров, то данная опция носит информационный характер. Результирующая частота процессора может быть представлена, например, в таком виде: 133 MHz (66 x 2).
Опция может называться "CPU Frequency (MHz)".
Во многих случаях данная опция выносится наверх окна соответствующего меню (подменю) "BIOS Setup", хотя ее значение является результатом вычисления. Но в некоторых случаях пользователь может иметь доступ к параметрам данной опции. Опция "CPU Speed" может предложить значение "Manual", тогда активируются поля "CPU Ratio" и "CPU Host Clock" для индивидуальных установок. Но это конкретная реализация не только версии BIOS, но и системной платы, наверняка содержащей специальную перемычку для возможности ручных настроек. В подтверждение сказанному можно привести параметры опции "CPU Speed" для материнской платы AbitSM2: "User Define" и "Automatic".
В продолжение и дополнение вышесказанного необходимо выделить опцию "CPU Freq Select" со значениями "Hardware" и "Software", определяющими метод установки внутренней частоты процессора. Первое значение определяет использование соответствующих перемычек на системной плате, второе же предполагает применение настроек через "BIOS Setup". Но также реальна ситуация с непосредственным выбором частоты процессора без каких-либо предварительных установок. Так опция "Processor Speed" предложила ряд значений ("233", "266", "300" и т.д.), а пользователь должен понимать, что имея фиксированные 66 МГц, он косвенно устанавливает множитель: 3.5, 4, 4.5 и т.д.
CPU Vcore
- (установка напряжения ядра процессора). Не так уж много времени прошло с тех пор, как в современных системах был реализован мониторинг некоторых напряжений на материнской плате, "оборотистости" вентиляторов и контроль температуры. Появилась возможность устанавливать "критический" предел для температуры процессора и некоторые другие параметры. Можно ли было мечтать о самой возможности регулировки питания процессора! Но это уже прошлое!
При практически любом современном тестировании системных плат или отдельных системных компонентов возможности "разгона" оцениваются чуть ли не прежде всего, следуя за простым перечислением комплектности, оснащенности материнской платы. И производители системных плат не могут не учитывать желания миллионов пользователей. Еще не так давно такие компании, как "AOpen", а тем более "Soltek" или "Shuttle", вряд ли могли похвастаться заметной долей на рынке системных плат. Теперь же сравнительное тестирование материнских плат, чипсетов не обходится без их участия. И все благодаря заложенным возможностям "разгона" (достаточно вспомнить "нашумевшую" плату "Soltek SL-75DRV").
Одним из факторов, расширяющих эти возможности, является простая необходимость изменять (увеличивать!) напряжение питания ядра процессора. Сохранение стабильности системы при "простом" частотном "разгоне" без увеличения напряжения ядра процессора маловероятно. И данная опция предоставляет, как правило, целый ряд значений, который может видоизменяться как от версии BIOS или ее производителя, так и от производителя системной платы, чипсета, предназначенного для него процессора, а значит и напряжения ядра. Поэтому вариаций достаточно много. Приведем такой ряд значений: "1.750V", "1.775V", "1.800V", "1.825V", "1.850V" (напомним, что допустимое значение может составлять 1,5 В). Как видим, шаг составляет 0,025 В, и это "хороший" шаг! Ведь конкурентная борьба идет и за этот показатель. В проигрыше (при прочих равных показателях) может оказаться тот, кто предложит возможность изменять напряжение питания ядра процессора с шагом в 0,05 В. Стоит также напомнить, что значения порядка 1,8 В весьма близки к критическим, и любые действия в этом направлении более опасны, чем эксперименты с таймингами или прерываниями!!! Некоторые версии BIOS просто не позволяют переходить предел в 1,8 В. К счастью для пользователей Intel в своих последних моделях Pentium IV на ядре Northwood предусмотрела защиту, которая в случае опасности выхода процессора из строя тормозит его работу, тем самым сигнализируя о недопустимости каких-либо дальнейших действий по "разгону".
В данном случае приведенные значения не "привязаны" к конкретным моделям процессоров. Иначе описание опции превратилось бы неминуемо в перечень технических характеристик. Понятно, что данная опция ныне располагается среди функций установки частотных характеристик системной платы, и все это может выглядеть следующим образом:
CPU Speed CPU:System Frequency Multiple System/PCI Frequency (MHz) System/SDRAM Frequency Ratio
CPU Vcore
Опция может называться также "CPU Voltage Regulator". Опция "CPU Core Voltage", имея значение "Auto", также дает возможность устанавливать напряжение ядра процессора вручную.
SEL 100/66# Signal
- своим рождением этот сигнал ("100/66#") центрального процессора был обязан внедрению в материнские платы 100-мегагерцовой системной шины. Управление сигналом через установки BIOS приводит к тому, что линия, соответствующая этому сигналу, либо свободна ("high" - 100 мГц), либо заземлена ("low" - 66 мГц). Тем самым управление сигналом приводит к выбору частоты системной шины.
Позднее этот сигнал был переименован в "BSEL0#", а в паре с "BSEL1#" он стал принимать участие и в установке частоты шины в 133 мГц (см. таблицу).
* Контакты приводятся для разъема Socket-370
Speed Error Hold
- эту опцию можно перевести, как "сохранение скорости при ошибке". Речь идет об установке нештатной внутренней частоты центрального процессора и ее последствиях. После установки такой частоты в "BIOS Setup" и последующей перезагрузки система просто остановится, а пользователь не получит желаемого "разгона". Правда, ошибочка вышла с названием опции. Данная опция появилась уже давненько, а вот фирменные технологии типа "RedStorm" совсем недавно. Вот они то и позволяют "сохранять" оптимальные частоты, по сути перестраивая "BIOS Setup" для последующей загрузки. Но это отдельная тема! Значения же рассматриваемой опции: "Enabled" (оно остановит загрузку) и "Disabled". Данная опция в свое время часто использовалась компанией "Abit" в своих системных платах.
Turbo Frequency
- данная опция (по наименованию) конечно же напоминает турбо-функции, изложенные ранее. Но! Речь вовсе не идет об устаревшей опции, влиявшей на некоторые скоростные характеристики, работу кэш-памяти, т.п. С помощью данной опции можно либо блокировать возможность изменения системной частоты, либо иметь такую возможность ("Enabled"). Представленная опция, как правило, функционирует в составе меню, позволяющем программно устанавливать частотные характеристики системы, т.е. через BIOS, или просто вместе с другими базовыми опциями. В свое время компания "ABIT" первой "проложила путь" к ставшим потом стандартными т.н. "CPU SoftMenu".
Конечно же данная опция не решает задачи увеличения частоты системной шины в n раз. Этот рост частоты может составлять 2,5%, не более. Да и система должна поддерживать прежде всего такой "Turbo"-режим. Но рассматривая возможность изменения системной частоты, пользователь однозначно должен предвидеть появление проблем со стабильностью системы. Для центрального процессора увеличение внутренней частоты на 2,5% не должно вызвать никаких проблем. Проблемы могут появиться в работе системной памяти, периферии, хотя в большинстве случаев стабильность системы не должна пострадать! Данную опцию вполне можно назвать "оверклокерской", хотя серьезных "разгонщиков" она вряд ли устроит.
В некоторых случаях включение режима "turbo frequency" осуществляется путем переустановки соответствующего джампера на материнской плате, и приведенная опция, не имея никаких параметров, только показывает "разогнанную" частоту.
Turbo Mode (75 MHz)
- специальная опция "AMI BIOS", предназначавшаяся для работы процессора Pentium II на 75-мегагерцовой системной шине. При установке опции в "Disabled" устанавливалась стандартная частота шины - 66 МГц. Включение же опции допускалось при использовании высококачественных плат расширения, модулей памяти, что требовалось спецификацией "Intel" в отношении нестандартной частоты. В противном случае система могла работать нестабильно.
Дополнительная информация о функциях чипсета и CPU содержится в опциях главы "PCI - Арбитраж, Bus-Master".
4. Memory
Memory Current
- опция "Phoenix BIOS" с установкой тока нагрузки для модулей памяти. Значения параметра следующие:
"8mA" - модули памяти требуют тока нагрузки в 8 мА, "12mA" - модули памяти требуют тока нагрузки в 12 мА. Установка "12mA" становится необходимой, если используются модули памяти большой емкости (64 МБ и более), которые содержат большое число чипов памяти.
4.1. ECC, Parity
Устройствам динамической памяти присущ один серьезный недостаток - вероятность ошибки считывания информации из ячейки. Для обнаружения ошибок памяти и их корректировки используются схемы проверки целостности данных. Существует 2 способа контроля - с помощью проверки бита четности и с помощью кода коррекции ошибок (ECC - Error Correction Code или Error Checking and Correction). Второй способ надежнее, хотя сравнивать эти методы можно с большой натяжкой.
Для пpовеpки ошибок памяти по четности (во время проведения POST, обычного режима работы) каждый байт информации должен иметь дополнительный девятый pазpяд, котоpый пpи каждом обpащении к ОЗУ по записи устанавливается таким обpазом, чтобы общее число единиц было нечетным. Пpи каждом обpащении по чтению пpовеpяется признак нечетности. Естественно, что поддерживающие проверку по нечетности модули памяти должны содержать дополнительный модуль для хранения этой дополнительной информации. Пpи обнаpужении ошибки возникает немаскиpуемое пpеpывание NMI, котоpое нельзя блокиpовать. Компьютер при этом пpекpащает pаботу, и на мониторе отобpажается сообщение об ошибке памяти, обычно в виде "PARITY ERROR AT 0AB5:00BE SYSTEM HALTED".
Недостаток такой схемы очевиден. Невозможно на основе такого метода контроля целостности исправлять обнаруженные ошибки. Метод же ECC, применяемый на высокоуровневых ПК, серверах, позволяет обнаруживать и исправлять однобитовые ошибки памяти. Двухбитные ошибки определяются при этом, но не исправляются. В отличие от метода по четности при реализации коррекции ошибок каждый бит входит более чем в одну контрольную сумму, что позволяет в случае возникновения ошибки в некотором бите восстановить адрес ошибки и исправить ее. Далеко не все чипсеты поддерживали и поддерживают коррекцию ошибок. К тому же с середины 90-х годов схемы обычного контроля четности применяются все реже. Надо отметить, что ECC не является панацеей от дефектной памяти и применяется для исправления случайных ошибок.
Контроль четности (или метод по модулю 2) существует уже давно. В военной цифровой технике передачи данных существуют более сложные методы, например, по модулю 15. Методы коррекции ошибок также имеют свою предысторию. В системах передачи данных (в частности, телемеханике) также давно применяются и коды Хэмминга, и циклические коды с образующим полиномом, и т.п.
SmartCorrect - технология автоматической коррекции ошибок, разработанная корпорацией "Distributed Processing Technology" (DPT), предназначена для защиты всей подсистемы массовой памяти. Благодаря платам памяти с системой автокоррекции ошибок, высокопроизводительные адаптеры фирмы DPT могут обнаруживать и устранять любые нарушения целостности данных, возникшие на уровне кэш-памяти адаптера или на участках прохождения данных.
CPU Level 2 Cache ECC Check
- опция включения/отключения коррекции ошибок кэша второго уровня у процессоров архитектуры Pentium II и выше, которые поддерживают эту опцию. К примеру, процессоры Pentium II поддерживает коррекцию ошибок, начиная с частоты в 333 МГц. Включение ECC-коррекции несомненно повышает надежность системы, но при этом ее работа, как обычно указывается, несколько замедляется. Но сразу надо отметить, что это замедление несущественно и не должно служить причиной отказа от включения опции.
Как мы уже знаем, в некоторых процессорах допущены ошибки, и включение этого режима может привести к нестабильной работе системы. К тому же фактор надежности и стабильности играет прежде всего значительную роль в сетевых средах. Правда, не стоит забывать и о "разогнанных" системах.
Подытоживая сказанное, можно рекомендовать следующие установки. Если система поддерживает коррекцию ошибок, то она должна быть применена. Естественно, что при отсутствии кэш-памяти второго уровня или ее блокировке данная опция будет также недоступна, хотя представить себе систему без кэша второго уровня наверно сложно. Может принимать значения: "Enabled" - разрешено, "Disabled" - запрещено.
Чуть другие названия этой же опции: "CPU Level 2 ECC checking", "CPU L2 Cache ECC Checking" и "L2 Cache ECC Support".
"AMI BIOS" предлагает несколько иное наименование опции, но речь идет о том же кэше второго уровня - "Cache Bus ECC". Еще одна опция - "ECC CPU Checking".
Data Integrity (PAR/ECC)
- (целостность данных). Опция разрешения/запрещения контроля памяти на ошибки. Вид контроля устанавливается параметром "DRAM ECC/PARITY Select". Для включения данной опции требуется поддержка модулями памяти уже известных нам технологий. Может принимать значения: "Enabled" - разрешено, "Disabled" - запрещено.
DRAM Data Integrity Mode
- (режим целостности данных DRAM). Это опция включения/отключения проверки целостности памяти. Включение опции позволит системе отслеживать и корректировать однобитные ошибки. Так же будут обнаруживаться двухбитные ошибки, но без исправления. Использование режима коррекции ошибок обеспечивает увеличение стабильности и целостности данных в системе, правда, при небольшой потере производительности. Если в системе не используются ECC-модули памяти, то опция должна быть отключена. Опция может быть отключена и при наличии ECC-модулей, но если ситуация в системе благоприятствует сохранению более высокой производительности. Может принимать значения:
"ECC" (иногда - "ECC Hardware") - разрешена коррекция, "Non-ECC" - коррекция запрещена.
В некоторых случаях опция с тем же названием может иметь другой "набор" параметров: "Parity" и "ECC". При этом меняется и содержание функции. Опция может называться "DRAM Integrity Mode".
В "Phoenix BIOS" содержится аналогичная опция с названием "ECC Control". "Enabled" разрешает проведение коррекции (по умолчанию), "Disabled" запрещает. То же содержание вложено в опцию "ECC Memory Checking".
Значения "non-ECC" и "ECC" принадлежат и опциям "Memory Configuration", "ECC Configuration", хотя первая из них не совсем однозначна в наименовании.
В некоторых случаях к имеющимся параметрам может быть добавлено еще одно - "EC only" (режим проверки на четность, но только с выводом сообщений о возникновении ошибки). В зтом случае данная опция становится аналогичной одному из вариантов опции "DRAM ECC/PARITY Select", но при этом возникновение ошибки не приводит к полной остановке системы.
DRAM ECC/PARITY Select
- опция выбора режима коррекции ошибок/проверки по четности. Эта опция появляется только в BIOS тех материнских плат, в которых чипсет поддерживает ECC, и может быть использована только в том случае, если установлены модули памяти с истинной четностью. В некоторых вариантах BIOS этим параметром может устанавливаться только вид проверки, а разрешение на проверку устанавливается параметром "Data Integrity (PAR/ECC)" или аналогичным. Параметр может принимать значения:
"Parity" (по умолчанию) - в случае возникновения ошибки на монитор выдается сообщение о сбое по четности в памяти и работа компьютера останавливается,
"ECC" - в случае возникновения одиночной ошибки она исправляется (без вывода каких-либо сообщений) и работа системы продолжается. Если имеет место не одиночная ошибка, то работа компьютера также приостанавливается. Следует только учесть, что, по данным "Intel", скорость обмена с памятью при включении этого режима уменьшается приблизительно на 3%.
"Phoenix BIOS" содержит аналогичные опции под названиями "Parity Mode" (или "Memory Parity Mode") и со следующими значениями:
"Disabled" - проверка памяти запрещена, "Parity" (по умолчанию) - аналогично, как и в "Award BIOS", "ECC" - так же аналогично, как и в "Award BIOS", сообщение выводится только при двухбитной (и более) ошибке.
"AMI BIOS" "подарил" нам два варианта опции "Memory Error Detection". В одном случае значения параметра оказались уже знакомыми: "Disabled", "ECC", "Parity". Другой же вариант по сути стал аналогом функции "DRAM Data Integrity Mode" с разрешением или запрещением коррекции ошибок ("Enabled"/"Disabled").
Memory Parity/ECC Check
- опция разрешения/запрещения проверки целостности данных. Может принимать значения: разрешен контроль памяти на ошибки ("Enabled"), запрещен ("Disabled") и "Auto". Последняя установка активизирует проверку памяти автоматически с автоматическим же определением возможностей модулей памяти, как по четности, так и по коррекции ошибок. В другой версии BIOS в этой же опции может отсутствовать параметр "Auto".
Только два параметра ("Enabled"/"Disabled") предлагает и опция "Memory Parity (Error) Check". При включении опции и отсутствии необходимых модулей памяти загрузка ПК может прерваться с выводом сообщения "Parity Error".
Осталось отметить следующее! В случае приостановки загрузки системы из-за появления ошибки по четности (или при коррекции) и необходимости все таки произвести загрузку операционной системы, единственный путь обойти POST-тестирование - это запретить любые проверки памяти на четность и т.п. ("Disabled").
Single Bit Error Report
- (сообщение об однобитовой ошибке). Если включен режим коррекции ошибок, то установка опции в "Enabled" позволит системе вывести сообщение о имеющей место однобитовой ошибке и ее коррекции. Решение этой задачи берет на себя контроллер памяти, он же направляет центральному процессору сообщение об ошибке памяти. Отключение опции ведет к отказу от вывода сообщений, но коррекция никак не отменяется.
4.2. "Затенение" памяти, выделенная память
"Shadow Memory" - это так называемая "теневая" память. В адресах памяти от 640 КБ до 1 МБ (A0000h - FFFFFh) находятся "окна", через которые "видно" содержимое различных системных ПЗУ. Например, адреса F0000h - FFFFFh занимает системное ПЗУ, содержащее BIOS системы, окно C0000h - C7FFFh - ПЗУ видеоадаптера (видео-BIOS) и т.п. При включении режима "Shadow" для каких-либо адресных диапазонов, соответствующих системным ПЗУ либо картам расширения, содержимое их ПЗУ копируется в участки основной памяти, которые затем подключаются к этим же адресам вместо ПЗУ, "затеняя" их. Дает ли это какие-нибудь преимущества? Повышается ли при этом производительность системы? Включение "затенения" дает в первую очередь значительное ускорение работы с данными ПЗУ за счет более высокого быстродействия микросхем ОЗУ (в сравнении со временем доступа к ROM BIOS в 150-200 нс). Кроме того, при обращении к микросхемам BIOS непосредственно используется 8-разрядный доступ (8-битная шина "X-bus"), что включение "затенения" ПЗУ делает еще более эффективным. Это означает, что при обращении к постоянной памяти за один такт можно считать только один байт в отличие от 32-разрядного, как минимум, доступа к оперативной памяти (16-битный доступ ушел в историю с уходом 286-х систем). Кроме этого, появляется возможность модифицировать видимое содержимое ПЗУ: все современные системные BIOS используют это для самонастройки, а в область видео-BIOS обычно загружаются экранные шрифты и т.п.
Что это за теневая память физически? Этот вопрос связан с распределением памяти вообще. В первом мегабайте памяти используются по прямому назначению, т.е. как основная память, 640 КБ, а остальные 384 КБ оказываются в адресном пространстве, зарезервированном для ПЗУ и внешних устройств. В современных платах вся память представляет собой непрерывный массив, поэтому разрывать адресное пространство модулей памяти на две части нельзя и поэтому часть системной области приходится аппаратно исключать, теряя при этом 384 КБ.
Как скопировать в эту память содержимое ПЗУ? Для этого применяют несколько способов:
1) Организация "Shadow Memory". Доступ к ней регулирует чипсет. Как правило, "Shadow Memory" находится в адресном пространстве в том же месте, где и исходное ПЗУ. Поскольку две области памяти в одном месте физически находиться не могут, для управления этой памятью в чипсете есть специальная схема, которая может подключить в этот фрагмент адресного пространства либо исходное ПЗУ, либо ОЗУ.
Несколько слов о защите от записи. Обычно "Shadow Memory" в нормальном состоянии находится в режиме "Read Only" (только для чтения). Это породило проблемы, например, при написании русификаторов, так как приходится открывать "затененные" участки той же видеопамяти. Различные версии BIOS позволяют решать эту проблему, имея опции с возможностью указания, следует ли оставлять требуемый диапазон "Read Write" или "Read Only".
Но не только BIOS способен управлять Shadow-функциями чипсета. Такое управление может осуществлять программа, умеющая корректно обращаться к регистрам чипсета на низком уровне. Начиная с 386-х в защищенном режиме работы процессора имеется страничная организация памяти, обеспечивающая формирование физического (реального) адреса из виртуального адреса программы. Именно эта возможность и обеспечивает в большинстве распространенных драйверов памяти (менеджеров) не только выполнение функций затенения, но и получение памяти EMS при наличии расширенной памяти в компьютере. Программно возможности "Shadow"-функций менеджеров памяти значительно более гибкие, чем у чипсета, управляемого BIOS. В частности, управление размерами памяти, выделяемой для "Shadow Memory", может производиться достаточно малыми по размеру страницами - 4 КБ, что позволяет эффективнее использовать адресное пространство первого мегабайта. В MS-DOS возможность управления "Shadow"-памятью имеет драйвер памяти HIMEM.SYS (ключ /SHADOWRAM:ON|OFF).
Затенение полезно, главным образом, в 16-разрядных ОС. 32-разрядные системы не используют 16-разрядный код из ROM. Вместо него они загружают 32-разрядные драйверы в ОЗУ, заменяя ими 16-разрядный код BIOS, который, таким образом, используется только в процессе загрузки системы.
2) Организация блоков верхней памяти UMB (Upper memory blocks), по сути аналогия предыдущему варианту.
3) Перемещение (relocation). Это перенос неиспользуемой памяти из системной области (640 КБ - 1 МБ) в область расширенной (Extended) памяти. Чаще всего перемещаться может весь фрагмент сразу, то есть все 384 КБ. Это связано со сложностью схемы управления адресными линиями. В этом случае освободить остаток первого мегабайта можно, только выключив все без исключения установки "Shadow". В первых IBM PC устанавливалось 640 КБ основной памяти и отдельно расширенная память, поэтому со старшими 384 КБ проблем не возникало. Позднее, а это также было давно, некоторые чипсеты (Neat, OPTi495, SiS471, др.) имели возможность переносить старшие 384 КБ за пределы пеpвого мегабайта, пpисоединяя их к pасширенной памяти. Одни чипсеты могли переносить свободные от "затенения" участки, другие - только все 384 КБ целиком.
Последующая серия опций объединена одной темой ("Теневое ПЗУ адаптеpа ХХХХ,16K") и представляет собой, в основном, устаревшие аппаратные решения.
Adaptor ROM Shadow C800,16K
- опция для маскиpования ПЗУ некотоpых специальных каpт - сетевых, различных контpоллеpов и т.п. По умолчанию устанавливается "Disabled". Установка в "Enabled" допустима только тогда, когда в систему инсталлирована каpта расширения с ПЗУ, занимающим эти адpеса. В свое время большинство дисплейных видеоадаптеров, таких как MDA, Hercules, использовали ПЗУ с адpесом C800. Поскольку эти каpты были низкоскоростными, затенение этого адpеса улучшало общую пpоизводительность системы.
Дополнительная и интересная информация! Некотоpые версии BIOS допускали включение теневого ОЗУ со снятой защитой от записи. Пpи помощи дpайвеpа возможно было использование "теневой памяти" в качестве области UMB. Это давало некотоpое пpеимущество в скоpости в сpавнении с UMB-областью, обеспечиваемой пpи помощи драйвера EMM386.
Возможна вполне современная ситуация, когда затенению может быть подвергнут загрузочный BIOS сетевого адаптера. В этом нет никакой необходимости, т.к. загрузка удаленной системы вряд ли есть непрерывный процесс.
Adaptor ROM Shadow CC00,16K - эта область предназначалась для некоторых (естественно, старых) адаптеpов жестких дисков.
Adaptor ROM Shadow D000,16K - адресная область для использования сетевыми картами.
Adaptor ROM Shadow D400,16K - некоторые специальные контроллеры (это было давно) для четырех floppy-дисководов имели отображаемый BIOS ROM в диапазоне адресов D400...D7FF. Adaptor ROM Shadow D800,16K Adaptor ROM Shadow DC00,16K
Adaptor ROM Shadow E000,16K - возможная область для размещения EMS-страницы.
Adaptor ROM Shadow E400,16K Adaptor ROM Shadow E800,16K
Adaptor ROM Shadow EC00,16K - эта область могла быть использована системой после копирования SCSI-контроллерами своего BIOS. Некоторые SCSI-контроллеры не использовали адресов ввода/вывода. Их адресный BIOS-диапазон содержал перезаписываемые адреса, которые в действительности являлись I/O-портами. Это означало, что эти адреса не должны были затеняться и даже кэшироваться.
Совершенно аналогично "работали" следующие опции:
C8000-CBFFF Shadow CC000-CFFFF Shadow D0000-D3FFF Shadow D4000-D7FFF Shadow D8000-DBFFF Shadow DC000-DFFFF Shadow
Совершенно те же опции предложил "Phoenix BIOS" в меню под названием "Shadow Memory Regions". Хотя то же меню "Phoenix BIOS" в другом варианте предложило "укрупненные" области памяти "C8000-CFFFF" (и т.д.) со значениями "Disabled" и "Shadow".
И совершенно ясно, что возможны также другие вариации по "затенению". Например, опция "E8000 - EFFFF Shadow" может быть использована для поддержки интегрированного SCSI-контроллера.
И еще одно важное замечание, не утратившее актуальности и по сей день. Речь идет о специализированных ISA-адаптерах с микропроцессорами, память которых организована как двухпортовая. Если память такого микропроцессора по одному из портов со стороны компьютера адресуется как страница в области указанных адресов, то "затенение" для этой области должно быть запрещено ("Disabled").
Обобщая сказанное, необходимо отметить, что затенение разделяемой ("shared") памяти недопустимо. Разделяемая память служит также в качестве буферов сетевых контроллеров, т.п.
Еще пример затенения адресных областей:
C000,16K Shadow C400,16K Shadow C800,16K Shadow CC00,16K Shadow D000,16K Shadow D400,16K Shadow D800,16K Shadow DC00,16K Shadow
Ничего нового, разве что первые две опции меню неявно предназначены для затенения видео-BIOS (см. подробно ниже). На этом остановимся, ибо есть еще вариации по затенению областей памяти в виде отдельных меню, но пользователю уже несложно будет с ними разобраться.
4.2. "Затенение" памяти, выделенная память (продолжение)
Base Memory Address
- данной опцией устанавливается начальный адрес адресного диапазона, выделяемого под потребности некоторой PCI-карты. Понятно, что возможности адресации обеспечиваются 32-разрядной шиной.
Опция может называться "Memory Start Address".
BIOS Devnode for Shadow RAM
- эта опция используется (включается при "Enabled") для некоторых карт расширения, чья ROM-память не требует коррекции того региона основной памяти, который эта карта занимает. "Disabled" позволяет разблокировать фиксированный начальный адрес области памяти для устройства и изменять его динамически.
CD Hole
- столь необычная опция "AMI BIOS" предназначена для управления адресной областью в диапазоне DC000h - DFFFFh. Если установлено значение "Disabled", то любое обращение, запрос к данному пространству направляется основному SCSI-контроллеру (хотя это может быть и сетевое устройство). Если же выбрано "Enabled", доступ к этому региону памяти контролируется одним из PAM (Programmable Attribute Map) регистров, т.е. стандартным способом.
Стоит остановиться на этой теме подробнее.
В состав "северного" (Host-to-PCI Bridge) моста чипсета, среди множества других, входят и семь программируемых PAM-регистров. Через установку различных аттрибутов они позволяют управлять тринадцатью адресными сегментами различного размера в диапазоне от 640 КБ до 1 МБ адресного пространства. С другой стороны, кэширование этими областями осуществляется через MTRR-регистры центрального процессора (о них будет сказано ниже). Каждый PAM-регистр (см. таблицу) контролирует два региона, обычно по 16 КБ каждый. Каждый из регионов "обслуживается" четырьмя битами, два из которых зарезервированы, а два остальных - это "Read Enable" и "Write Enable". В зависимости от состояния этих бит ("0" или "1") осуществляется либо доступ к основной памяти, либо запросы перенаправляются на PCI-шину. Поэтому, если установлены два "0", доступ к выбранному диапазону памяти невозможен.
В процессе начальной загрузки и выполнения инструкций BIOS при копировании некоторого BIOS в выбранную "затеняемую" область в соответствующем регистре по соответствующему аттрибуту "Write Enable" устанавливается "1". После окончания всех процедур, связанных с затенением, для данного диапазона (регистра) устанавливается режим "только для чтения" (read only), что соответствует аттрибутам "Read Enable", равным "1", и "Write Enable", равным "0". При этом все циклы записи в данную область перенаправляются непосредственно шине расширения. Понятно, что если речь идет о выделенной RAM-памяти, то оба аттрибута будут равными "1".
Таблица 1. Примечание. * - Сегмент C0000h - CFFFFh может быть использован SMM-пространством, если используется SMRAM-регистр (об SMM см. ниже).
E0000 ROM belongs to ATBUS
- один из примеров "стареньких" опций по выделению фрагмента из "верхней" памяти для использования системными устройствами. В данном случае "Yes" позволяло зарезервировать такой фрагмент за AT-шиной. Обычно, E000-область зарезервирована за кодом системного BIOS, но некоторые системы не использовали его стандартным образом. Например, "OS/2" использовала этот диапазон для работы в защищенном режиме и "грузила" код Advanced BIOS в область E000h-EFFFh.
E8000 32K Accessible
- аналогичная опция, хотя и не такая "древняя", поскольку предназначалась для использования (и опция, и адресная область) PS/2-системами, 32-разрядными ОС, под "PnP"-область.
Extended ROM RAM Area
- наличие этой опции характерно для старых версий "AMI BIOS". Пользователю предоставлялся выбор, где хранить данные о жестком диске: в верхнем килобайте базовой системной памяти, начиная с 639-го килобайта, или в адресах нижней памяти в области DOS-памяти или системного BIOS (0:300). Необходимо было помнить, что вторая адресная область могла также использоваться некоторой периферией (звуковыми, сетевыми и т.п. картами расширения). В этом случае конфликтов можно было избежать, если система через BIOS могла использовать полноценные механизмы "затенения", которые впрочем могли и отсутствовать в очень старых системах. Вполне возможна была ситуация с изменением параметров жесткого диска в этой области памяти перед ее полным отображением, так как в ней содержался блок параметров фиксированного диска. В некоторых случаях могло потребоваться изучение документации на соответствующие платы расширения или контроллеры по использованию ими данной области памяти.
Опция могла (или может) называться "RAM Area" или "Hard Disk Type 47 - RAM Area". Последняя опция напоминает нам о процедуре пользовательской установки параметров жесткого диска.
ISA LFB Size
- опция "AMI-BIOS" для установки размера линейного буфера кадра (LFB - Linear Frame Buffer), во многом аналогичная или близкая по смыслу нижерасположенной "Memory Hole At 15M-16M". Кроме размещения ROM-адреса в пределах 15-16 МБ, опция позволяла (в таком виде она уже не встречается) установить размер линейного видеобуфера графических адаптеров в области основной памяти, доступной для ISA-шины (1, 2, 4 МБ). Это суть диапазоны 15-16, 14-16 и 12-16 МБ соответственно. Еще одним значением являлось "Disabled" с отказом от выделения под ISA-адаптер линейного буфера кадра. "Disabled" могло потребоваться при объеме памяти не более 8 МБ (в 96-м г. это было почти пределом) и при работе с MS-DOS. Такое же значение необходимо было установить при использовании ISA-карт с отсутствующим кадровым буфером. Запрещение опции не позволяло использовать "Plug and Play's Configuration Manager" или "ISA Configuration Utility". Если же какое-то из значений ("1 MB", "2MB" или "4MB") было выбрано, то следующая опция "ISA LFB Base Address" становилась доступной.
DOS-приложение могло использовать стандартно под видеопамять только 64 КБ основной памяти. В этом объеме не "поместится" и "хороший" графический файл. Совместно развивающиеся технологии памяти и работы с ней позволили создать механизм пейджинга, суть которого заключается в том, что можно отображать разные части видеопамяти на один и тот же видеосегм
2.2. Специальные функции чипсета
Drive NA before BRDY
- когда выбрано "Enabled", сигнал NA (Next Address, подробнее читай ниже) устанавливается в каждом цикле чтения/записи на один такт раньше последнего сигнала BRDY#, таким образом вызывая генерацию процессором сигнала ADS# после сигнала BRDY# в следующем цикле, тем самым устраняя один потерянный такт и фактически увеличивая пропускную способность системной шины. С помощью сигнала BRDY# (Bus Ready) чипсет (точнее, т.н. "северный мост") сообщает процессору о том, что имеются данные и они доступны для чтения или есть готовность для приема данных для их дальнейшей записи.
В данной опции речь фактически идет о механизме конвейеризации, об "ускоряющих" возможностях сигнала "Next Address".
Extended CPU-PIIX4 PHLDA#
- при установке значения "Enabled" системный контроллер, входящий в состав "северного" моста, увеличивает на один такт (в тактах шины PCI) длительность сигнала PHLDA# и оставляет его активным в двух случаях:
в течение адресной фазы в начале PCI-цикла чтения/записи,
сопровождая адресную фазу "LOCK"-цикла центрального процессора.
При включенном значении опции функции "Passive Release" и "Delayed Transaction" должны быть также включены.
Сигнал PHLDA# (PCI Hold Acknowledge) применяется, в частности, для управления работой "арбитра" PCI-шины. Тема арбитража будет рассмотрена отдельно.
Gate A20 Option
- (выбор способа включения вентиля линии A20). Параметр позволяет управлять способом включения адресной линии A20, которая отвечает за доступ к памяти, физические адреса которой превышают 1 Мбайт. Стоит напомнить, что 20-разрядная адресная шина (A0 - A19) позволяла адресоваться в пределах первого мегабайта памяти. Если быть более точным, то эта линия отвечает за доступ к первым 64 килобайтам верхней памяти, известным как область HMA (High Memory Area). Доступ к HMA требует управления специальным аппаратным узлом, работа которого может быть блокирована или активизирована. При установке опции "Gate A20 Option" в состояние "Fast" работа линии будет контролироваться специальным набором микросхем на системной плате. Если линия А20 деблокирована, то HMA-область доступна для любой программы, функционирующей в реальном режиме работы процессора. Обычно эта область памяти отдается под MS-DOS, а для деблокирования линии используется драйвер HIMEM.SYS. Может принимать значения:
"Fast" - управление осуществляется чипсетом, что повышает скорость работы, "Normal" - управление осуществляется через контроллер клавиатуры.
В некоторых версиях BIOS опция может называться "Fast Gate A20 Option", а параметрами будут стандартные "Enabled"/"Disabled". Иногда в старых версиях BIOS можно встретить опцию с почти романтическим названием "LOWA20# Select". А речь идет о том, какое устройство управляет низким уровнем сигнала на линии A20: чипсет или контроллер клавиатуры. Достаточно редко, но все же можно встретить в литературе в отношении управления линии A20 такой термин, как "эмуляция". В данном случае имеется ввиду, что стандартный способ управления "вентилем" осуществляется через контроллер клавиатуры. А чипсет заменяет, подменяет это управление, "эмулирует" его (дополнительно см. ниже). И следующая опция очень хорошо показывает это. "Keyboard Emulation" имеет два значения. "Enabled" соответствует "Fast", а "Disabled" - "Normal". Следующая опция "Gate A20 Emulation" (или "Fast Gate A20 Emulation") уже не должна вызывать вопросов. Правда, опций с такими названиями, пожалуй, уже не встретишь. Иногда в литературе можно найти трактовку опции "Turbo Switch Function" как аналога "Fast Gate A20 Option", подразумевая функцию переключения, но это не совсем корректно.
Пользователям, умеющим работать с командной строкой, можно порекомендовать внешнюю команду DOS MEM /A, показывающую стандартную информацию о памяти и дополнительную информацию о сегменте HMA. Команда работает и в среде "Windows 9x".
Ну и наконец, опция "Cyrix A20M Pin", применявшаяся во времена 386-х процессоров. Процессоры Cyrix уже тогда были "особенными". Речь идет о дополнительной поддержке со стороны BIOS. Ведь в отличие от процессоров Intel, 386-е процессоры Cyrix имели собственный кэш. Такие процессоры могли иметь проблемы с обновленными комплектующими, поддерживающими кэш-память. Вполне вероятными были и другие системные конфликты. Чтобы обеспечить управление линии A20 контроллером клавиатуры, BIOS через включение опции ("Enabled") сообщал центральному процессору о состоянии вентиля. И еще о кэше. Установка "BIOS Setup" позволяла процессору через внутренний кэш кэшировать первые 64 КБ каждого (!) мегабайта памяти в реальном режиме (вентиль всегда был открыт в защищенном режиме работы процессора), и это было достаточно эффективным.
Логически память разбивается на сегменты размером по 64 КБ, что соответствует 2^16. В совсем "стареньких" машинах с 16-разрядными процессорами физически адрес не мог перейти ограничение в 64 КБ. 20-разрядная адресация, т.е. использование 20-разрядной адресной шины, достигалась благодаря тому, что при формировании 20-разрядного физического адреса использовалось суммирование со смещением в 4 разряда двух адресов: адреса сегмента и исполнительного адреса. При вычислении физических адресов в системах с 8086/88-ми процессорами могла иметь место вполне стандартная ситуация, а именно адресное переполнение, которое при наличии 20-разрядной шины адреса приводило к сворачиванию адресного пространства в т.н. кольцо. А это и происходило как раз в процессе упомянутого суммирования.
В процессорах следующего поколения (в 286-х был преодолен предел в 1 МБ адресного пространства) на его выходе A20 устанавливалось значение "1", что соответствовало адресу из второго мегабайта памяти. При разработке процессоров и чипсетов машин класса IBM PC/AT) в схему чипсета был введен специальный вентиль Gate A20. В то время его появление в наборе логики было прежде всего связано с обеспечением полной программной совместимости с предыдущим классом машин. Вентиль принудительно устанавливал нулевое значение на линии A20 адресной шины.
На первых машинах, где был реализован контроль и управление линией A20, управление последней осуществлялось через программно управляемый бит чипа контроллера клавиатуры 8042 (или 8742) (см. дополнительно раздел "Keyboard"). Позднее эта функция была возложена и на чипсет, что значительно ускорило скоростные характеристики ("Gate A20 Fast Control") системы. В итоге это означало, что появление 32-разрядных процессоров не вызвало заметных изменений по данной теме, поскольку специальный вход процессоров (A20M - A20 Mask) остался. Упомянутый вход современного процессора есть не что иное, как маскирование бита A20 физического адреса для эмуляции адресного пространства 8086 в реальном режиме работы процессора. А это связано и с тем, адресная линия A20 используется также для переключения из реального режима в защищенный, что сразу нашло применение в многозадачных и сетевых средах. Иногда можно встретить в описаниях и такие пояснения. Что существует категория пользователей, использующих старое программное обеспечение. Для таких и предназначена эта опция. Это означает, что наличие такой опции связано с совместимостью со старым ПО. Правда, фразы о категориях пользователей встречаются все реже и реже, но опция по прежнему входит в "стандартный" набор "BIOS Setup". Необходимо также отметить, что некоторые старые драйверы MS-DOS, например VDISK.SYS, могут блокировать линию А20, входя в конфликт с драйвером HIMEM.SYS (это опять таки из далекого прошлого).
Уточним вопрос об "эмуляции" и переключении процессора. Обычным образом программы для A20-операций используют обращения через BIOS или порты 60/64h, предназначенные для контроллера клавиатуры. Чипсет перехватывает эти обращения, тем самым эмулируя контроллер клавиатуры и разрешая дальнейшую генерацию соответствующих сигналов. Последовательность при этом следующая. В порт 64h записывается значение D1h, а затем в порт 60h - 02h. Если же в порт 64h затем записать значение FEh, то можно произвести "теплый" рестарт процессора. В обычном режиме работы процессора контроль линии A20, как "Fast", осуществляется через порт 92h, который программы используют для BIOS-вызовов. Возможна ситуация, когда контроль одновременно осуществляется и контроллером клавиатуры, и чипсетом. В этом случае линия A20 контроллируется через порты 60/64h.
Graphic Posted Write Buff
- чипсет может поддерживать собственный внутренний буфер для циклов записи графической памяти. Когда этот буфер включен, т.е. опция установлена в "Enabled", циклы записи процессора в графическую память попадают в буфер отложенной записи. При этом центральный процессор может начать новый цикл передачи данных еще до того, как графическая память закончит предыдущий цикл. При установке параметра в "Disabled" буфер не будет использоваться, и процессор будет находиться в ожидании в течение каждого цикла записи.
IBC DEVSEL# Decoding
- (декодирование адреса устройства). Сигнал DEVSEL (Device Select) означает "выбор устройства". Эта опция позволяет установить тип декодирования, используемый IBC (ISA Bridge Controller) для определения выбранного устройства. Чем дольше длится цикл декодирования, тем выше шанс корректного декодирования адреса, но снижаются скоростные показатели. Для отбора представлены следующие значения: "Fast", "Medium" и "Slow" (по умолчанию).
LOCK Function
- поскольку в данной опции идет речь об использовании сигнала LOCK#, то отключение опции ("Disabled") приведет к отказу от применения режима "bus-master" в системе.
NA Delay
- данная опция позволяет регулировать задержку (в системных тактах) перед выдачей сигнала NA# (Next Address). Меньшее значение повышает скоростные характеристики системы, но... Возможные значения опции: "0T", "1T", "2T".
NA# Enable
- если дословно, опция включения/отключения сигнала NA#. Установив "Enabled", мы включаем механизм конвейеризации, при котором чипсет сигнализирует центральному процессору о выдаче нового адреса памяти еще до того, как все данные, переданные в текущем цикле, будут обработаны. Следующий адрес (вместе со стробом EADS#) появится через два такта после NA#. Естественно, что включение такого режима повышает производительность системы. Запрещение опции ("Disabled") вовсе не означает отказ от использования сигнала "NA#", но его функционирование в значительной степени будет уже зависеть от качественных характеристик используемой в системе кэш-памяти и ее размера. То же содержание заключено в опциях "NA# Pin Assertion" и "Chipset NA# Asserted".
NA# On Single Write Cycle
- возвращаясь к предыдущей опции, необходимо отметить, что центральный процессор может держать на внешней шине до нескольких незавершенных циклов. Данная опция позволяет "избавиться" от незавершенных циклов, вызванных неоптимальной частотой выдачи адресной информации, сбоями в конвейере, функционированием прикладного программного обеспечения в многозадачной среде, т.п. Включение данной опции фактически ведет к отказу от конвейеризации, выделению одиночных циклов записи, что действительно может потребоваться при сбоях в системе.
Negate LOCK#
- (отрицание сигнала LOCK#). Напомним, что сигнал LOCK# (Bus Lock) - это сигнал монополизации управления шиной, сигнал блокировки доступа к шине других абонентов. При установке опции в "Enabled" ранее некэшируемые "locked" циклы будут исполняться как "незакрытые" циклы, и поэтому они могут быть кэшированы. Повышение производительности очевидно.
Single ALE Enable
- (pазpешение одиночного сигнала ALE). Немножко информации. Пин B28 на шине ISA - это сигнал BALE (Bus Adress Latch Enable - разрешение защелкивания адреса). Это сигнал стробирования адресных разрядов. Может использоваться устройствами ввода/вывода для заблаговременной подготовки к предстоящему обмену информацией. Эта линия становится активной всякий pаз пpи появлении на адресной шине информации. Можно было встретить даже такую информацию об этом сигнале: "...показывает, что действительный адрес отложен (posted) на шине". Стоит добавить, что этот сигнал использовался еще во времена 808x-х процессоров. По некоторой информации сигнал этот мог использоваться DMA-контроллерами для сообщений центральному процессору о передаче данных. Его применение было связано с программированием устройств, поэтому использование сигнала было крайне редким.
Устанавливая "Enabled", активизируем одиночный сигнал ALE вместо множественных сигналов-стробов во время ISA-циклов. В какой-то степени выбор параметра был привязан и к скорости системной шины, т.е. пропускной способности системы. Поэтому установка в "Enabled" могла привести к замедлению быстpодействия видеоканала. Эта функция всегда оставалась достаточно "темной" функцией "BIOS Setup". "Disabled" рекомендовано.
Опция может называться также "ALE During Bus Conversion" с возможными вариантами выбора: "Single" (одиночный) или "Multiple" (множественный). Естественно, что при потоковой работе ISA-шины (т.е. множественных циклов чтения/записи) предпочтительнее была бы установка опции в "Multiple". Но какой правильный выбор должен был сделать пользователь, всегда оставалось загадкой.
Некоторые чипсеты имели поддержку усовершенствованного режима, при котором выдача множественных сигналов ALE производилась во время одиночных циклов шины. Функция BIOS при этом называлась "Extended ALE", а параметрами служили "Disabled" и "Enabled". Встречая данную опцию в более современных системах, естественно при наличии ISA-шины, необходимо понимать, что присутствие оной связано только с совместимостью со спецификациями AT-шины.
В наиболее "древних" версиях BIOS весь смысл сказанного выше был заключен в опции под названием "Quick Mode".
Stop CPU when PCI Flush
- при установке опции в "Enabled" центральный процессор, получив по своей входной линии (FLUSH) активный сигнал низкого уровня FLUSH#, вынужден будет приостановиться до тех пор, пока PCI-шина не закончит передачу данных. Запрещение опции не позволит процессору входить в режим ожидания, что естественно более приемлемо для системы. "Disabled" устанавливается и по умолчанию.
Опция может называться "Stop CPU When Flush Assert".
3. CPU
Backoff Processor
- очень редкая опция и не совсем однозначно трактуемая. BOFF# (Back Off) - сигнал безусловного отключения процессора от шины. По этому сигналу процессор отдает управление шиной в следующем же такте с прерыванием текущего цикла. По окончании действия сигнала "BOFF#" процессор рестартует прерванный шинный цикл. Возможные значения опции: "Disabled" (или "No"), "Enabled" (или "Yes").
Исходя из всего изложенного, можно предположить, что в опции речь идет о безусловной передаче управления шиной другому устройству, т.е. без установок различных интервалов ожидания, определенных условий передачи управления и т.п. Об этом будет подробно изложено далее (тема "арбитража"). Понятно, что для использования указанного сигнала опцию необходимо включить.
Опция может называться "Backoff CPU".
Base I/O Address
- опция установки базового адреса устройства. I/O-адреса - это адреса ввода/вывода, называемые также портами системных и периферийных устройств. По сути, это "почтовые ящики", через которые программы и устройства обмениваются сообщениями, данными. Каждому адресу отведен один байт системной памяти. Начиная с 386-х систем таких адресов имеется в наличии 65536, хотя большинство из них никогда не используется.
Базовый I/O-адрес - это первый адрес из того адресного пространства, что предоставлен данному устройству. Например, большинство сетевых адаптеров использует адресный диапазон в 20h, а для COM 1 резервируется диапазон с адресами от 3F8h по 3FFh, которые используются для различных задач, например, установки скорости, четности, т.п. Весь адресный диапазон ввода/вывода - 0000-FFFFh.
Для данной опции не приводятся конкретные значения. Да и по содержанию опция в большей степени "подходит" материалам, посвященным распределению ресурсов различных устройств. Но опция помещена в данном месте умышленно, чтобы подчеркнуть принадлежность адресов ввода/вывода не только памяти, а и центральному процессору. Ведь от него то и начинаются управляющие процедуры, и производятся они через порты ввода/вывода.
Если просмотреть главу "Порты", то можно обратить внимание на то, что имеющиеся адреса уже "закреплены" за системными или периферийными устройствами. Но при программировании устройства ввода/вывода, а это может быть карта расширения, вполне допустимо задействование "традиционных" адресов либо неиспользуемых. В некоторых случаях использование незадействованных адресов, что связано, например, с отсутствием устройства, не обязательно ведет к конфликтам.
Рассмотренная выше опция "Extended I/O Decode" показала нам некоторые нюансы и даже сложности декодирования адресов ввода/вывода. Опция "PCI I/O Start Address", предназначенная в общем-то для PCI-устройств, тем не менее позволяет для ISA-устройств создать дополнительную область адресов и тем самым избежать "неприятных накладок".
Branch Target Buffer
- просто редчайшая функция, скорее в смысле уникальности, а не частоты появления в различных версиях BIOS. О чем идет речь? BTB (Branch Target Buffer - буфер адресов перехода) - блок центрального процессора, отвечающий за динамическое предсказание переходов. При этом принимается во внимание, какие адреса переходов были выбраны ранее. Это важнейший узел современного процессора (см. специальную литературу). Получается, что с помощью данной опции можно отказаться ("Disabled") от использования механизма предсказания переходов, ветвлений команд процессора или включить его ("Enabled"). Остается добавить, что включение опции повышает производительность системы.
CPU ADS# Delay 1T or Not
- опция установки задержки для сигнала ADS#. Несколько предваряющих слов. ADS# (Address Status) - строб адреса, вводимый инициатором обмена как индикатор действительности адреса. Сигнал действует на системной шине и может быть выходным как стороны процессора, так и со стороны чипсета. Передача адреса и адресного строба происходит одновременно, поскольку для адресного строба системная шина имеет свою выделенную линию. Понятно, что ADS# - это стандартный сигнал процессоров.
Представленная опция указывает и на возможность отсутствия задержки, что повышает скоростные характеристики обмена данными в системе. Фактически данная опция позволяет устанавливать время, в течение которого процессор (или чипсет, контроллер памяти) будет ждать от чипсета (процессора) сигнал статуса адреса данных, который определяет скорость отложенной записи на системной шине. Понятно, что речь также идет о передаче данных в PCI-интерфейс. Значение, устанавливаемое по умолчанию, менять нет необходимости. Однако при установке более скоростного процессора скорость можно и увеличить, т.е. снять задержку. Вынесенная в заголовок опция имеет два значения: "1T", "No Delay".
А вот опция "Cyrix M2 ADS# delay" предложила стандартные "Enabled" и "Disabled". Опция "Latency from ADS# status" предложила числовые значения в тактах системной шины: "2T" (по умолчанию), "3T".
Необходимо понимать, что устанавливая "время задержки", мы тем самым определяем временные характеристики циклов записи. И с учетом того, что использование буфера отложенной записи ведет, как правило, к формированию небольших пакетов (двойными словами или в два DW). Поэтому установив значение "3T", мы получаем 5 системных тактов для каждого двойного слова. Арифметика тут простая. 3 такта задержки, один адресный такт и один такт на считывание данных.
CPU BIST Enable
- в некоторых чипсетах, начиная с 430-й серии, нашли применение специализированные BIST-регистры. Большой нагрузки они не несли. Если система (чипсет + процессор) поддерживает функцию встроенного самотестирования (Built-In Self Test), то BIST-регистр хранит в своих разрядах команды "Start BIST" или "Completion Code". Если "система" не поддерживает BIST-функции, то установка опции в "Enabled" не даст эффекта, а в соответствующих разрядах регистра будут установлены "0".
Встроенный и, что немаловажно, полноценный механизм самотестирования BIST был реализован в процессорах Pentium III. Он обеспечивал постоянный контроль над зависаниями и сбоями в микрокоде, больших программируемых логических матрицах, а также обеспечивал тестирование кэша команд (инструкций) и кэша данных, буферов TLB (Translation Lookaside Buffer - буфера страничной переадресации) и сегментов памяти ROM. В течение 10-30 мсек (время связано с внутренней частотой ядра процессора) внутренним тестированием охватывается около двух третей всех внутренних блоков процессора. Лишь только после завершения теста процессор переходит в рабочий режим, результаты же теста фиксируются в регистре EAX.
CPU Drive Strength
- данная и не совсем ясная опция определяет интенсивность (strength), а точнее длительность действия сигналов при передаче данных от чипсета к процессору. Параметр измеряется в системных тактах. Чем выше значение параметра, тем выше длительность сигналов, а применение этой опции "BIOS Setup" может оказаться полезным для процедур "разгона" процессоров. Но не для всякой системы увеличение значений опции может привести к сохранению стабильности "разогнанного" процессора. Значения опции следующие: 0, 1, 2, 3. Осталось добавить, что данная опция требует дополнительного уточнения.
CPU Fast String
- (быстрые операции со строками). Разрешение этого параметра ("Enabled") позволяет использовать некоторые специфические особенности архитектуры семейства процессоров Pentium Pro (Pentium II, Deschutes и т.п.), в частности, возможность кэширования операций со строками. Надо только понимать, что и в самой пользовательской программе должны быть выполнены условия для включения этого механизма. Эти условия указаны в документации на любой процессор данного семейства. Параметр рекомендуется оставлять в состоянии "Разрешено".
CPU Line Read Multiple
- в данной опции речь идет о чтении процессором т.н. "full cache"-линии. Когда "cache"-линия заполнена данными, то их объем составляет 32 байта (восемь двойных слов). Поскольку линия "полная", система точно знает, как долго данные на линии будут считываться. На это системе потребуется 4 такта, после чего будет выставлен новый адрес. Поэтому системе не требуется сигнал об окончании передачи данных, и система не будет находиться в ожидании такого сигнала, будучи свободной для решения других задач. Когда опция включена ("Enabled"), процессор сможет считывать данные одновременно с нескольких "full cache"-линий. По умолчанию - "Disabled".
Опция может называться "CPU Multiple Reads".
Перечисленные ниже функции не содержат свойств множественности, но их размещение в данном месте более чем оправдано. Вот их наименования: "Allow Full Line Reads", "Full Cache Line Reads", "CPU Line Read". Каждая из них через "Disabled" или "Enabled" запрещает или разрешает использование "полных" линий чтения.
Опция "CPU-to-PCI Read-Line" имеет значения "On" и "Off", но различия на этом не заканчиваются. Опция под таким наименованием была введена и оптимизирована для работы с процессорами Intel OverDrive. Поэтому повышение эффективности использования CPU может быть достигнуто только с указанными процессорами. В противном случае опция должна быть отключена.
CPU Read Multiple Prefetch
- опция включения/отключения режима множественной предвыборки. Смысл процесса предвыборки (prefetch) заключается в том, что процессор, выбирая нужную инструкцию (например, из PCI-шины или памяти), одновременно начинает читать следующую, тем самым инициируя следующий процесс. Этому "способствует" то, что чипсет может иметь четыре линии чтения. Например, первые наборы логики с поддержкой процессоров Pentium Pro (Intel 450KX/GX, оба с кодовым названием Orion) как раз имели 4 такие линии чтения. Множественная же предвыборка позволяет выполнять одновременно несколько операций выборки инструкций, что существенно повышает быстродействие системы. По умолчанию устанавливается "Disabled".
Опция может называться и "CPU Multiple Read Prefetch".
Если же речь не идет о "множественных" операциях, то опция может называться "CPU Line Read Prefetch", "CPU Read Prefetch".
I/O Space Access
- данная опция через "Enabled" разрешает доступ ко всему пространству адресов ввода/вывода. Редкий BIOS обходится без странных опций.
Linear Burst
- на материнских платах, предназначенных также для для использования семейства процессоров Cyrix 6x86/L/MX, обычно используется джампер для переключения между процессорами семейств "Pentium" и "AMD", с одной стороны, и "Cyrix", с другой. Этот джампер, как правило, носит название "CPU Burst Mode", что говорит об особенностях архитектуры данных процессоров. Естественно, что при установке "Cyrix"-процессоров в слот Socket 7 опция должна быть включена ("Enabled"), так как она и была введена в BIOS для поддержки, например, процессоров Cyrix M1/M2.
Опция может называться "Linear Burst (LINBRST)", "M1 Linear Burst Mode" или "M1/M2 Linear Burst".
M1/M2 Burst & K6 Write Alloc.
- данная опция предназначена для поддержки не только процессоров семейства "Cyrix", но и процессоров "AMD K6". О функции "K5/K6 Write Allocation" детально рассказано в разделе "Кэширование памяти". Поэтому необходимо упомянуть только значения опции: "Disabled", "Enabled".
Processor Number Feature
- опция для установки автоматического считывания и вывода информации о встроенном серийном номере процессора Pentium III в BIOS материнских плат, поддерживающих его установку. Для реализации такой возможности, естественно, требуется значение параметра как "Enabled". Во всех остальных случаях устанавливается значение "Disabled". Оно же устанавливается по умолчанию.
Опция может носить название "Processor S/N". В "Phoenix BIOS" встречена аналогичная опция с названием "CPU Serial Number", а в "AMI BIOS" - "Processor Serial Number".
Зачем нужна информация о серийном номере? Скажем, для внешних программ. Один из примеров - считывание информации о процессоре при работе в Интернет. Естественно, что при этом нарушаются конфиденциальность и права пользователя. В свое время эта проблема достаточно бурно обсуждалась.
3.1. CPU Speed
Материал данного подраздела построен в соответствии со стандартными действиями пользователя: установка тактовой частоты системной шины + установка множителя (коэффициента перемножения) = установка внутренней частоты (частоты ядра) процессора. В большинстве современных версий BIOS опции установки частот системной шины, процессора вынесены, как правило, в отдельное меню, которое может называться, например, "CPU Frequency Control". Но вполне реальна и ситуация, когда для возможных пользовательских действий через BIOS предварительно необходимо переставить соответствующую перемычку на системной плате в положение типа "Configure".
CPU Host Clock Select
- опция установки тактовой частоты системной шины. Еще не так давно BIOS достаточно новой материнской платы мог предложить такой замечательный ряд значений (в МГц): 66, 75, 83, 100, 103, 112, 124, 133. Затем появились наборы из 16-18 фиксированных значений, но они начинали отсчет уже со значения 100 МГц. В общем случае вариаций установки частоты может быть достаточно много. Особенно в этом плане выделяются материнские платы, буквально созданные для разгона (например, компаний "Soltek", "Abit", "ASUS"). И тогда без проблем можно "добраться" и до 166 МГц, и даже выше.
Опция может называться "CPU Bus Frequency" и предлагать такую подборку: "Auto", "66.8MHz", "68.5MHz", "75MHz", "83.3MHz", "100MHz", "103MHz", "112MHz". Значение "Auto" устанавливается по умолчанию и оно является рекомендованным.
Может быть предложен более "изощренный" вариант опции, связанный с тем, что модули памяти работают на частоте системной шины. Тогда опция может называться "Host/DRAM Frequency", а значения будут следующими: "66 MHz", "100 MHz". Понятно, что в данном варианте речь идет о SDRAM-памяти и интеловском чипсете с двумя фиксированными значениями тактовой частоты, например, 440BX.
Опция может называться "CPU Host Clock" или "External Bus Speed".
Несколько нестандартной оказалась опция "CPU Clock/Spread Spectrum" (смотри раздел "Special"). Согласно опции устанавливается не только частота системной шины, но и разрешается/запрещается ("On"/"Off") включение механизмов понижения электромагнитной интерференции в системе. На выбор параметров влияет также и установка базовой перемычки тактовой частоты шины процессора: 66 или 100 МГц. В итоге для предустановленных 66 МГц имеем следующий набор значений: "Default", "66MHz/Off", "66MHz/On", "75MHz/Off", "83MHz/Off", "95MHz/Off". Если же предварительно установлено 100 МГц, то имеем такой внушительный ряд: "100MHz/Off", "100MHz/On", "112MHz/On", "117MHz/On", "124MHz/Off", "133MHz/Off", "133MHz/On", "138MHz/Off", "140MHz/On", "150MHz/Off".
Опция "CPU Operating Speed" через значение "User Define" дает возможность устанавливать частоту FSB (Front Side Bus) от 66 до 153 МГц. В противном случае можно однозначно выбрать одно из фиксированных соотношений частоты ядра CPU и частоты шины от "300/66" до "1G/133".
Непосредственно к рассматриваемой теме примыкают вопросы т.н. "разгона" (overclocking) процессоров. Эта проблема уже достаточна освещена в литературе, нет смысла на ней останавливаться подробно. Со стороны же установок BIOS очень удобно, когда пользовательские действия адекватно воспринимаются и оцениваются. В этом плане меню "CPU Bus/PCI Freq" наиболее оптимально. Ведь превышение частоты PCI-шины свыше 37 МГц может повлечь за собой неисправность не только карт расширения, но и сбои жестких дисков.
В последние годы вариаций опций для установки системной частоты стало очень много. Простое их перечисление заняло бы немало места. Перечислим лишь некоторые. "CPU Host Clock Frequency". "CPU Host/PCI Clock" предлагает значение "Default", что равнозначно автоматической установке "стандартных" значений, а также возможность комбинирования двух системных частот. Опция может называться "CPU Host/3V66/PCI Clock".
CPU Ratio
- может принимать значения: 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5. Приведен практически весь возможный ряд коэффициентов умножения, который, как и сама опция, впрочем может отсутствовать вовсе, если коэффициент является фиксированным. Это довольно обычная ситуация, если речь идет об "интеловских" комплектующих. "Благоприятная" ситуация позволяет настраивать параметры работы CPU через BIOS, включая естественно нашумевший разгон процессоров.
Опция может называться "CPU Freq Ratio", а ряд значений может иметь несколько непривычный вид: "1:2", "1:3", "1:4", "1:5", "1:6", "1:7", "1:8", "2:5", "2:7", "2:9", "2:11", "2:13", "2:15".
В некоторых случаях для коэффициента умножения "не жалко" и двух опций: "CPU Multiplier Shown" и "CPU Multiplier (Real)". Одна из этих опций позволяет установить значение вручную, а другая выводит на экран реально полученное значение, которое может и отличаться от желаемого.
Должно быть также понятно, что любая указанная цифра может оказаться недостаточно высокой для какой-нибудь последней реализации процессора и чипсета.
CPU Speed
- поскольку внутренняя частота процессора является результатом перемножения двух других параметров, то данная опция носит информационный характер. Результирующая частота процессора может быть представлена, например, в таком виде: 133 MHz (66 x 2).
Опция может называться "CPU Frequency (MHz)".
Во многих случаях данная опция выносится наверх окна соответствующего меню (подменю) "BIOS Setup", хотя ее значение является результатом вычисления. Но в некоторых случаях пользователь может иметь доступ к параметрам данной опции. Опция "CPU Speed" может предложить значение "Manual", тогда активируются поля "CPU Ratio" и "CPU Host Clock" для индивидуальных установок. Но это конкретная реализация не только версии BIOS, но и системной платы, наверняка содержащей специальную перемычку для возможности ручных настроек. В подтверждение сказанному можно привести параметры опции "CPU Speed" для материнской платы AbitSM2: "User Define" и "Automatic".
В продолжение и дополнение вышесказанного необходимо выделить опцию "CPU Freq Select" со значениями "Hardware" и "Software", определяющими метод установки внутренней частоты процессора. Первое значение определяет использование соответствующих перемычек на системной плате, второе же предполагает применение настроек через "BIOS Setup". Но также реальна ситуация с непосредственным выбором частоты процессора без каких-либо предварительных установок. Так опция "Processor Speed" предложила ряд значений ("233", "266", "300" и т.д.), а пользователь должен понимать, что имея фиксированные 66 МГц, он косвенно устанавливает множитель: 3.5, 4, 4.5 и т.д.
CPU Vcore
- (установка напряжения ядра процессора). Не так уж много времени прошло с тех пор, как в современных системах был реализован мониторинг некоторых напряжений на материнской плате, "оборотистости" вентиляторов и контроль температуры. Появилась возможность устанавливать "критический" предел для температуры процессора и некоторые другие параметры. Можно ли было мечтать о самой возможности регулировки питания процессора! Но это уже прошлое!
При практически любом современном тестировании системных плат или отдельных системных компонентов возможности "разгона" оцениваются чуть ли не прежде всего, следуя за простым перечислением комплектности, оснащенности материнской платы. И производители системных плат не могут не учитывать желания миллионов пользователей. Еще не так давно такие компании, как "AOpen", а тем более "Soltek" или "Shuttle", вряд ли могли похвастаться заметной долей на рынке системных плат. Теперь же сравнительное тестирование материнских плат, чипсетов не обходится без их участия. И все благодаря заложенным возможностям "разгона" (достаточно вспомнить "нашумевшую" плату "Soltek SL-75DRV").
Одним из факторов, расширяющих эти возможности, является простая необходимость изменять (увеличивать!) напряжение питания ядра процессора. Сохранение стабильности системы при "простом" частотном "разгоне" без увеличения напряжения ядра процессора маловероятно. И данная опция предоставляет, как правило, целый ряд значений, который может видоизменяться как от версии BIOS или ее производителя, так и от производителя системной платы, чипсета, предназначенного для него процессора, а значит и напряжения ядра. Поэтому вариаций достаточно много. Приведем такой ряд значений: "1.750V", "1.775V", "1.800V", "1.825V", "1.850V" (напомним, что допустимое значение может составлять 1,5 В). Как видим, шаг составляет 0,025 В, и это "хороший" шаг! Ведь конкурентная борьба идет и за этот показатель. В проигрыше (при прочих равных показателях) может оказаться тот, кто предложит возможность изменять напряжение питания ядра процессора с шагом в 0,05 В. Стоит также напомнить, что значения порядка 1,8 В весьма близки к критическим, и любые действия в этом направлении более опасны, чем эксперименты с таймингами или прерываниями!!! Некоторые версии BIOS просто не позволяют переходить предел в 1,8 В. К счастью для пользователей Intel в своих последних моделях Pentium IV на ядре Northwood предусмотрела защиту, которая в случае опасности выхода процессора из строя тормозит его работу, тем самым сигнализируя о недопустимости каких-либо дальнейших действий по "разгону".
В данном случае приведенные значения не "привязаны" к конкретным моделям процессоров. Иначе описание опции превратилось бы неминуемо в перечень технических характеристик. Понятно, что данная опция ныне располагается среди функций установки частотных характеристик системной платы, и все это может выглядеть следующим образом:
CPU Speed CPU:System Frequency Multiple System/PCI Frequency (MHz) System/SDRAM Frequency Ratio
CPU Vcore
Опция может называться также "CPU Voltage Regulator". Опция "CPU Core Voltage", имея значение "Auto", также дает возможность устанавливать напряжение ядра процессора вручную.
SEL 100/66# Signal
- своим рождением этот сигнал ("100/66#") центрального процессора был обязан внедрению в материнские платы 100-мегагерцовой системной шины. Управление сигналом через установки BIOS приводит к тому, что линия, соответствующая этому сигналу, либо свободна ("high" - 100 мГц), либо заземлена ("low" - 66 мГц). Тем самым управление сигналом приводит к выбору частоты системной шины.
Позднее этот сигнал был переименован в "BSEL0#", а в паре с "BSEL1#" он стал принимать участие и в установке частоты шины в 133 мГц (см. таблицу).
* Контакты приводятся для разъема Socket-370
Speed Error Hold
- эту опцию можно перевести, как "сохранение скорости при ошибке". Речь идет об установке нештатной внутренней частоты центрального процессора и ее последствиях. После установки такой частоты в "BIOS Setup" и последующей перезагрузки система просто остановится, а пользователь не получит желаемого "разгона". Правда, ошибочка вышла с названием опции. Данная опция появилась уже давненько, а вот фирменные технологии типа "RedStorm" совсем недавно. Вот они то и позволяют "сохранять" оптимальные частоты, по сути перестраивая "BIOS Setup" для последующей загрузки. Но это отдельная тема! Значения же рассматриваемой опции: "Enabled" (оно остановит загрузку) и "Disabled". Данная опция в свое время часто использовалась компанией "Abit" в своих системных платах.
Turbo Frequency
- данная опция (по наименованию) конечно же напоминает турбо-функции, изложенные ранее. Но! Речь вовсе не идет об устаревшей опции, влиявшей на некоторые скоростные характеристики, работу кэш-памяти, т.п. С помощью данной опции можно либо блокировать возможность изменения системной частоты, либо иметь такую возможность ("Enabled"). Представленная опция, как правило, функционирует в составе меню, позволяющем программно устанавливать частотные характеристики системы, т.е. через BIOS, или просто вместе с другими базовыми опциями. В свое время компания "ABIT" первой "проложила путь" к ставшим потом стандартными т.н. "CPU SoftMenu".
Конечно же данная опция не решает задачи увеличения частоты системной шины в n раз. Этот рост частоты может составлять 2,5%, не более. Да и система должна поддерживать прежде всего такой "Turbo"-режим. Но рассматривая возможность изменения системной частоты, пользователь однозначно должен предвидеть появление проблем со стабильностью системы. Для центрального процессора увеличение внутренней частоты на 2,5% не должно вызвать никаких проблем. Проблемы могут появиться в работе системной памяти, периферии, хотя в большинстве случаев стабильность системы не должна пострадать! Данную опцию вполне можно назвать "оверклокерской", хотя серьезных "разгонщиков" она вряд ли устроит.
В некоторых случаях включение режима "turbo frequency" осуществляется путем переустановки соответствующего джампера на материнской плате, и приведенная опция, не имея никаких параметров, только показывает "разогнанную" частоту.
Turbo Mode (75 MHz)
- специальная опция "AMI BIOS", предназначавшаяся для работы процессора Pentium II на 75-мегагерцовой системной шине. При установке опции в "Disabled" устанавливалась стандартная частота шины - 66 МГц. Включение же опции допускалось при использовании высококачественных плат расширения, модулей памяти, что требовалось спецификацией "Intel" в отношении нестандартной частоты. В противном случае система могла работать нестабильно.
Дополнительная информация о функциях чипсета и CPU содержится в опциях главы "PCI - Арбитраж, Bus-Master".
4. Memory
Memory Current
- опция "Phoenix BIOS" с установкой тока нагрузки для модулей памяти. Значения параметра следующие:
"8mA" - модули памяти требуют тока нагрузки в 8 мА, "12mA" - модули памяти требуют тока нагрузки в 12 мА. Установка "12mA" становится необходимой, если используются модули памяти большой емкости (64 МБ и более), которые содержат большое число чипов памяти.
4.1. ECC, Parity
Устройствам динамической памяти присущ один серьезный недостаток - вероятность ошибки считывания информации из ячейки. Для обнаружения ошибок памяти и их корректировки используются схемы проверки целостности данных. Существует 2 способа контроля - с помощью проверки бита четности и с помощью кода коррекции ошибок (ECC - Error Correction Code или Error Checking and Correction). Второй способ надежнее, хотя сравнивать эти методы можно с большой натяжкой.
Для пpовеpки ошибок памяти по четности (во время проведения POST, обычного режима работы) каждый байт информации должен иметь дополнительный девятый pазpяд, котоpый пpи каждом обpащении к ОЗУ по записи устанавливается таким обpазом, чтобы общее число единиц было нечетным. Пpи каждом обpащении по чтению пpовеpяется признак нечетности. Естественно, что поддерживающие проверку по нечетности модули памяти должны содержать дополнительный модуль для хранения этой дополнительной информации. Пpи обнаpужении ошибки возникает немаскиpуемое пpеpывание NMI, котоpое нельзя блокиpовать. Компьютер при этом пpекpащает pаботу, и на мониторе отобpажается сообщение об ошибке памяти, обычно в виде "PARITY ERROR AT 0AB5:00BE SYSTEM HALTED".
Недостаток такой схемы очевиден. Невозможно на основе такого метода контроля целостности исправлять обнаруженные ошибки. Метод же ECC, применяемый на высокоуровневых ПК, серверах, позволяет обнаруживать и исправлять однобитовые ошибки памяти. Двухбитные ошибки определяются при этом, но не исправляются. В отличие от метода по четности при реализации коррекции ошибок каждый бит входит более чем в одну контрольную сумму, что позволяет в случае возникновения ошибки в некотором бите восстановить адрес ошибки и исправить ее. Далеко не все чипсеты поддерживали и поддерживают коррекцию ошибок. К тому же с середины 90-х годов схемы обычного контроля четности применяются все реже. Надо отметить, что ECC не является панацеей от дефектной памяти и применяется для исправления случайных ошибок.
Контроль четности (или метод по модулю 2) существует уже давно. В военной цифровой технике передачи данных существуют более сложные методы, например, по модулю 15. Методы коррекции ошибок также имеют свою предысторию. В системах передачи данных (в частности, телемеханике) также давно применяются и коды Хэмминга, и циклические коды с образующим полиномом, и т.п.
SmartCorrect - технология автоматической коррекции ошибок, разработанная корпорацией "Distributed Processing Technology" (DPT), предназначена для защиты всей подсистемы массовой памяти. Благодаря платам памяти с системой автокоррекции ошибок, высокопроизводительные адаптеры фирмы DPT могут обнаруживать и устранять любые нарушения целостности данных, возникшие на уровне кэш-памяти адаптера или на участках прохождения данных.
CPU Level 2 Cache ECC Check
- опция включения/отключения коррекции ошибок кэша второго уровня у процессоров архитектуры Pentium II и выше, которые поддерживают эту опцию. К примеру, процессоры Pentium II поддерживает коррекцию ошибок, начиная с частоты в 333 МГц. Включение ECC-коррекции несомненно повышает надежность системы, но при этом ее работа, как обычно указывается, несколько замедляется. Но сразу надо отметить, что это замедление несущественно и не должно служить причиной отказа от включения опции.
Как мы уже знаем, в некоторых процессорах допущены ошибки, и включение этого режима может привести к нестабильной работе системы. К тому же фактор надежности и стабильности играет прежде всего значительную роль в сетевых средах. Правда, не стоит забывать и о "разогнанных" системах.
Подытоживая сказанное, можно рекомендовать следующие установки. Если система поддерживает коррекцию ошибок, то она должна быть применена. Естественно, что при отсутствии кэш-памяти второго уровня или ее блокировке данная опция будет также недоступна, хотя представить себе систему без кэша второго уровня наверно сложно. Может принимать значения: "Enabled" - разрешено, "Disabled" - запрещено.
Чуть другие названия этой же опции: "CPU Level 2 ECC checking", "CPU L2 Cache ECC Checking" и "L2 Cache ECC Support".
"AMI BIOS" предлагает несколько иное наименование опции, но речь идет о том же кэше второго уровня - "Cache Bus ECC". Еще одна опция - "ECC CPU Checking".
Data Integrity (PAR/ECC)
- (целостность данных). Опция разрешения/запрещения контроля памяти на ошибки. Вид контроля устанавливается параметром "DRAM ECC/PARITY Select". Для включения данной опции требуется поддержка модулями памяти уже известных нам технологий. Может принимать значения: "Enabled" - разрешено, "Disabled" - запрещено.
DRAM Data Integrity Mode
- (режим целостности данных DRAM). Это опция включения/отключения проверки целостности памяти. Включение опции позволит системе отслеживать и корректировать однобитные ошибки. Так же будут обнаруживаться двухбитные ошибки, но без исправления. Использование режима коррекции ошибок обеспечивает увеличение стабильности и целостности данных в системе, правда, при небольшой потере производительности. Если в системе не используются ECC-модули памяти, то опция должна быть отключена. Опция может быть отключена и при наличии ECC-модулей, но если ситуация в системе благоприятствует сохранению более высокой производительности. Может принимать значения:
"ECC" (иногда - "ECC Hardware") - разрешена коррекция, "Non-ECC" - коррекция запрещена.
В некоторых случаях опция с тем же названием может иметь другой "набор" параметров: "Parity" и "ECC". При этом меняется и содержание функции. Опция может называться "DRAM Integrity Mode".
В "Phoenix BIOS" содержится аналогичная опция с названием "ECC Control". "Enabled" разрешает проведение коррекции (по умолчанию), "Disabled" запрещает. То же содержание вложено в опцию "ECC Memory Checking".
Значения "non-ECC" и "ECC" принадлежат и опциям "Memory Configuration", "ECC Configuration", хотя первая из них не совсем однозначна в наименовании.
В некоторых случаях к имеющимся параметрам может быть добавлено еще одно - "EC only" (режим проверки на четность, но только с выводом сообщений о возникновении ошибки). В зтом случае данная опция становится аналогичной одному из вариантов опции "DRAM ECC/PARITY Select", но при этом возникновение ошибки не приводит к полной остановке системы.
DRAM ECC/PARITY Select
- опция выбора режима коррекции ошибок/проверки по четности. Эта опция появляется только в BIOS тех материнских плат, в которых чипсет поддерживает ECC, и может быть использована только в том случае, если установлены модули памяти с истинной четностью. В некоторых вариантах BIOS этим параметром может устанавливаться только вид проверки, а разрешение на проверку устанавливается параметром "Data Integrity (PAR/ECC)" или аналогичным. Параметр может принимать значения:
"Parity" (по умолчанию) - в случае возникновения ошибки на монитор выдается сообщение о сбое по четности в памяти и работа компьютера останавливается,
"ECC" - в случае возникновения одиночной ошибки она исправляется (без вывода каких-либо сообщений) и работа системы продолжается. Если имеет место не одиночная ошибка, то работа компьютера также приостанавливается. Следует только учесть, что, по данным "Intel", скорость обмена с памятью при включении этого режима уменьшается приблизительно на 3%.
"Phoenix BIOS" содержит аналогичные опции под названиями "Parity Mode" (или "Memory Parity Mode") и со следующими значениями:
"Disabled" - проверка памяти запрещена, "Parity" (по умолчанию) - аналогично, как и в "Award BIOS", "ECC" - так же аналогично, как и в "Award BIOS", сообщение выводится только при двухбитной (и более) ошибке.
"AMI BIOS" "подарил" нам два варианта опции "Memory Error Detection". В одном случае значения параметра оказались уже знакомыми: "Disabled", "ECC", "Parity". Другой же вариант по сути стал аналогом функции "DRAM Data Integrity Mode" с разрешением или запрещением коррекции ошибок ("Enabled"/"Disabled").
Memory Parity/ECC Check
- опция разрешения/запрещения проверки целостности данных. Может принимать значения: разрешен контроль памяти на ошибки ("Enabled"), запрещен ("Disabled") и "Auto". Последняя установка активизирует проверку памяти автоматически с автоматическим же определением возможностей модулей памяти, как по четности, так и по коррекции ошибок. В другой версии BIOS в этой же опции может отсутствовать параметр "Auto".
Только два параметра ("Enabled"/"Disabled") предлагает и опция "Memory Parity (Error) Check". При включении опции и отсутствии необходимых модулей памяти загрузка ПК может прерваться с выводом сообщения "Parity Error".
Осталось отметить следующее! В случае приостановки загрузки системы из-за появления ошибки по четности (или при коррекции) и необходимости все таки произвести загрузку операционной системы, единственный путь обойти POST-тестирование - это запретить любые проверки памяти на четность и т.п. ("Disabled").
Single Bit Error Report
- (сообщение об однобитовой ошибке). Если включен режим коррекции ошибок, то установка опции в "Enabled" позволит системе вывести сообщение о имеющей место однобитовой ошибке и ее коррекции. Решение этой задачи берет на себя контроллер памяти, он же направляет центральному процессору сообщение об ошибке памяти. Отключение опции ведет к отказу от вывода сообщений, но коррекция никак не отменяется.
4.2. "Затенение" памяти, выделенная память
"Shadow Memory" - это так называемая "теневая" память. В адресах памяти от 640 КБ до 1 МБ (A0000h - FFFFFh) находятся "окна", через которые "видно" содержимое различных системных ПЗУ. Например, адреса F0000h - FFFFFh занимает системное ПЗУ, содержащее BIOS системы, окно C0000h - C7FFFh - ПЗУ видеоадаптера (видео-BIOS) и т.п. При включении режима "Shadow" для каких-либо адресных диапазонов, соответствующих системным ПЗУ либо картам расширения, содержимое их ПЗУ копируется в участки основной памяти, которые затем подключаются к этим же адресам вместо ПЗУ, "затеняя" их. Дает ли это какие-нибудь преимущества? Повышается ли при этом производительность системы? Включение "затенения" дает в первую очередь значительное ускорение работы с данными ПЗУ за счет более высокого быстродействия микросхем ОЗУ (в сравнении со временем доступа к ROM BIOS в 150-200 нс). Кроме того, при обращении к микросхемам BIOS непосредственно используется 8-разрядный доступ (8-битная шина "X-bus"), что включение "затенения" ПЗУ делает еще более эффективным. Это означает, что при обращении к постоянной памяти за один такт можно считать только один байт в отличие от 32-разрядного, как минимум, доступа к оперативной памяти (16-битный доступ ушел в историю с уходом 286-х систем). Кроме этого, появляется возможность модифицировать видимое содержимое ПЗУ: все современные системные BIOS используют это для самонастройки, а в область видео-BIOS обычно загружаются экранные шрифты и т.п.
Что это за теневая память физически? Этот вопрос связан с распределением памяти вообще. В первом мегабайте памяти используются по прямому назначению, т.е. как основная память, 640 КБ, а остальные 384 КБ оказываются в адресном пространстве, зарезервированном для ПЗУ и внешних устройств. В современных платах вся память представляет собой непрерывный массив, поэтому разрывать адресное пространство модулей памяти на две части нельзя и поэтому часть системной области приходится аппаратно исключать, теряя при этом 384 КБ.
Как скопировать в эту память содержимое ПЗУ? Для этого применяют несколько способов:
1) Организация "Shadow Memory". Доступ к ней регулирует чипсет. Как правило, "Shadow Memory" находится в адресном пространстве в том же месте, где и исходное ПЗУ. Поскольку две области памяти в одном месте физически находиться не могут, для управления этой памятью в чипсете есть специальная схема, которая может подключить в этот фрагмент адресного пространства либо исходное ПЗУ, либо ОЗУ.
Несколько слов о защите от записи. Обычно "Shadow Memory" в нормальном состоянии находится в режиме "Read Only" (только для чтения). Это породило проблемы, например, при написании русификаторов, так как приходится открывать "затененные" участки той же видеопамяти. Различные версии BIOS позволяют решать эту проблему, имея опции с возможностью указания, следует ли оставлять требуемый диапазон "Read Write" или "Read Only".
Но не только BIOS способен управлять Shadow-функциями чипсета. Такое управление может осуществлять программа, умеющая корректно обращаться к регистрам чипсета на низком уровне. Начиная с 386-х в защищенном режиме работы процессора имеется страничная организация памяти, обеспечивающая формирование физического (реального) адреса из виртуального адреса программы. Именно эта возможность и обеспечивает в большинстве распространенных драйверов памяти (менеджеров) не только выполнение функций затенения, но и получение памяти EMS при наличии расширенной памяти в компьютере. Программно возможности "Shadow"-функций менеджеров памяти значительно более гибкие, чем у чипсета, управляемого BIOS. В частности, управление размерами памяти, выделяемой для "Shadow Memory", может производиться достаточно малыми по размеру страницами - 4 КБ, что позволяет эффективнее использовать адресное пространство первого мегабайта. В MS-DOS возможность управления "Shadow"-памятью имеет драйвер памяти HIMEM.SYS (ключ /SHADOWRAM:ON|OFF).
Затенение полезно, главным образом, в 16-разрядных ОС. 32-разрядные системы не используют 16-разрядный код из ROM. Вместо него они загружают 32-разрядные драйверы в ОЗУ, заменяя ими 16-разрядный код BIOS, который, таким образом, используется только в процессе загрузки системы.
2) Организация блоков верхней памяти UMB (Upper memory blocks), по сути аналогия предыдущему варианту.
3) Перемещение (relocation). Это перенос неиспользуемой памяти из системной области (640 КБ - 1 МБ) в область расширенной (Extended) памяти. Чаще всего перемещаться может весь фрагмент сразу, то есть все 384 КБ. Это связано со сложностью схемы управления адресными линиями. В этом случае освободить остаток первого мегабайта можно, только выключив все без исключения установки "Shadow". В первых IBM PC устанавливалось 640 КБ основной памяти и отдельно расширенная память, поэтому со старшими 384 КБ проблем не возникало. Позднее, а это также было давно, некоторые чипсеты (Neat, OPTi495, SiS471, др.) имели возможность переносить старшие 384 КБ за пределы пеpвого мегабайта, пpисоединяя их к pасширенной памяти. Одни чипсеты могли переносить свободные от "затенения" участки, другие - только все 384 КБ целиком.
Последующая серия опций объединена одной темой ("Теневое ПЗУ адаптеpа ХХХХ,16K") и представляет собой, в основном, устаревшие аппаратные решения.
Adaptor ROM Shadow C800,16K
- опция для маскиpования ПЗУ некотоpых специальных каpт - сетевых, различных контpоллеpов и т.п. По умолчанию устанавливается "Disabled". Установка в "Enabled" допустима только тогда, когда в систему инсталлирована каpта расширения с ПЗУ, занимающим эти адpеса. В свое время большинство дисплейных видеоадаптеров, таких как MDA, Hercules, использовали ПЗУ с адpесом C800. Поскольку эти каpты были низкоскоростными, затенение этого адpеса улучшало общую пpоизводительность системы.
Дополнительная и интересная информация! Некотоpые версии BIOS допускали включение теневого ОЗУ со снятой защитой от записи. Пpи помощи дpайвеpа возможно было использование "теневой памяти" в качестве области UMB. Это давало некотоpое пpеимущество в скоpости в сpавнении с UMB-областью, обеспечиваемой пpи помощи драйвера EMM386.
Возможна вполне современная ситуация, когда затенению может быть подвергнут загрузочный BIOS сетевого адаптера. В этом нет никакой необходимости, т.к. загрузка удаленной системы вряд ли есть непрерывный процесс.
Adaptor ROM Shadow CC00,16K - эта область предназначалась для некоторых (естественно, старых) адаптеpов жестких дисков.
Adaptor ROM Shadow D000,16K - адресная область для использования сетевыми картами.
Adaptor ROM Shadow D400,16K - некоторые специальные контроллеры (это было давно) для четырех floppy-дисководов имели отображаемый BIOS ROM в диапазоне адресов D400...D7FF. Adaptor ROM Shadow D800,16K Adaptor ROM Shadow DC00,16K
Adaptor ROM Shadow E000,16K - возможная область для размещения EMS-страницы.
Adaptor ROM Shadow E400,16K Adaptor ROM Shadow E800,16K
Adaptor ROM Shadow EC00,16K - эта область могла быть использована системой после копирования SCSI-контроллерами своего BIOS. Некоторые SCSI-контроллеры не использовали адресов ввода/вывода. Их адресный BIOS-диапазон содержал перезаписываемые адреса, которые в действительности являлись I/O-портами. Это означало, что эти адреса не должны были затеняться и даже кэшироваться.
Совершенно аналогично "работали" следующие опции:
C8000-CBFFF Shadow CC000-CFFFF Shadow D0000-D3FFF Shadow D4000-D7FFF Shadow D8000-DBFFF Shadow DC000-DFFFF Shadow
Совершенно те же опции предложил "Phoenix BIOS" в меню под названием "Shadow Memory Regions". Хотя то же меню "Phoenix BIOS" в другом варианте предложило "укрупненные" области памяти "C8000-CFFFF" (и т.д.) со значениями "Disabled" и "Shadow".
И совершенно ясно, что возможны также другие вариации по "затенению". Например, опция "E8000 - EFFFF Shadow" может быть использована для поддержки интегрированного SCSI-контроллера.
И еще одно важное замечание, не утратившее актуальности и по сей день. Речь идет о специализированных ISA-адаптерах с микропроцессорами, память которых организована как двухпортовая. Если память такого микропроцессора по одному из портов со стороны компьютера адресуется как страница в области указанных адресов, то "затенение" для этой области должно быть запрещено ("Disabled").
Обобщая сказанное, необходимо отметить, что затенение разделяемой ("shared") памяти недопустимо. Разделяемая память служит также в качестве буферов сетевых контроллеров, т.п.
Еще пример затенения адресных областей:
C000,16K Shadow C400,16K Shadow C800,16K Shadow CC00,16K Shadow D000,16K Shadow D400,16K Shadow D800,16K Shadow DC00,16K Shadow
Ничего нового, разве что первые две опции меню неявно предназначены для затенения видео-BIOS (см. подробно ниже). На этом остановимся, ибо есть еще вариации по затенению областей памяти в виде отдельных меню, но пользователю уже несложно будет с ними разобраться.
4.2. "Затенение" памяти, выделенная память (продолжение)
Base Memory Address
- данной опцией устанавливается начальный адрес адресного диапазона, выделяемого под потребности некоторой PCI-карты. Понятно, что возможности адресации обеспечиваются 32-разрядной шиной.
Опция может называться "Memory Start Address".
BIOS Devnode for Shadow RAM
- эта опция используется (включается при "Enabled") для некоторых карт расширения, чья ROM-память не требует коррекции того региона основной памяти, который эта карта занимает. "Disabled" позволяет разблокировать фиксированный начальный адрес области памяти для устройства и изменять его динамически.
CD Hole
- столь необычная опция "AMI BIOS" предназначена для управления адресной областью в диапазоне DC000h - DFFFFh. Если установлено значение "Disabled", то любое обращение, запрос к данному пространству направляется основному SCSI-контроллеру (хотя это может быть и сетевое устройство). Если же выбрано "Enabled", доступ к этому региону памяти контролируется одним из PAM (Programmable Attribute Map) регистров, т.е. стандартным способом.
Стоит остановиться на этой теме подробнее.
В состав "северного" (Host-to-PCI Bridge) моста чипсета, среди множества других, входят и семь программируемых PAM-регистров. Через установку различных аттрибутов они позволяют управлять тринадцатью адресными сегментами различного размера в диапазоне от 640 КБ до 1 МБ адресного пространства. С другой стороны, кэширование этими областями осуществляется через MTRR-регистры центрального процессора (о них будет сказано ниже). Каждый PAM-регистр (см. таблицу) контролирует два региона, обычно по 16 КБ каждый. Каждый из регионов "обслуживается" четырьмя битами, два из которых зарезервированы, а два остальных - это "Read Enable" и "Write Enable". В зависимости от состояния этих бит ("0" или "1") осуществляется либо доступ к основной памяти, либо запросы перенаправляются на PCI-шину. Поэтому, если установлены два "0", доступ к выбранному диапазону памяти невозможен.
В процессе начальной загрузки и выполнения инструкций BIOS при копировании некоторого BIOS в выбранную "затеняемую" область в соответствующем регистре по соответствующему аттрибуту "Write Enable" устанавливается "1". После окончания всех процедур, связанных с затенением, для данного диапазона (регистра) устанавливается режим "только для чтения" (read only), что соответствует аттрибутам "Read Enable", равным "1", и "Write Enable", равным "0". При этом все циклы записи в данную область перенаправляются непосредственно шине расширения. Понятно, что если речь идет о выделенной RAM-памяти, то оба аттрибута будут равными "1".
Таблица 1. Примечание. * - Сегмент C0000h - CFFFFh может быть использован SMM-пространством, если используется SMRAM-регистр (об SMM см. ниже).
E0000 ROM belongs to ATBUS
- один из примеров "стареньких" опций по выделению фрагмента из "верхней" памяти для использования системными устройствами. В данном случае "Yes" позволяло зарезервировать такой фрагмент за AT-шиной. Обычно, E000-область зарезервирована за кодом системного BIOS, но некоторые системы не использовали его стандартным образом. Например, "OS/2" использовала этот диапазон для работы в защищенном режиме и "грузила" код Advanced BIOS в область E000h-EFFFh.
E8000 32K Accessible
- аналогичная опция, хотя и не такая "древняя", поскольку предназначалась для использования (и опция, и адресная область) PS/2-системами, 32-разрядными ОС, под "PnP"-область.
Extended ROM RAM Area
- наличие этой опции характерно для старых версий "AMI BIOS". Пользователю предоставлялся выбор, где хранить данные о жестком диске: в верхнем килобайте базовой системной памяти, начиная с 639-го килобайта, или в адресах нижней памяти в области DOS-памяти или системного BIOS (0:300). Необходимо было помнить, что вторая адресная область могла также использоваться некоторой периферией (звуковыми, сетевыми и т.п. картами расширения). В этом случае конфликтов можно было избежать, если система через BIOS могла использовать полноценные механизмы "затенения", которые впрочем могли и отсутствовать в очень старых системах. Вполне возможна была ситуация с изменением параметров жесткого диска в этой области памяти перед ее полным отображением, так как в ней содержался блок параметров фиксированного диска. В некоторых случаях могло потребоваться изучение документации на соответствующие платы расширения или контроллеры по использованию ими данной области памяти.
Опция могла (или может) называться "RAM Area" или "Hard Disk Type 47 - RAM Area". Последняя опция напоминает нам о процедуре пользовательской установки параметров жесткого диска.
ISA LFB Size
- опция "AMI-BIOS" для установки размера линейного буфера кадра (LFB - Linear Frame Buffer), во многом аналогичная или близкая по смыслу нижерасположенной "Memory Hole At 15M-16M". Кроме размещения ROM-адреса в пределах 15-16 МБ, опция позволяла (в таком виде она уже не встречается) установить размер линейного видеобуфера графических адаптеров в области основной памяти, доступной для ISA-шины (1, 2, 4 МБ). Это суть диапазоны 15-16, 14-16 и 12-16 МБ соответственно. Еще одним значением являлось "Disabled" с отказом от выделения под ISA-адаптер линейного буфера кадра. "Disabled" могло потребоваться при объеме памяти не более 8 МБ (в 96-м г. это было почти пределом) и при работе с MS-DOS. Такое же значение необходимо было установить при использовании ISA-карт с отсутствующим кадровым буфером. Запрещение опции не позволяло использовать "Plug and Play's Configuration Manager" или "ISA Configuration Utility". Если же какое-то из значений ("1 MB", "2MB" или "4MB") было выбрано, то следующая опция "ISA LFB Base Address" становилась доступной.
DOS-приложение могло использовать стандартно под видеопамять только 64 КБ основной памяти. В этом объеме не "поместится" и "хороший" графический файл. Совместно развивающиеся технологии памяти и работы с ней позволили создать механизм пейджинга, суть которого заключается в том, что можно отображать разные части видеопамяти на один и тот же видеосегм