В компьютерной системе различные подсистемы должны иметь взаимные интерфейсы. Например, память и процессор нуждаются в связи точно так же, как процессор и устройства ввода-вывода. Многие годы эта связь осуществлялась с помощью шины. Шина — это общий канал связи, использующий один набор проводников для соединения нескольких подсистем. Двумя основными преимуществами шинной организации являются универсальность и низкая стоимость. За счет определения единой схемы связи можно без особого труда добавлять новые устройства, а периферийные устройства можно даже перемещать между компьютерными системами, использующими один и тот же тип шины. Кроме того, шины рентабельны, поскольку один и тот же набор проводников используется совместно сразу несколькими способами.
Основной недостаток шины заключается в том, что она создает для связи узкое место, которое может ограничить максимальную пропускную способность ввода-вывода. Когда ввод-вывод должен проходить через единственную шину, пропускная способность этой шины ограничивает максимальную пропускную способность ввода-вывода. Разработка шинной системы, способной отвечать потребностям процессора. а также подключать к машине большое количество устройств ввода-вывода. представляет собой весьма трудную задачу.
Шины традиционно подразделяются на шины процессор-память и шины ввода-вывода. Шины процессор-память имеют небольшую протяженность, как правило, высокую скорость передачи данных и согласуются с системой памяти для обеспечения максимальной пропускной способности по маршруту «память-процессор». В отличие от них, шины ввода-вывода могут быть длиннее, иметь большее разнообразие типов подключенных к ним устройств и часто работают с широким диапазоном пропускной способности этих устройств. Шины ввода-вывода обычно не имеют прямого интерфейса с памятью, но используют для подключения к памяти шину процессор-память либо монтажную шину (backplane bus). Появлялись и другие специализированные шины, например графические, имеющие различные характеристики.
Одной из причин трудности разработки шины является то, что максимальная скорость шины во многом ограничена физическими факторами: длиной шины и количеством устройств. Эти физические ограничения не дают запустить шину с произвольной скоростью. Кроме того, разработка шин усложняется необходимостью поддержки широкого спектра устройств с сильно отличающейся латентностью и пропускной способностью.
Из-за трудностей запуска передачи данных на высокой скорости по множеству параллельных проводников, вызванных расфазировкой и отражением сигналов, промышленность перешла от параллельных общих шин к высокоскоростным последовательным двухточечным соединениям с коммутаторами.
Очевидно, что эта терминология может сбить с толку. Чтобы избежать этою, мы попробуем использовать понятия ввод и вывод, всегда определяемые с позиции процессора: операция ввода осуществляет ввод данных из устройства в память, где процессор может их прочитать, а операция вывода занимается выводом данных в устройство из памяти, куда процессор их записывает.
Соединения ввода-вывода служат в качестве способа расширения машины и подключения новых периферийных устройств. Для облегчения этих соединений компьютерная промышленность разработала несколько стандартов. Эти стандарты служат в качестве технических характеристик дня производителей компьютеров, а также для производителей периферийных устройств. Стандарт гарантирует разработчику компьютера, что периферийные устройства будут доступны новой машине, а создателю периферийных устройств — что пользователи смогут подключить свое новое оборудование.
Традиционные шины являются синхронными. Это означает, что шина имеет в цепях управления тактовый генератор и использует дня связи фиксированный протокол, зависящий от тактовых импульсов. Например, для осуществления чтения из памяти может использоваться протокол, согласно которому в течение первого тактового цикла передается адрес и команда чтения и используются линии управления для обозначения типа запроса. Затем в течение пятого тактового цикла от памяти может быть запрошен ответ в виде слова данных. Протокол такого типа может быть легко реализован в виде небольшого конечного автомата. Поскольку протокол уже предопределен и привлекает лишь небольшое количество логических операций, шина может работать на высокой скорости, а логический блок интерфейса – иметь небольшие размеры.