Открыть сервис

Сегмент ISA

Сегмент ISA — это часть оперативной памяти компьютера, адресуемая устройствами, подключёнными к шине ISA (Industry Standard Architecture), и используемая для обмена данными между центральным процессором (ЦП), оперативной памятью и периферийными контроллерами. В архитектуре IBM PC/AT и совместимых с ней системах сегмент ISA представляет собой фиксированную область адресного пространства размером 128 Кбайт (от 0x000A0000 до 0x000BFFFF), которая зарезервирована для отображения памяти видеоадаптеров, контроллеров жёстких дисков, сетевых карт и других устройств, работающих через шину ISA. Данный сегмент является частью так называемой «верхней памяти» (Upper Memory Area, UMA) и не используется для хранения данных программ, выполняемых в реальном режиме работы процессора.

История и происхождение

Концепция сегмента ISA возникла в начале 1980-х годов с появлением персональных компьютеров IBM PC/AT (1984 год), которые использовали шину ISA для подключения периферийных устройств. В то время процессоры Intel 80286 и более ранние модели работали в реальном режиме, где адресное пространство было ограничено 1 Мбайтом (20-битная адресация). Из этого объёма первые 640 Кбайт (от 0x00000000 до 0x0009FFFF) отводились под основную память (conventional memory), а оставшиеся 384 Кбайта (от 0x000A0000 до 0x000FFFFF) — под UMA.

Шина ISA, будучи 16-разрядной, могла адресовать до 16 Мбайт памяти, но в реальном режиме доступ к адресам выше 1 Мбайта был затруднён. Поэтому для взаимодействия с устройствами, требующими быстрого обмена данными (например, видеокарты), был выделен специальный диапазон в UMA — сегмент ISA. Он располагался в нижней части UMA (от 0x000A0000 до 0x000BFFFF) и предназначался исключительно для устройств, работающих через шину ISA. Впоследствии, с появлением процессоров 80386 и защищённого режима, а также шин PCI и AGP, роль сегмента ISA уменьшилась, но он продолжал использоваться для обратной совместимости вплоть до конца 1990-х годов.

Структура и адресация

Сегмент ISA занимает 128 Кбайт адресного пространства и делится на две основные области:

  • 0x000A0000 — 0x000AFFFF (64 Кбайт): традиционно зарезервирована для видеопамяти (EGA, VGA, SVGA). В этой области хранятся буферы кадров, таблицы символов и другие данные, используемые видеоконтроллером. Например, в режиме VGA (640×480, 16 цветов) видеопамять занимает 64 Кбайт, начиная с адреса 0x000A0000.
  • 0x000B0000 — 0x000BFFFF (64 Кбайт): используется для монохромных видеоадаптеров (MDA, Hercules) и некоторых других устройств, таких как контроллеры дисководов и сетевые карты. Монохромный видеобуфер обычно располагается по адресу 0x000B0000, а цветные адаптеры могут использовать диапазон 0x000B8000 для текстового режима.

Адресация в сегменте ISA осуществляется через шину ISA с использованием 16-битных адресов, которые отображаются на физические адреса в диапазоне 0x000A0000–0x000BFFFF. Для доступа к этим адресам процессор в реальном режиме использует комбинацию сегментного регистра (например, 0xA000) и смещения (0x0000–0xFFFF). В защищённом режиме адресация может быть более сложной, но сегмент ISA остаётся фиксированным.

Устройства, работающие через сегмент ISA

Сегмент ISA был критически важен для работы нескольких типов периферийных устройств в ранних IBM PC-совместимых компьютерах:

Видеоадаптеры

Видеокарты стандартов MDA, CGA, EGA, VGA и их клоны использовали сегмент ISA для хранения видеопамяти. В режиме реального времени процессор мог напрямую записывать данные в эту область, что обеспечивало быстрый вывод изображения. Например, в текстовом режиме VGA символы и атрибуты хранятся в области 0x000B8000, а в графическом — в 0x000A0000.

Контроллеры жёстких дисков

Некоторые контроллеры IDE и SCSI, особенно ранние модели, использовали сегмент ISA для обмена данными через так называемую «теневую» память (shadow RAM). Это позволяло ускорить передачу блоков данных между диском и памятью без участия ЦП. Однако с развитием DMA (прямого доступа к памяти) и более совершенных шин эта практика стала редкостью.

Сетевые карты

Сетевые адаптеры стандартов Ethernet, Arcnet и Token Ring (например, карты 3Com 3C509) часто отображали свои буферы приёма-передачи в сегмент ISA. Это упрощало программирование драйверов, так как данные могли быть прочитаны процессором напрямую из памяти. Адреса в диапазоне 0x000B0000–0x000BFFFF использовались для этой цели.

