Смена банка - Bank switching

Гипотетическая карта памяти с переключением банков для процессора, который может адресовать только 64 КБ. Эта схема показывает 200 КБ памяти, из которых процессор может в любой момент получить доступ только к 64 КБ. Операционная система должна управлять операцией переключения банков, чтобы гарантировать, что выполнение программы может продолжаться, когда часть памяти недоступна для процессора.

Переключение банков - это метод, используемый в компьютерном дизайне для увеличения объема используемой памяти сверх объема, напрямую адресуемого инструкциями процессора . Его можно использовать для настройки системы по-разному в разное время; например, ПЗУ, необходимое для запуска системы с дискеты, может быть отключено, когда в нем больше нет необходимости. В системах видеоигр переключение банков позволило разрабатывать более крупные игры для игры на существующих консолях.

Переключение банков возникло в миникомпьютерных системах. Многие современные микроконтроллеры и микропроцессоры используют переключение банков для управления оперативной памятью , энергонезависимой памятью, устройствами ввода-вывода и регистрами управления системой в небольших встроенных системах . Этот метод был распространен в 8-битных микрокомпьютерных системах. Переключение банков также может использоваться для обхода ограничений ширины адресной шины, где некоторые аппаратные ограничения препятствуют прямому добавлению большего количества адресных строк, и для обхода ограничений в ISA , где генерируемые адреса уже, чем ширина адресной шины. Некоторые ориентированные на управление микропроцессоры используют технику переключения банков для доступа к внутренним регистрам ввода-вывода и управления, что ограничивает количество битов адреса регистра, которые должны использоваться в каждой инструкции.

В отличие от управления памятью с помощью подкачки , обмен данными с запоминающим устройством большой емкости не происходит, например с дисковым хранилищем . Данные остаются в неактивном хранилище в области памяти, которая в настоящее время недоступна для процессора (хотя она может быть доступна для видеодисплея, контроллера прямого доступа к памяти или других подсистем компьютера) без использования специальных префиксных инструкций.

Техника

Переключение банков можно рассматривать как способ расширения адресного пространства инструкций процессора с помощью некоторого регистра. Примеры:

  • Система, следующая за процессором с 12-битным адресом, имеет 15-битную адресную шину, но нет возможности напрямую указать три старших бита на адресной шине. Для предоставления этих битов могут использоваться регистры внутреннего банка.
  • Система, следующая за процессором с 15-битным адресом, имеет 18-битную адресную шину, но унаследованные инструкции имеют только 15 адресных битов; внутренние банковские регистры могут использоваться для предоставления этих битов. Некоторые новые инструкции могут явно указывать банк.
  • Процессор с 16-битной внешней адресной шиной может адресовать только 2 16  = 65536 ячеек памяти. Если к системе была добавлена внешняя защелка , ее можно было использовать для управления тем, к какому из двух наборов устройств памяти, каждый с 65536 адресами, можно получить доступ. Процессор может изменить, какой набор используется в настоящее время, установив или сбросив бит защелки.
    Защелка может быть установлена ​​или снята процессором несколькими способами; конкретный адрес памяти может быть декодирован и использован для управления защелкой, или в процессорах с отдельно декодируемыми адресами ввода- вывода может быть декодирован выходной адрес. Несколько битов управления переключением банков можно было собрать в регистр, примерно удваивая доступное пространство памяти с каждым дополнительным битом в регистре.
    Поскольку внешняя защелка (или регистр) выбора банка не связана напрямую с программным счетчиком процессора, она не меняет состояние автоматически при переполнении программного счетчика; это не может быть обнаружено внешней защелкой, поскольку счетчик программ является внутренним регистром процессора. Дополнительная память не всегда доступна программам. Внутренние регистры процессора сохраняют свою исходную длину, поэтому процессор не может напрямую охватить всю память с переключением банков, например, путем увеличения внутреннего регистра. Вместо этого процессор должен явно выполнять операцию переключения банков для доступа к большим объектам памяти. Есть и другие ограничения. Обычно система переключения банков имеет один блок программной памяти, общий для всех банков; независимо от того, какой банк в настоящее время активен, для части адресного пространства будет использоваться только один набор ячеек памяти . Эта область будет использоваться для хранения кода, который управляет переходами между банками, а также для обработки прерываний .

