Autoconfig
Autoconfig — это протокол автоматической конфигурации, используемый в компьютерах Amiga, предназначенный для автоматического назначения ресурсов устройствам расширения без необходимости ручной установки джамперов[1]. По принципу работы аналогичен конфигурации PCI через интерфейс Advanced Configuration and Power Interface — ACPI[2][3].
Autoconfig интегрирован в прошивку Kickstart компьютеров Amiga, которая обычно хранится в ПЗУ. После включения системы AmigaOS опрашивает каждое устройство расширения и по мере необходимости выделяет ему адресное пространство или другие ресурсы. Например, в случае карты памяти, система может динамически добавить предоставленную память. Через Autoconfig ОС способна получить доступ к программному обеспечению (firmware) устройств расширения, например, для загрузки с диска, подключенного к контроллеру жёсткого диска.
Протокол
Устройства расширения отвечают на определённые фиксированные адреса памяти, начиная с шестнадцатеричного 0xE8 0000 (или 0xFF00 0000 для Zorro III), если сигнал /CFGIN активен и устройство ещё не настроено. Центральный процессор считывает коды (нибблы) конфигурационной информации (обычно задаются с помощью ПЛМ), такие как идентификатор производителя (manufacturer ID), идентификатор продукта (product ID) и необходимый объём адресного пространства. Затем процессор записывает базовый адрес памяти в устройство (или сигнализирует, чтобы оно «замолчало», если конфигурировать его невозможно), после чего устройство посылает сигнал /CFGOUT.
Сигнал /CFGIN первого устройства соединён с землёй. Сигнал /CFGIN второго устройства контролируется сигналом /CFGOUT первого устройства и так далее.
В конструкциях с бэкплейном (например, Amiga 2000), если соединять сигнал /CFGOUT одного слота напрямую с /CFGIN следующего, то незанятый слот мог бы прервать цепь автоконфигурирования. Для решения этой проблемы бэкплейн объединяет сигналы /CFGIN и /CFGOUT по логической операции ИЛИ, чтобы сформировать /CFGIN для следующего слота (сигнал /CFGOUT по умолчанию подтягивается к низкому уровню, если не используется), что позволяет обходить незанятые слоты. Для этого в Amiga 2000 требуется одна микросхема 74LS32 (четыре «ИЛИ»-элемента) — это единственное оборудование, необходимое на материнской плате для работы Autoconfig[4].
Аппаратные спецификации и системная шина
Autoconfig является частью спецификации шин расширения Zorro II и Zorro III, определяющих процесс настройки устройств расширения в системах Amiga. Zorro II впервые применялась в Amiga 2000, хотя аналогичная шина есть и в Amiga 1000. Zorro II — это относительно простое расширение шины 68000[5]. Для работы Autoconfig требуется, чтобы шина данных и адреса процессора 68000 была доступна для всех устройств на шине. Теоретически внедрение виртуальной адресации, как в PCI, потребовало бы небольших изменений в Autoconfig.
Amiga 2000 поддерживает до пяти карт расширения Zorro, таких как расширения ОЗУ, SCSI-контроллеры и видеокарты. Однако стандарт не ограничивает общее количество устройств. В A2000 два слота Zorro II совмещены со слотами ISA. Соединение шин Zorro и ISA возможно с помощью «bridgeboard» — платы вроде Janus Hardware Emulator, которая позволяет эмулировать системы Intel 80286 или 80386[5].
Шина Zorro III — это 32-разрядная автонастраиваемая шина расширения, применяемая в Amiga 3000 и Amiga 4000[6]. Начиная с модели A3000, было решено, что все расширения, подлежащие сканированию системой, должны использовать Autoconfig. В AmigaOS 3.1 стандарт был принят — оборудование без поддержки Autoconfig допускается к игнорированию со стороны ОС.