Звуковые карты

Звуковые карты, такие как Sound Blaster 16, могли использовать сегмент ISA для хранения сэмплов или буферов DMA. Однако чаще они работали через порты ввода-вывода или DMA-каналы, а не через отображение в память.

Другие устройства

  • Контроллеры джойстиков, модемов и принтеров иногда применяли сегмент ISA для обмена данными в реальном режиме.
  • Некоторые BIOS-расширения (например, для контроллеров SCSI) загружались в область 0x000C0000–0x000DFFFF, которая также входит в UMA, но не является частью сегмента ISA.

Технические ограничения и проблемы

Использование сегмента ISA накладывало ряд ограничений:

  • Конфликт адресов: несколько устройств не могли одновременно использовать один и тот же адрес в сегменте ISA. Это приводило к необходимости ручной настройки перемычек (джамперов) на картах расширения, чтобы избежать конфликтов. Например, видеокарта и сетевая карта не могли занимать один и тот же диапазон 0x000A0000.
  • Ограниченный объём: 128 Кбайт было недостаточно для современных (на тот момент) видеорежимов с высоким разрешением (например, SVGA с 1024×768 и 256 цветами требовал 768 Кбайт). Это привело к появлению дополнительных сегментов за пределами ISA, таких как VESA Local Bus и AGP.
  • Скорость доступа: шина ISA работала на частоте 8,33 МГц, что было медленнее, чем системная шина процессора. Отображение памяти в сегмент ISA не ускоряло обмен данными, а лишь упрощало программирование.
  • Совместимость с защищённым режимом: в защищённом режиме процессоров 80386 и выше доступ к сегменту ISA требовал настройки страничной таблицы, что усложняло драйверы. Многие операционные системы (например, Windows 95) использовали виртуальные драйверы для эмуляции доступа.

Значение и наследие

Сегмент ISA сыграл ключевую роль в развитии IBM PC-совместимых компьютеров, обеспечив стандартизированный способ взаимодействия с видеокартами и другими устройствами. Он позволил создавать универсальные драйверы и операционные системы (например, MS-DOS), которые могли работать с широким спектром оборудования. С появлением шины PCI в 1993 году и последующим переходом на AGP и PCI Express, сегмент ISA утратил своё значение. Видеокарты начали использовать собственные адресные пространства через шину PCI, а контроллеры дисков перешли на DMA.

Тем не менее, наследие сегмента ISA сохраняется в современных компьютерах в виде обратной совместимости. Многие BIOS и операционные системы (например, Linux) до сих пор поддерживают отображение памяти в диапазоне 0x000A0000–0x000BFFFF для эмуляции старых видеорежимов (например, VGA-текстовый режим при загрузке). Кроме того, встроенные видеокарты на некоторых материнских платах могут использовать этот диапазон для совместимости с устаревшим программным обеспечением.

Примеры использования

  • Загрузка компьютера: при включении BIOS отображает текст на экране, записывая символы в область 0x000B8000 (текстовый режим VGA). Это происходит даже на современных системах, если используется эмуляция VGA.
  • Старые игры: игры для MS-DOS, такие как Doom (1993) или Wolfenstein 3D (1992), напрямую записывали данные в сегмент ISA для вывода графики в режиме VGA. Это обеспечивало высокую производительность без использования драйверов.
  • Эмуляция: эмуляторы IBM PC (например, DOSBox) программно воспроизводят поведение сегмента ISA, чтобы запускать старые игры и приложения на современных операционных системах.

Критика и альтернативы

Основным недостатком сегмента ISA была его негибкость и ограниченность. Альтернативные архитектуры, такие как шина Micro Channel (IBM) или EISA (Extended ISA), предлагали более сложные схемы отображения памяти, но не получили широкого распространения из-за высокой стоимости и отсутствия обратной совместимости. Впоследствии шина PCI решила проблему конфликтов адресов за счёт автоматического конфигурирования (Plug and Play), а AGP и PCI Express предоставили выделенные каналы для видеокарт, полностью вытеснив ISA.

Источники

  1. «IBM PC/AT Technical Reference», IBM Corporation, 1984.
  2. Shanley, T., «ISA System Architecture», Addison-Wesley, 1995.
  3. Messmer, H.-P., «The Indispensable PC Hardware Book», Addison-Wesley, 2002.
  4. «Intel 80386 Programmer's Reference Manual», Intel Corporation, 1986.
  5. «VGA Hardware Reference», IBM Corporation, 1987.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →