Buster
Материал из Amiga wikipedia.
Buster - контроллер шины Zorro. Ведает операциями ввода-вывода и арбитражем шины для Zorro II и Zorro III (в поздних версиях).
(Dave Haynie)
Хотя с виду это один и тот же чип, на самом деле существуют два Buster - Level I и Level II. Buster первой версии (до Rev.7) стоит во всех машинах семейства A3000, и НЕ ПОДДЕРЖИВАЕТ других bus mаsters на Zorro III. Можете даже не пробовать. В какой-то момент проектирования A3000 мне пришлось выбирать между добавлением новых фич в Zorro III (я разработал целиком спецификацию прежде чем изготовить чипы) и совместимостью с Zorro II.
Zorro II заковыристая штука - по сути, там эмуляция шины 68000, и некоторые моменты взаимодействия между протоколом 68k и живым Zorro II железом были не из тех, что можно было легко предвидеть в начале пути. Добавьте к этому то, что менеджмент Commodore даже не заикался об улучшениях шины расширения A3000 (это все мои идеи), и станет ясно, откуда росли ноги у Level I.
Чип Level II (примерно вдвое больше вентилей, чем в первом) вышел в двух ревизиях: Rev.9, вначале поставлявшаяся с A4000, и Rev.11, лучшая из всех возможных. В Rev.9 есть два бага, которые могут вызвать проблемы с платами Zorro III. Первый баг может сказаться на определенного типа bus slave картах, в зависимости от их дизайна. Вызвано это небольшим косяком в стадии синхронизации чипа Level II (Level II реализует чуть более быструю версию протокола шины, чем Level I, и к тому же подерживает burst). Второй баг - косяк в арбитре шины Zorro III; там маленькое окно, в котором только начинающийся slave цикл Zorro III может быть принят за команду регистрации на шине, что приведет к блокировке шины. Rev.11 решает обе проблемы, так что для DMA устройств он необходим. Проблемы с Rev.9 довольно хорошо изучены, так что некоторое количество устройств умеет их обходить.
I didn't for the A4091 -- at the time, C= probably wouldn't have let me do the Rev 11 chip if the A4091 could have worked at all in existing A4000s. A3000s use the Level I Buster, never intended to work with something like the A4091.
Rev.11 отлично работает в A3000, и даже устраняет race condition между Gary и chip шиной, что могло приводить к сбоям памяти во время DMA пересылок из Zorro II в Chip RAM.
Большой проблемой при тестировании Buster было отсутствие каких-либо Zorro III карт. В самом начале работы я сделал плату памяти, которая поддерживала slave доступ и даже burst, хотя Buster, который бы этот самый burst умел, появился у меня только год спустя.
Следующая тестовая плата делалась для мультипроцессорного проекта. Названная "Gemini", плата служила для проверки остальных возможностей Level II: арбитража шины, bus mastering, Quick Interrupts и так далее. К несчастью, я делал ее на основе Buster (в Buster Level II есть секретный режим работы, превращающий его из контроллера материнской платы в контроллер периферийной платы). Но в тот год (1991) CSG переходила от использования channeled gate arrays к sea-of-gates технологии, и первые их чипы работали на скорости что-то около 1/4 плановой. Шесть месяцев спустя у меня уже были не только быстрые чипы, но и новое начальство (Engineering Administration), которое видело в Gemini то ли левый исследовательский проект, то ли нечто, оставшееся от предыдущей администрации. Так что никаких значительных копаний с Zorro III уже не было до выпуска A4000.
Честно сказать, проект Zorro III был слишком большим для одного укуса. Когда PC индустрия выкатывала EISA, там были заняты сотни людей: одни ковали спеки, другие проектировали чипы, тестировали и т.д. В Commodore же практически всю историю Zorro III ею занимался один только я.
A4091 не работает с Buster уровня Level I. Кроме того, если у вас A4091 из старых, OS2.04 или SuperKickStart могут не дать ей запуститься; нужны ROM 3.0 или 3.1. И еще такая техническая деталь - Zorro III не использует clock. Тайминги в Z3 базируются на clock от материнской платы, но собственно протокол шины является асинхронным.