Часто одна база данных охватывает несколько банков, и возникает необходимость перемещать записи между банками (как для сортировки). Если одновременно доступен только один банк, необходимо переместить каждый байт дважды: сначала в общую область памяти, выполнить переключение банка на банк назначения, а затем фактически переместить байт в банк назначения. Если в компьютерной архитектуре есть механизм прямого доступа к памяти или второй ЦП и ограничения доступа к банкам различаются, следует использовать любую подсистему, которая может передавать данные напрямую между банками.

В отличие от схемы виртуальной памяти , переключение банков должно явно управляться запущенной программой или операционной системой; аппаратное обеспечение процессора не может автоматически определить, что требуются данные, не отображенные в текущий момент в активный банк. Прикладная программа должна отслеживать, в каком банке памяти содержится требуемый фрагмент данных, а затем вызывать процедуру переключения банков, чтобы сделать этот банк активным. Однако смена банка позволяет получить доступ к данным намного быстрее, чем, например, получение данных из дискового хранилища.

Использование микрокомпьютера

Переключатель выбора банка на плате памяти Cromemco использовался для отображения памяти в один или несколько из 8 отдельных банков по 64 КБ.

Процессоры с 16-битной адресацией ( 8080 , Z80 , 6502 , 6809 и т. Д.), Обычно используемые в ранних игровых консолях и домашних компьютерах, могут напрямую адресовать только 64  КБ . Системы с большим объемом памяти должны были разделить адресное пространство на несколько блоков, которые можно было динамически преобразовать в части большего адресного пространства. Переключение банков использовалось для достижения этого большего адресного пространства за счет организации памяти в отдельные банки размером до 64 КБ каждый. Блоки различных размеров включались и выключались через регистры выбора банка или аналогичные механизмы. Cromemco была первым производителем микрокомпьютеров, который использовал переключение банков, поддерживая в своих системах 8 банков по 64 КБ.

При использовании переключения банка требовалась некоторая осторожность, чтобы не повредить обработку вызовов подпрограмм , прерываний , машинного стека и т. Д. Хотя содержимое памяти, временно отключенной от ЦП, было недоступно для процессора, оно могло использоваться другим оборудованием, таким как видеодисплей, DMA , устройства ввода-вывода и т. Д. CP / M-80 3.0, выпущенный в 1983 году, и TRS-80 на базе Z80, Model 4 и Model II, поддерживали переключение банков, что позволяло использовать более 64 КБ памяти, к которой может обращаться процессор 8080 или Z80.

Переключение банков позволило добавить в компьютерный дизайн дополнительную память и функции без затрат и несовместимости переключения на процессор с более широкой адресной шиной . Например, C64 использовал переключение банков, чтобы обеспечить полные 64 КБ ОЗУ и по-прежнему обеспечивать ПЗУ и ввод-вывод с отображением в память . Atari 130XE может позволить своих двух процессоров (6502 и Антик ) для доступа к отдельным банкам RAM, что позволяет программистам делать большие playfields и другие графические объекты , не используя память , видимую CPU.

Микроконтроллеры

Микроконтроллеры (микропроцессоры со значительным аппаратным обеспечением ввода / вывода, встроенным в кристалл) могут использовать переключение банков, например, для доступа к нескольким регистрам конфигурации или встроенной памяти чтения / записи. Примером может служить микроконтроллер PIC . Это позволяет использовать короткие командные слова для экономии места во время выполнения рутинной программы за счет дополнительных инструкций, необходимых для доступа к относительно редко используемым регистрам, таким как те, которые используются для конфигурации системы при запуске.

IBM PC

Расширенная память в IBM PC

