Введение
Стандарт компьютерной шины GIO — это стандарт компьютерной шины, разработанный SGI и использовавшийся в различных их продуктах в 1990-х годах как основная система расширения. GIO был схож по концепции с конкурирующими стандартами, такими как NuBus или (впоследствии) PCI, но получил ограниченное распространение за пределами SGI, что существенно ограничило выбор устройств для их платформы. Большинство устройств, использующих GIO, были графическими картами собственной разработки SGI, хотя сторонние производители предлагали ряд карт с поддержкой высокоскоростного доступа к данным, например Fibre Channel и FDDI. В более поздних моделях SGI использовалась шина XIO, которая организована как компьютерная сеть, а не как шина.
GIO is a computer bus standard developed by SGI and used in a variety of their products in the 1990s as their primary expansion system. GIO was similar in concept to competing standards such as NuBus or (later) PCI, but saw little use outside SGI and severely limited the devices available on their platform as a result. Most devices using GIO were SGI's own graphics cards, although a number of cards supporting high speed data access such as Fibre Channel and FDDI were available from third parties. Later SGI machines use the XIO bus, which is laid out as a computer network as opposed to a bus.
Описание
Как и большинство шин того времени, GIO была 32-битной шиной с мультиплексированием адреса и данных, обычно работающей на частоте 25 или 33 МГц. Это означало, что шина использовала один и тот же канал для адресации и передачи данных, что обычно требовало трех циклов для передачи одного 32-битного значения: один цикл для отправки адреса, следующий – для отправки данных, и еще один – для чтения или записи. Это ограничивало максимальную пропускную способность шины примерно 16 Мбайт/с при 33 МГц для подобных небольших передач. Однако система также поддерживала режим чтения/записи с длительными блоками, который позволял непрерывную передачу до 4 килобайт данных (базовый размер страницы в машинах SGI на базе R3000); использование этого режима значительно увеличивало пропускную способность до 132 Мбайт/с (32 бита за цикл * 33 МГц). GIO также включала аппаратное прерывание «в реальном времени», позволяющее устройствам прерывать длительные передачи при необходимости. Арбитраж шины контролировался контроллером интерфейса процессора (PIC) в оригинальных системах SGI Indigo на базе R3000. Физически GIO использовала 96-контактный разъем и относительно небольшие платы размером 6,44 дюйма (16,3576 см) в длину и 3,375 дюйма (8,5725 см) в ширину. В серии Indigo платы располагались вертикально друг над другом внутри корпуса, в отличие от более распространенной схемы, при которой платы устанавливаются под прямым углом к материнской плате. Это привело к созданию корпуса «высокого и узкого» типа. Поскольку платы располагались друг над другом в линию, можно было создать плату, которая подключалась к обоим разъемам на материнской плате компьютера, тем самым обеспечивая больше пространства.
GIO64
Позже GIO был расширен до 64-битного формата, GIO64, с ретроактивным переименованием более ранней версии в GIO32. Адресация оставалась 32-битной, но теперь поддерживала как порядок байтов big endian, так и little endian, определяемый новым управляющим сигналом, в то время как GIO32 поддерживал только адреса big endian в стиле SGI. Данные теперь могли передаваться блоками по 64 бита, что удваивало скорость. GIO64 также мог работать быстрее, чем GIO32, до 40 МГц, обеспечивая максимальную пропускную способность потока данных в 320 Мбайт/с. Размеры страниц также были скорректированы с учетом изменяющихся процессоров, начиная с 4 Кбайт для машин на базе R3000 и до 16 Мбайт для машин на базе R4400. Физически шина GIO64 использовала значительно более крупные платы, которые по размеру и компоновке были в основном похожи на платы EISA, что было преднамеренным решением, облегчавшим разработку и позволявшим SGI размещать слоты EISA в тех же машинах. В частности, внешний разъем (металлический фланец) был идентичен EISA, но форма самой платы немного отличалась. Было определено две версии GIO64. Система "без конвейера" работала аналогично GIO32, с настройкой передачи данных непосредственно на шине. Более новая "конвейерная" система использовалась на реальных платах и, как следует из названия, настраивала передачу в несколько этапов, которые декодировались во внутреннем конвейере контроллера. Внутри шина без конвейера передавала данные между различными частями компьютера, включая платы GIO, устройства EISA, SCSI и так далее. Платы GIO использовали конвейерный контроллер для арбитража и управления синхронизацией, после чего данные поступали в основную память через внутреннюю сторону без конвейера.
GIO32-bis
Третий стандарт, GIO32 bis, использовал сигналы и временные характеристики GIO64, но с 32-битными разъемами от GIO32. Корректно спроектированные карты GIO32 bis можно было использовать в слотах GIO64, GIO32 или GIO32 bis, при этом последние два стандарта можно было различить по контакту, подключенному к земле в оригинальном GIO32 и подключенному к питанию в GIO32 bis. Для карт с низкой пропускной способностью GIO32 bis позволял использовать одно устройство на любом компьютере, поддерживающем GIO, независимо от его поколения.