Иерархия шин
Если к шине подключено большое количество устройств, её пропускная способность падает, поскольку частая передача прав управления шиной от одного устройства к другому приводит к ощутимым задержкам. Это является главным недостатком построения ВМ на базе только системной шины. Хотя преимуществами такого подхода являются простота реализации и низкая стоимость. Примером организации ВМ с одной системной шиной может служить структура, представленная на рисунке 9.1, когда все блоки ВМ взаимодействуют друг с другом через системную шину.
Устройства ВМ обладают различным быстродействием: наиболее высокоскоростными из них являются процессор и память, да и ПУ также функционируют с разной скоростью. Для наиболее эффективного взаимодействия устройств в современных ВМ используется иерархия шин, которая, как отмечается в /18/, выражается в том, что более медленная шина соединена с более быстрой шиной. Например, на рисунке 9.2 приведена структура взаимосвязей с двумя шинами.
Шина «процессор-память» обеспечивает непосредственную связь между процессором и памятью ВМ. Интенсивный трафик между процессором и памятью требует, чтобы пропускная способность данной шины была наибольшей. Для этого шина «процессор-память» всегда проектируется с учётом особенностей организации системы памяти, а длина шины делается по возможности минимальной. В настоящее время данная шина может работать на частотах 100, 133, 150 МГц и выше.
Рисунок 9.2 – Структура взаимосвязей с двумя шинами
Шина ввода-вывода для соединения процессора и памяти с УВВ. Такие шины работают на низких (8 МГц, 10 МГц) или средних (33 МГц, 66 МГц) скоростях, содержат меньше линий по сравнению с шиной «процессор-память», но длина линий может быть весьма большой. В связи с большим разнообразием УВВ, шины ввода-вывода унифицируются и стандартизируются. Типичными примерами таких шин в современных универсальных ВМ, в т.ч., персональных компьютерах, могут служить шины ISA, PCI, AGP.
Шины ISA (Industry Standard Architecture – архитектура промышленного стандарта) и EISA (Extended ISA – расширенная архитектура промышленного стандарта) работают на частотах 8,3 МГц и 10 МГц, соответственно, и являются на данный момент самыми медленными. Они идеально подходят для соединения ВМ с медленными ПУ (мышью, модемом, низкоскоростными сетевыми адаптерами и т.п.). Шина PCI (Peripheral Component Interconnect - взаимодействие периферийных компонентов) служит для соединения процессора и памяти с высокоскоростными ПУ (например, контроллерами дисков) и работает на частоте 33 МГц. Для передачи большого объёма видеоинформации используется специальная шина AGP (Accelerated Graphic Port – ускоренный графический порт), которая стандартно работает на частоте 66 МГц, но может работать на частоте 133 МГц. Через AGP подключается видеокарта.
Рассмотренная схема организации взаимосвязей позволяет существенно снизить нагрузку на скоростную шину «процессор-память» и обеспечить её независимую работу от низкоскоростных ПУ.
ПУ могут группироваться по показателю быстродействия, например, в одну группу могут входить быстродействующие ПУ, в другую группу – более медленные ПУ. Таким образом, для их взаимодействия с вычислительным ядром ВМ необходимо несколько локальных шин ввода-вывода. Эти шины подключаются через блоки сопряжения к специальной высокоскоростной шине расширения, которая, в свою очередь, соединяется через блок сопряжения с шиной «процессор-память», как показано на рисунке 9.3.
Рисунок 9.3 – Трёхуровневая иерархия шин
Такая организация шин ещё более снижает нагрузку на шину «процессор-память», а кроме того, медленные ПУ не «тормозят» работу высокоскоростных ПУ. Такую организацию шин называют архитектурой с «пристройкой» или мезанинной архитектурой (mezzanine architecture).
Более подробно с описанием стандартов шин и их эволюцией можно ознакомиться в /2, 6, 7, 18/, а также в специальной документации.
Кроме рассмотренных выше архитектурных решений существует ещё несколько приёмов, позволяющих повысить производительность шин. Среди них, прежде всего, следует отметить пакетный режим, конвейеризацию и расщепление транзакций.
1) При пакетном режиме пересылки информации один адресный цикл сопровождается множеством циклов данных (либо чтения, либо записи, но не чередующимися). Таким образом, пакет данных передаётся без указания текущего адреса внутри пакета.
При записи в память последовательные элементы блока данных заносятся в последовательные ячейки. В пакетном режиме передаётся адрес только первой ячейки, а все последующие адреса генерируются уже в самой памяти путём последовательного увеличения начального адреса. Чаще всего размер пакета составляет 4 байта.
Недостатком пакетного режима является невозможность восстановления ошибок для частей пакета.
2) Конвейеризация транзакций заключается в том, что очередной элемент данных может быть отправлен устройством A до того, как устройство B завершит чтение предыдущего элемента.
3) В классическом варианте любая транзакция на шине неразрывна, то есть новая транзакция может начаться только после завершения предыдущей, причём в течение всего периода транзакции шина остаётся занятой. Расщепление транзакций осуществляется соответствующим протоколом и заключается в совмещении во времени нескольких транзакций, что эффективно на транзакциях чтения. Также, он требует, чтобы шины адреса и данных были независимыми.
Транзакция чтения разделяется на две части: адресную транзакцию и транзакцию данных. Считывание данных из памяти начинается с адресной транзакции. С приходом адреса память приступает к относительно длительному процессу поиска и извлечения затребованных данных. По завершении чтения память запрашивает доступ к шине и направляет считанные данные по шине данных. Фактически от момента поступления запроса до момента формирования отклика шина остаётся незанятой и может быть востребована для выполнения других транзакций.
Позволяя увеличить пропускную способность шины, протокол с расщеплением транзакций, вместе с тем, вносит дополнительную задержку из-за необходимости получать два подтверждения – при запросе и при отклике. Кроме того, реализация протокола связана с дополнительными затратами.
Рассмотрим организацию взаимодействия между ПУ и ядром ВМ.