В 1985 году компании Lotus и Intel представили Expanded Memory Specification (EMS) 3.0 для использования в IBM PC-совместимых компьютерах с MS-DOS . Microsoft присоединилась к выпуску версий 3.2 в 1986 году и 4.0 в 1987 году, и спецификация стала известна как Lotus-Intel-Microsoft EMS или LIM EMS. Это форма техники переключения банков, которая позволяет использовать более 640 КБ ОЗУ, определенных исходной архитектурой IBM PC, позволяя отображать его фрагментарно в «окне» размером 64 КБ, расположенном в верхней области памяти . 64 КБ разделены на четыре «страницы» по 16 КБ, каждая из которых может переключаться независимо. Некоторые компьютерные игры использовали это, и хотя EMS устарела, в настоящее время эта функция эмулируется более поздними операционными системами Microsoft Windows для обеспечения обратной совместимости с этими программами.

Позже Спецификация расширяемый памяти (XMS), а также в настоящее время устарело, является стандартом для, в принципе, имитируя переключение банка на память выше 1 МБ ( так называемых « расширенная памятью »), которая не является непосредственно адресацией в реальном режиме от x86 процессоров в который запускает MS-DOS. XMS позволяет копировать расширенную память в любое место в обычной памяти, поэтому границы «банков» не фиксированы, но во всем остальном он работает как переключение банков в EMS , с точки зрения программы, которая ее использует. Более поздние версии MS-DOS (начиная примерно с версии 5.0) включали драйвер EMM386, который имитирует память EMS с помощью XMS, позволяя программам использовать расширенную память, даже если они были написаны для EMS. Microsoft Windows также эмулирует XMS для тех программ, которым это необходимо.

Приставки для видеоигр

Переключение банков также использовалось в некоторых игровых приставках . Atari 2600 , например, может только адрес 4 КБ ПЗУ, поэтому позже 2600 игровых картриджи содержали свои собственные аппаратные средства банки переключающих, чтобы разрешить использование большего количества ПЗУ и , таким образом , позволяют более сложные играм ( с помощью дополнительной программы коды и, в равной степени важны большие объемы игровых данных, таких как графика и различные этапы игры). Система Nintendo Entertainment System содержала модифицированный 6502, но его картриджи иногда содержали мегабит или больше ПЗУ, адресуемого через переключение банков, называемое контроллером многопамяти . В картриджах Game Boy использовался чип под названием MBC (Memory Bank Controller), который не только предлагал переключение банка ПЗУ, но также переключение банка SRAM картриджа и даже доступ к таким периферийным устройствам, как инфракрасные каналы или грохочущие двигатели. Переключение банков все еще использовалось в более поздних игровых системах. Некоторые картриджи Sega Mega Drive , такие как Super Street Fighter II, имели размер более 4 МБ и требовали использования этого метода (4 МБ - максимальный размер адреса). GP2X КПК от Gamepark Holdings использует переключение банка для того , чтобы контролировать начальный адрес (или смещение) память для второго процессора.

Обработка видео

В некоторых типах компьютерных видеодисплеев может использоваться связанный метод двойной буферизации для улучшения характеристик видео. В этом случае, в то время как процессор обновляет содержимое одного набора ячеек физической памяти, оборудование для генерации видео осуществляет доступ и отображает содержимое второго набора. Когда процессор завершит свое обновление, он может подать сигнал на оборудование видеодисплея, чтобы поменять активные банки, чтобы переход, видимый на экране, не имел артефактов или искажений. В этом случае процессор может иметь доступ ко всей памяти сразу, но аппаратное обеспечение видеодисплея переключается между частями видеопамяти. Если два (или более) банка видеопамяти содержат немного разные изображения, быстрое переключение (перелистывание страниц) между ними может создать анимацию или другие визуальные эффекты, которые в противном случае процессор мог бы быть слишком медленным для непосредственного выполнения.

Альтернативные и последующие техники

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

Смотрите также

использованная литература

внешние ссылки