Смена банка
Переключение банков — это метод, используемый в компьютерном проектировании для увеличения объема полезной памяти сверх объема, непосредственно адресуемого процессором . [1] инструкции. Его можно использовать для различной настройки системы в разное время; например, ПЗУ, необходимое для запуска системы с дискеты, можно отключить, когда оно больше не нужно. В системах видеоигр переключение банков позволило разрабатывать более крупные игры для использования на существующих консолях.
Переключение банков зародилось в миникомпьютерных системах. [2] Многие современные микроконтроллеры и микропроцессоры используют переключение банков для управления оперативной памятью , энергонезависимой памятью, устройствами ввода-вывода и регистрами управления системой в небольших встраиваемых системах . Этот метод был распространен в 8-битных микрокомпьютерных системах. Переключение банков также может использоваться для обхода ограничений ширины адресной шины, когда некоторые аппаратные ограничения препятствуют прямому добавлению большего количества адресных строк, а также для обхода ограничений в ISA , где генерируемые адреса уже ширины адресной шины. Некоторые микропроцессоры, ориентированные на управление, используют метод переключения банков для доступа к внутренним регистрам ввода-вывода и управления, что ограничивает количество битов адреса регистра, которые должны использоваться в каждой инструкции.
В отличие от управления памятью посредством подкачки , обмен данными с запоминающими устройствами, такими как дисковые хранилища, не осуществляется . Данные остаются в режиме постоянного хранения в области памяти, которая в данный момент недоступна процессору (хотя может быть доступна видеодисплею, контроллеру DMA или другим подсистемам компьютера) без использования специальных префиксных инструкций.
Техника
[ редактировать ]Переключение банков можно рассматривать как способ расширения адресного пространства инструкций процессора за счет некоторого регистра. Примеры:
- Последующая система [3] процессор с 12-битным адресом имеет 15-битную адресную шину, но нет возможности напрямую указать старшие три бита на адресной шине. Для предоставления этих битов можно использовать внутренние банковские регистры.
- Последующая система [4] процессор с 15-битным адресом имеет 18-битную адресную шину, но устаревшие инструкции имеют только 15 бит адреса; Для предоставления этих битов можно использовать внутренние банковские регистры. Некоторые новые инструкции могут явно указывать банк.
- Процессор с 16-битной внешней адресной шиной может адресовать только 2 16 = 65536 ячеек памяти. внешняя защелка Если бы в систему была добавлена к одному из двух наборов устройств памяти, каждое из которых имеет 65536 , ее можно было бы использовать для управления доступом адресов. Процессор может изменить, какой набор используется в данный момент, установив или очистив бит-фиксатор.
Процессор может установить или очистить защелку несколькими способами; конкретный адрес памяти может быть декодирован и использован для управления защелкой, или, в процессорах с отдельно декодированными адресами ввода-вывода , может быть декодирован выходной адрес. Несколько битов управления переключением банков можно было собрать в регистр, примерно удваивая доступное пространство памяти с каждым дополнительным битом в регистре.
Поскольку внешняя защелка выбора банка (или регистр) не связана напрямую со счетчиком программ процессора, она не меняет состояние автоматически при переполнении счетчика программ; это не может быть обнаружено внешней защелкой, поскольку счетчик программ является внутренним регистром процессора. Дополнительная память не всегда доступна для программ. Внутренние регистры процессора сохраняют свою первоначальную длину, поэтому процессор не может напрямую охватить всю память с переключением банков, например, путем увеличения внутреннего регистра. [5] Вместо этого процессор должен явно выполнить операцию переключения банков для доступа к большим объектам памяти. Есть и другие ограничения. В целом [ нужна ссылка ] система переключения банков будет иметь один блок программной памяти, общий для всех банков; независимо от того, какой банк в данный момент активен, для части адресного пространства только один набор ячеек памяти будет использоваться . Эта область будет использоваться для хранения кода, управляющего переходами между банками, а также для обработки прерываний .
Часто одна база данных охватывает несколько банков, и возникает необходимость перемещения записей между банками (как при сортировке). Если бы одновременно был доступен только один банк, то пришлось бы перемещать каждый байт дважды: сначала в общую область памяти, осуществлять переключение банка на банк назначения, а затем собственно перемещать байт в банк назначения. Если в компьютерной архитектуре имеется механизм DMA или второй ЦП и ограничения доступа к банкам различаются, следует использовать любую подсистему, которая может передавать данные напрямую между банками.
В отличие от схемы виртуальной памяти , переключение банков должно явно управляться работающей программой или операционной системой; аппаратное обеспечение процессора не может автоматически обнаружить, что требуются данные, которые в данный момент не сопоставлены с активным банком. Прикладная программа должна отслеживать, в каком банке памяти хранится необходимая часть данных, а затем вызывать процедуру переключения банков, чтобы сделать этот банк активным. [6] Однако переключение банков позволяет получить доступ к данным гораздо быстрее, чем, например, извлечение данных из дискового хранилища.
Использование микрокомпьютера
[ редактировать ]Процессоры с 16-битной адресацией ( 8080 , Z80 , 6502 , 6809 и т. д.), обычно используемые в ранних игровых консолях и домашних компьютерах, могут напрямую адресовать только 64 КБ . Системы с большим объемом памяти должны были разделить адресное пространство на несколько блоков, которые можно было динамически отображать в части большего адресного пространства. Переключение банков использовалось для достижения большего адресного пространства за счет организации памяти в отдельные банки размером до 64 КБ каждый. [8] Блоки разных размеров включались и выводились через регистры выбора банка или аналогичные механизмы. Cromemco была первым производителем микрокомпьютеров, который использовал переключение банков, поддерживая в своих системах 8 банков по 64 КБ. [9]
При использовании переключения банков требовалась некоторая осторожность, чтобы не повредить обработку вызовов подпрограмм , прерываний , машинного стека и так далее. Хотя содержимое памяти, временно отключенное от ЦП, было недоступно для процессора, оно могло использоваться другим оборудованием, таким как видеодисплей, DMA , устройства ввода-вывода и т. д. CP/M-80 3.0, выпущенный в 1983 году, и на базе Z80, TRS-80 модели 4 и Model II, поддерживали переключение банков, что позволяло использовать более 64 КБ памяти, к которой мог обращаться процессор 8080 или Z80. [10]
Переключение банков позволило добавить дополнительную память и функции в конструкцию компьютера без затрат и несовместимости, связанных с переключением на процессор с более широкой адресной шиной . Например, в C64 использовалось переключение банков, чтобы обеспечить полные 64 КБ ОЗУ, а обеспечить ввод-вывод с отображением в ПЗУ и памяти также . Atari 130XE могла предоставить двум своим процессорам (6502 и ANTIC ) доступ к отдельным банкам оперативной памяти, что позволяло программистам создавать большие игровые поля и другие графические объекты, не используя память, видимую для процессора.
Микроконтроллеры
[ редактировать ]Микроконтроллеры (микропроцессоры со значительным встроенным аппаратным обеспечением ввода/вывода) могут использовать переключение банков, например, для доступа к нескольким регистрам конфигурации или встроенной памяти чтения/записи. Примером является микроконтроллер PIC . Это позволяет коротким командным словам экономить место во время обычного выполнения программы за счет дополнительных инструкций, необходимых для доступа к относительно редко используемым регистрам, например тем, которые используются для конфигурации системы при запуске.
IBM-ПК
[ редактировать ]В 1985 году компании Lotus и Intel представили расширенной памяти спецификацию (EMS) 3.0 для использования в IBM PC-совместимых компьютерах под управлением MS-DOS . Microsoft присоединилась к версиям 3.2 в 1986 году и 4.0 в 1987 году, и спецификация стала известна как Lotus-Intel-Microsoft EMS или LIM EMS. [6] [11] [12] Это форма метода переключения банков, которая позволяет использовать более 640 КБ ОЗУ, определенные исходной архитектурой IBM PC, позволяя ему появляться по частям в «окне» размером 64 КБ, расположенном в верхней области памяти . [13] 64 КБ разделены на четыре «страницы» по 16 КБ, каждую из которых можно переключать независимо. В некоторых компьютерных играх это использовалось, и хотя EMS устарела, в настоящее время эта функция эмулируется более поздними Microsoft Windows операционными системами для обеспечения обратной совместимости с этими программами.
Более поздняя спецификация расширенной памяти (XMS), также теперь устаревшая, представляет собой стандарт, в принципе, для моделирования переключения банков для памяти объемом более 1 МБ (называемой « расширенной памятью »), которая не адресуется напрямую в реальном режиме процессоров x86 в который работает под управлением MS-DOS. XMS позволяет копировать расширенную память в любое место в обычной памяти, поэтому границы «банков» не фиксированы, но во всех остальных отношениях это работает подобно переключению банков в EMS с точки зрения программы, которая ее использует. Более поздние версии MS-DOS (начиная с версии 5.0) включали драйвер EMM386, который имитирует память EMS с помощью XMS, позволяя программам использовать расширенную память, даже если они были написаны для EMS. Microsoft Windows также эмулирует XMS для тех программ, которые этого требуют.
Игровые консоли
[ редактировать ]Переключение банков также использовалось в некоторых игровых консолях . [14] Atari 2600 , например, могла адресовать только 4 КБ ПЗУ, поэтому более поздние игровые картриджи 2600 содержали собственное оборудование переключения банков, чтобы разрешить использование большего ПЗУ и, таким образом, обеспечить возможность создания более сложных игр (за счет большего количества программного кода и, в равной степени, (что важно, большие объемы игровых данных, таких как графика и различные этапы игры). [15] Nintendo Entertainment System содержала модифицированную 6502 , но ее картриджи иногда содержали мегабит или более ПЗУ, доступ к которому осуществлялся посредством переключения банков, называемого контроллером мультипамяти . В картриджах Game Boy использовался чип под названием MBC (контроллер банка памяти), который предлагал не только переключение банков ПЗУ, но и переключение банков картриджей SRAM и даже доступ к таким периферийным устройствам, как инфракрасные каналы связи или вибрирующие двигатели. Переключение банков все еще использовалось в более поздних игровых системах. Некоторые картриджи Sega Mega Drive , такие как Super Street Fighter II, имели размер более 4 МБ и требовали использования этого метода (4 МБ — максимальный размер адреса). Контроллер GP2X от Gamepark Holdings использует переключение банков для управления начальным адресом (или смещением памяти) для второго процессора.
Обработка видео
[ редактировать ]В некоторых типах компьютерных видеодисплеев соответствующая технология двойной буферизации для улучшения качества видео может использоваться . В этом случае, пока процессор обновляет содержимое одного набора ячеек физической памяти, аппаратное обеспечение генерации видео осуществляет доступ и отображает содержимое второго набора. Когда процессор завершит обновление, он может подать сигнал аппаратному обеспечению видеодисплея о необходимости поменять активные банки, чтобы переход, видимый на экране, не содержал артефактов или искажений. В этом случае процессор может иметь доступ ко всей памяти одновременно, но аппаратное обеспечение видеодисплея переключается между частями видеопамяти. Если два (или более) банка видеопамяти содержат несколько разные изображения, быстрое переключение (перелистывание страниц) между ними может создать анимацию или другие визуальные эффекты, которые в противном случае процессор мог бы быть слишком медленным для непосредственного выполнения.
Альтернативные и последующие методы
[ редактировать ]Переключение банков позже было вытеснено сегментацией во многих 16-битных системах , что, в свою очередь, уступило место страничной блокам управления памятью . Однако во встроенных системах переключение банков по-прежнему часто используется из-за его простоты, низкой стоимости и зачастую лучшей адаптации к этим контекстам, чем к вычислениям общего назначения.
См. также
[ редактировать ]- Боковое адресное пространство , пример переключения банка на BBC Micro
- Наложение (программирование)
Ссылки
[ редактировать ]- ^ Аспиналл, Д., изд. (1978). Микропроцессор и его применение: продвинутый курс . Архив Кубка. стр. 47–50. ISBN 0-521-22241-9 .
- ^ Белл, К. Гордон; Ньюэлл, Аллен (1971). Компьютерные структуры: чтения и примеры . МакГроу Хилл . стр. 156 .
- ^ «Контроль хранения». Control Data 160-A Руководство по компьютерному программированию (PDF) . CDC. Март 1963 г. с. 2-09. 145е.
- ^ Справочное руководство по компьютерной системе Control Data 3600 (PDF) . CDC. 60021300Е.
- ^ Хит, Стив (2003). Проектирование встраиваемых систем . Ньюнес. стр. 242 . ISBN 0-7506-5546-1 .
- ^ Jump up to: а б Мюллер, Скотт (1992). Модернизация и ремонт компьютеров (2-е изд.). Книги Que. стр. 699–700 . ISBN 0-88022-856-3 . Проверено 8 февраля 2020 г.
- ^ Гарланд, Гарри (март 1977 г.). «Инновации в дизайне персональных компьютеров» . Компьютер . 10 (3). IEEE Computer Society : 25. doi : 10.1109/cm.1977.217669 . S2CID 32243439 . Проверено 8 февраля 2020 г.
Восьмипозиционный DIP-переключатель на таких картах используется для выбора одного (или нескольких) из восьми банков памяти.
- ^ Гарланд, Гарри (1979). Введение в проектирование микропроцессорных систем . Книжная компания МакГроу-Хилл . п. 93 . ISBN 0-07-022871-Х . Проверено 8 февраля 2020 г.
При выборе банка памяти пространство памяти распределяется по нескольким отдельным банкам емкостью до 64 КБ каждый.
- ^ Хоган, Том (8 июня 1981 г.). «Share and Share Alike: объяснение многопользовательского оборудования» . Инфомир . Том. 3, нет. 11. с. 18 . Проверено 8 февраля 2020 г.
Cromemco была первым производителем микрокомпьютеров, который усовершенствовал и использовал переключение банков.
- ^ Фрайбергер, Пол (25 октября 1982 г.). «Digital Research предлагает обновление CP/M». Инфомир . п. 1.
- ^ «Новый 1-2-3 получает 4 мегабайта памяти, Lotus, Intel преодолевает барьер памяти DOS для ПК» . Инфомир . 29 апреля 1985 г.
- ^ «Обновление EMS улучшает многозадачность DOS». Инфомир . 17 августа 1987 г.
- ^ Росс, Пол В., изд. (1995). Справочник по программному обеспечению для инженеров и ученых . ЦРК Пресс . п. 26. ISBN 0-8493-2530-7 .
- ^ Синофски, Брайан (2002). Кэри, Чарльз В. (ред.). Американские изобретатели, предприниматели и бизнес-провидцы . Издание информационной базы . стр. 322–324 . ISBN 0-8160-4559-3 . Проверено 8 февраля 2020 г.
- ^ Гранд, Джо; Рассел, Райан; Митник, Кевин Д. (2004). Взлом оборудования: получайте удовольствие, аннулируя гарантию . Сингресс. стр. 229 . ISBN 1-932266-83-6 . Проверено 8 февраля 2020 г.
Внешние ссылки
[ редактировать ]- «История о переключении банков в Apple II» . Архивировано из оригинала 12 декабря 2020 г.
- «Что такое смена банков?» . 02.02.2024.