19339

АРБИТРАЖ ШИН

Лекция

Информатика, кибернетика и программирование

АК ЛЕКЦИЯ № 16 АРБИТРАЖ ШИН В реальных системах на роль ведущего вправе одновременно претендовать сразу несколько из подключенных к шине устройств однако управлять шиной в каждый момент времени может только одно из них. Чтобы исключить конфликты шина должна предус...

Русский

2013-07-11

163.5 KB

41 чел.

АК ЛЕКЦИЯ № 16 АРБИТРАЖ ШИН

В реальных системах на роль ведущего вправе одновременно претендовать сразу несколько из подключенных к шине устройств, однако управлять шиной в каждый момент времени может только одно из них. Чтобы исключить конфликты, шина должна предусматривать определенные механизмы арбитража запросов и правила предоставления шины одному из запросивших устройств. Решение обычно принимается на основе приоритетов претендентов.

Схемы приоритетов

Каждому потенциальному ведущему присваивается определенный уровень приоритета, который может оставаться неизменным (статический или фиксированный приоритет) либо изменяться по какому-либо алгоритму (динамический приоритет).

Основной недостаток статических приоритетов в том, что устройства, имеющие высокий приоритет, в состоянии полностью блокировать доступ к шине устройств с низким уровнем приоритета. Системы с динамическими приоритетами дают шанс каждому из запросивших устройств рано или поздно получить право на управление шиной, то есть в таких системах реализуется принцип равнодоступности.

Наибольшее распространение получили следующие алгоритмы динамического изменения приоритетов:

• простая циклическая смена приоритетов;

• циклическая смена приоритетов с учетом последнего запроса;

• смена приоритетов по случайному закону;

• схема равных приоритетов;

• алгоритм наиболее давнего использования.

В алгоритме простой циклической смены приоритетов после каждого цикла арбитража все приоритеты понижаются на один уровень, при этом устройство, имевшее ранее низший уровень приоритета, получает наивысший приоритет.

В схеме циклической смены приоритетов с учетом последнего запроса все возможные запросы упорядочиваются в виде циклического списка. После обработки очередного запроса обслуженному ведущему назначается низший уровень приоритета. Следующее в списке устройство получает наивысший приоритет, а остальным устройствам приоритеты назначаются в убывающем порядке, согласно их следованию в циклическом списке.

В обеих схемах циклической смены приоритетов каждому ведущему обеспечивается шанс получить шину в свое распоряжение, однако большее распространение получил второй алгоритм.

При смене приоритетов по случайному закону после очередного цикла арбитража с помощью генератора псевдослучайных чисел каждому ведущему присваивается случайное значение уровня приоритета.

В схеме равных приоритетов при поступлении к арбитру нескольких запросов каждый из них имеет равные шансы на обслуживание. Возможный конфликт разрешается арбитром. Такая схема принята в асинхронных системах.

В алгоритме наиболее давнего использования (LRU, Least Recently Used) после каждого цикла арбитража наивысший приоритет присваивается ведущему, который дольше чем другие не использовал шину.

Помимо рассмотренных существует несколько алгоритмов смены приоритетов, которые не являются чисто динамическими, поскольку смена приоритетов происходит не после каждого цикла арбитража. К таким алгоритмам относятся:

• алгоритм очереди (первым пришел — первым обслужен);

• алгоритм фиксированного кванта времени.

В алгоритме очереди запросы обслуживаются в порядке очереди, образовавшейся к моменту начала цикла арбитража. Сначала обслуживается первый запрос в очереди, то есть запрос, поступивший раньше остальных. Аппаратурная реализация алгоритма связана с определенными сложностями, поэтому используется он редко.

В алгоритме фиксированного кванта времени каждому ведущему для захвата шины в течение цикла арбитража выделяется определенный квант времени. Если ведущий в этот момент не нуждается в шине, выделенный ему квант остается не использованным. Такой метод наиболее подходит для шин с синхронным протоколом.

Схемы арбитража

Арбитраж запросов на управление шиной может быть организован по централизованной или децентрализованной схеме. Выбор конкретной схемы зависит от требований к производительности и стоимостных ограничений.

Централизованный арбитраж

При централизованном арбитраже в системе имеется специальное устройство — центральный арбитр, — ответственное за предоставление доступа к шине только одному из запросивших ведущих. Это устройство, называемое иногда центральным контроллером шины, может быть самостоятельным модулем или частью ЦП.

Наличие на шине только одного арбитра означает, что в централизованной схеме имеется единственная точка отказа. В зависимости от того, каким образом ведущие устройства подключены к центральному арбитру, возможные схемы централизованного арбитража можно подразделить на параллельные и последовательные.

В параллельном варианте центральный арбитр связан с каждым потенциальным ведущим индивидуальными двухпроводными трактами. Поскольку запросы к центральному арбитру могут поступать независимо и параллельно, данный вид арбитража называют централизованным параллельным арбитражем или централизованным арбитражем независимых запросов.

При наличии большого числа источников запроса центральный арбитр может строиться по схеме двухуровневого параллельного арбитража. Все возможные запросы разбиваются на группы, и каждая группа анализируется своим арбитром первого уровня. Каждый арбитр первого уровня выбирает запрос, имеющий в данной группе наивысший приоритет. Арбитр второго уровня отдает предпочтение среди арбитров первого уровня, обнаруживших запросы на шину, тому, который имеет более высокий приоритет. Если количество возможных запросов очень велико, могут вводиться дополнительные уровни арбитража.

Схема централизованного параллельного арбитража очень гибка — вместо статических приоритетов допускается использовать любые варианты динамической смены приоритетов. Благодаря наличию прямых связей между центральным арбитром и ведущими схема обладает высоким быстродействием, однако именно непосредственные связи становятся причиной повышенной стоимости реализации. В параллельных схемах затруднено подключение дополнительных устройств.

Обычно максимальное число ведущих при параллельном арбитраже не превышает восьми. У схемы есть еще один существенный недостаток — сигналы запроса и подтверждения присутствуют только на индивидуальных линиях и не появляются на общих линиях шины, что затрудняет диагностику.

Второй вид централизованного арбитража известен как централизованный последовательный арбитраж. В последовательных схемах для выделения запроса с наивысшим приоритетом используется один из сигналов, поочередно проходящий через цепочку ведущих, чем и объясняется другое название — цепочечный или гирляндный арбитраж. В дальнейшем будем полагать, что уровни приоритета ведущих устройств в цепочке понижаются слева направо.

В зависимости от того, какой из сигналов используется для целей арбитража, различают три основных типа схем цепочечного арбитража: с цепочкой для сигнала предоставления шины, с цепочкой для сигнала запроса шины (ЗШ) и с цепочкой для дополнительного сигнала разрешения (РШ). Наиболее распространена схема цепочки для сигнала ПШ (рис. 4.12).

Рис. 4.12. Централизованный последовательный арбитраж с цепочкой для сигнала

предоставления шины

Запросы от ведущих объединяются на линии запроса шины по схеме «монтажного ИЛИ». Аналогично организована и линия, сигнализирующая о том, что шина в данный момент занята одним из ведущих. Когда один или несколько ведущих выставляют запросы, эти запросы транслируются на вход центрального арбитра.

Получив сигнал ЗШ, арбитр анализирует состояние линии занятия шины, и если шина свободна, формирует сигнал ПШ. Сигнал предоставления шины последовательно переходит по цепочке от одного ведущего к другому. Если устройство, на которое поступил сигнал ПШ, не запрашивало шину, оно просто пропускает сигнал дальше по цепочке. Когда ПШ достигнет самого левого из запросивших ведущих, последний блокирует дальнейшее распространение сигнала ПШ по цепочке и берет на себя управление шиной.

Еще раз отметим, что очередной ведущий не может приступить к управлению шиной до момента ее освобождения. Центральный арбитр не должен формировать сигнал ПШ вплоть до этого момента.

Цепочечная реализация предполагает статическое распределение приоритетов. Наивысший приоритет имеет ближайшее к арбитру ведущее устройство (устройство, на которое арбитр выдает сигнал ПШ). Далее приоритеты ведущих в цепочке последовательно понижаются.

Основное достоинство цепочечного арбитража заключается в простоте реализации и в малом количестве используемых линий. Последовательные схемы арбитража позволяют легко наращивать число устройств, подключаемых к шине.

Схеме тем не менее присущи существенные недостатки. Прежде всего, последовательное прохождение сигнала по цепочке замедляет арбитраж, причем время арбитража растет пропорционально длине цепочки. Статическое распределение приоритетов может привести к полному блокированию устройств с низким уровнем приоритета (расположенных в конце цепочки). Наконец, как и параллельный вариант, централизованный последовательный арбитраж не очень удобен в плане диагностики работы шины.

Децентрализованный арбитраж

При децентрализованном или распределенном арбитраже единый арбитр отсутствует. Вместо этого каждый ведущий содержит блок управления доступом к шине, и при совместном использовании шины такие блоки взаимодействуют друг с другом, разделяя между собой ответственность за доступ к шине. По сравнению с централизованной схемой децентрализованный арбитраж менее чувствителен к отказам претендующих на шину устройств.

Для большинства шин характерна следующая организация децентрализованного арбитража. Такие схемы предполагают наличие в составе шины группы арбитражных линий, организованных по схеме «монтажного ИЛИ». Это позволяет любому ведущему видеть сигналы, выставленные остальными устройствами. Каждому ведущему присваивается уникальный номер, совпадающий с кодом уровня приоритета данного ведущего. Запрашивающие шину устройства выдают на арбитражные линии свой номер. Каждый из запросивших ведущих, обнаружив на арбитражных линиях номер устройствах более высоким приоритетом, снимает с этих линий младшие биты своего номера. В конце концов на арбитражных линиях остается только номер устройства, обладающего наиболее высоким приоритетом. Победителем в процедуре арбитража становится ведущий, опознавший на арбитражных линиях свой номер. Подобная схема известна также как распределенный арбитраж с самостоятельным выбором, поскольку ведущий сам определяет, стал ли он победителем в арбитраже, то есть выбирает себя самостоятельно.

Чтобы исключить постоянное блокирование ведущих, обладающих низким приоритетом, схему впоследствии модернизировали, дополнив ее модулем равнодоступности (fairness module). Модуль запрещает выигравшему ведущему выдавать новые запросы до завершения обслуживания всех ожидающих запросов. Следует отметить, что это не гарантирует, а только помогает каждому ведущему получить право на управление шиной.

В целом схемы децентрализованного арбитража потенциально более надежны, поскольку отказ контроллера шины в одном из ведущих не нарушает работу с шиной на общем уровне. Тем не менее должны быть предусмотрены средства для обнаружения неисправных контроллеров, например на основе тайм-аута. Основной недостаток децентрализованных схем — в относительной сложности логики арбитража, которая должна быть реализована в аппаратуре каждого ведущего.

В некоторых ВМ применяют комбинированные последовательно-параллельные схемы арбитража, в какой-то мере сочетающие достоинства обоих методов.

Здесь все ведущие разбиваются на группы. Арбитраж внутри группы ведется по последовательной схеме, а между группами — по параллельной.

Опросные схемы арбитража

В опросных методах запросы только фиксируются, и контроллер шины способен узнать о них, лишь опросив ведущих. Опрос может быть как централизованным — с одним контроллером, производящим опрос, так и децентрализованным — с несколькими контроллерами шины.

Данный механизм использует специальные линии опроса между контроллером (контроллерами) шины и ведущими — по одной линии для каждого ведущего.

С целью уменьшения числа таких линий может формироваться номер запрашивающего ведущего, для чего вместо 2n достаточно п линий. Кроме того, используются также линии запроса шины и линия сигнала занятия шины.

Централизованный опрос

Централизованный опрос иллюстрирует рис. 4.15.

Контроллер шины последовательно опрашивает каждое ведущее устройство на предмет, находится ли оно в ожидании предоставления шины. Для этого контроллер выставляет на линии опроса адрес соответствующего ведущего. Если в момент выставления адреса ведущий ожидает разрешения на управление шиной, то он, распознав свой адрес, сигнализирует об этом, делая активной шину (ЗШ). Обнаружив сигнал, контроллер разрешает ведущему использовать шину. Последовательность опроса ведущих может быть организована в порядке убывания адресов, либо меняться в соответствии с алгоритмом динамического приоритета.

Децентрализованный опрос

Организация децентрализованного опроса показана на рис. 4.16.

Каждый ведущий содержит контроллер шины, состоящий из дешифратора адреса и генератора адреса. В начале опросной последовательности формируется адрес, который распознается контроллером. Если соответствующий ведущий ожидает доступа к шине, он вправе теперь ее занять. По завершении работы с шиной контроллер текущего ведущего генерирует адрес следующего ведущего, и процесс повторяется. При такой схеме обычно требуется применять систему с квитированием, использующую сигнал ЗШ, формируемый генератором адреса, и сигнал ПШ, генерируемый дешифратором адреса.

При децентрализованном опросе отказ в одной из точек приводит к отказу всей системы арбитража. Такая ситуация, впрочем, может быть предотвращена с помощью механизма тайм-аута: по истечении заданного времени функции отказавшего контроллера берет на себя следующий контроллер.

Протокол шины

Выставляя на шину адрес, ведущее устройство все его биты выдает на линии параллельно, что совсем не гарантирует их одновременного поступления к ведомому, устройству. Отдельные биты адреса могут преодолевать более длинный путь, другие — предварительно должны пройти через аппаратуру преобразования адресов процессора в адреса шины. Кроме того, отличия есть и в характеристиках отдельных сигнальных линий, драйверов и приемников. Рассмотренная ситуация, как уже отмечалось, называется перекосом сигналов. Прежде чем реагировать на поступивший адрес, все ведомые должны знать, с какого момента его можно считать достоверным.

Ситуация с передачей данных еще сложнее, так как данные могут пересылаться в обоих направлениях. В транзакции чтения имеет место задержка на время, пока ведомое устройство ищет затребованные данные, и ведомый должен каким-то образом известить о моменте, когда данные можно считать достоверными. Система должна предусматривать возможный перекос данных.

Метод, выбираемый проектировщиками шин для информирования о достоверности адреса, данных, управляющей информации и информации состояния, называется протоколом шины. Используются два основных класса протоколов — синхронный и асинхронный. В синхронном протоколе все сигналы ≪привязаны≫ к импульсам единого генератора тактовых импульсов (ГТИ). В асинхронном протоколе для каждой группы линий шины формируется свой сигнал подтверждения достоверности. Хотя в каждом из протоколов можно найти как синхронные, так и асинхронные аспекты, различия все же весьма существенны.

Синхронный протокол

В синхронных шинах имеется центральный генератор тактовых импульсов (ГТИ), к импульсам которого “привязаны” все события на шине. Тактовые импульсы (ТИ) распространяются по специальной сигнальной линии и представляют собой регулярную последовательность чередующихся единиц и нулей. Один период такой последовательности называется тактовым периодом шины. Именно он определяет минимальный квант времени на шине (временной слот). Все подключенные к шине устройства могут считывать состояние тактовой линии, и все события на шине отсчитываются от начала тактового периода. Изменение управляющих сигналов на шине обычно совпадает с передним или задним фронтом тактового импульса, иными словами, момент смены состояния на синхронной шине известен заранее и определяется тактовыми импульсами.

Стартовый сигнал отмечает присутствие на линиях шины адресной или управляющей информации. Когда ведомое устройство распознает свой адрес и находит затребованные данные, оно помещает эти данные и информацию о состоянии на шину и сигнализирует об их присутствии на шине сигналом подтверждения.

Операция записи выглядит сходно. Отличие состоит в том, что данные выдаются ведущим в тактовом периоде, следующем за периодом выставления адреса, и остаются на шине до отправки ведомым сигнала подтверждения и информации состояния.

Отметим, что в каждой транзакции присутствуют элементы чтения и записи, и для каждого направления пересылки имеется свой сигнал подтверждения достоверности информации на шине. Сигналы управления и адрес всегда перемещаются от ведущего. Информация состояния всегда поступает от ведомого. Данные могут перемещаться в обоих направлениях.

Хотя скорость распространения сигналов в синхронном протоколе явно не фигурирует, она должна учитываться при проектировании шины. ТИ обычно распространяются вдоль шины с обычной скоростью прохождения сигналов, и за счет определенных усилий и затрат можно добиться практически одновременной доставки ТИ к каждому разъему шины. Выбираться тактовая частота должна таким образом, чтобы сигнал от любой точки на шине мог достичь любой другой точки несколько раньше, чем завершится тактовый период, то есть шина должна допускать расхождение в моментах поступления тактовых импульсов. Ясно, что более короткие шины могут быть спроектированы на более высокую тактовую частоту.

Синхронные протоколы требуют меньше сигнальных линий, проще для понимания, реализации и тестирования. Поскольку для реализации синхронного протокола практически не требуется дополнительной логики, эти шины могут быть быстрыми и дешевыми. С другой стороны, они менее гибки, поскольку привязаны к конкретной максимальной тактовой частоте и, следовательно, к конкретному уровню технологии. По этой причине существующие шины часто не в состоянии реализовать потенциал производительности подключаемых к себе новых устройств.

Кроме того, из-за проблемы перекоса синхросигналов синхронные шины не могут быть длинными.

По синхронному протоколу обычно работают шины «процессор-память».

Асинхронный протокол

Синхронная передача быстра, но в ряде ситуаций не подходит для использования. В частности, в синхронном протоколе ведущий не знает, корректно ли ответил ведомый, — возможно, он был не в состоянии удовлетворить запрос на нужные данные. Более того, ведущий должен работать со скоростью самого медленного из участвующих в пересылке данных ведомых. Обе проблемы успешно решаются в асинхронном протоколе шины.

В асинхронном протоколе начало очередного события на шине определяется не тактовым импульсом, а предшествующим событием и следует непосредственно за этим событием. Каждая совокупность сигналов, помещаемых на шину, сопровождается соответствующим синхронизирующим сигналом, называемым стробом.

Синхросигналы, формируемые ведомым, часто называют квитирующими сигналами (handshakes) или подтверждениями сообщения (acknowledges).

Сначала ведущее устройство выставляет на шину адрес и управляющие сигналы и выжидает время перекоса сигналов, после чего выдает строб адреса, подтверждающий достоверность информации. Ведомые следят за адресной шиной, чтобы определить, должны ли они реагировать. Ведомый, распознавший на адресной шине свой адрес, отвечает информацией состояния, сопровождаемой сигналом подтверждения адреса. Когда ведущий обнаруживает подтверждение адреса, он знает, что соединение установлено, и готов к анализу информации состояния. Присутствие адреса на ША далее не требуется, поскольку у ведомого уже имеется копия полного адреса либо нужной его части.

Далее ведущий меняет управляющую информацию, выжидает время перекоса и выдает строб данных. Если это происходит в транзакции записи, то ведущий одновременно с управляющей информацией выставляет на шину записываемые данные. В рассматриваемом случае управляющая информация извещает ведомое устройство, что это чтение. Когда ведомый подготовит затребованные данные, он выдает их на шину совместно с новой информацией о состоянии и формирует сигнал подтверждения данных. Когда ведущий видит сигнал подтверждения данных, он читает данные с шины и снимает строб данных, чтобы показать, что действия с данными завершены. В нашем примере ведущий снимает также и строб адреса.

В более сложных вариантах транзакций строб адреса может оставаться на шине для поддержания соединения в течение нескольких циклов данных. Обнаружив исчезновение строба данных, ведомый снимает с шины данные и информацию состояния, а также сигнал подтверждения данных, переводя шину в свободное состояние.

В цикле асинхронной шины для подтверждения успешности транзакции используется двунаправленный обмен сигналами управления. Такая процедура носит название квитирования установления связи или рукопожатия (handshake).

В рассмотренном варианте процедуры ни один шаг в передаче данных не может начаться, пока не завершен предыдущий шаг. Такое квитирование известно как квитирование с полной взаимоблокировкой (fully interlocked handshake).

Как и в синхронных протоколах, в любой асинхронной транзакции присутствуют элементы чтения и записи: по отношению к управляющей информации выполняется операция записи, а к информации состояния — чтения. Данные синхронизируются и управляются, соответственно, как управляющая и статусная информация.

Скорость асинхронной пересылки данных диктуется ведомым, поскольку ведущему для продолжения транзакции приходится ждать отклика. Асинхронные протоколы по своей сути являются самосинхронизирующимися, поэтому шину могут совместно использовать устройства с различным быстродействием, построенные на базе как старых, так и новых технологий. Шина автоматически адаптируется к требованиям устройств, обменивающихся информацией в данный момент.

Таким образом, с развитием технологий к шине могут быть подсоединены более быстрые устройства, и пользователь сразу ощутит всё их преимущества. В отличие от синхронных систем для ускорения системы с асинхронной шиной не требуется замена на шине старых медленных устройств на быстрые новые. Платой за перечисленные преимущества асинхронного протокола служит некоторое увеличение сложности аппаратуры.

Квитирование в асинхронных системах не всегда реализуется в полном объеме. Иногда транзакция на шине не может быть завершена стандартным образом, например, если ведущий из-за программных ошибок обращается к несуществующей ячейке памяти. В этом случае ведомое устройство не отвечает соответствующим подтверждающим сигналом. Чтобы предотвратить бесконечное, ожидание в шинах, используется тайм-аут, то есть задается время, спустя которое при отсутствии отклика транзакция принудительно прекращается. Для реализации тайм-аута необходимы схемы, способные решать, пришло ли подтверждение вовремя, и если нет, то как привести шину к исходному состоянию. Первая часть решается с помощью таймера, запускаемого ведущим одновременно с началом транзакции. Если таймер достигает предопределенного значения до поступления ответного сигнала, ведущий обязан прекратить начатую транзакцию. Восстановление состояния шины и вычислительного процесса после тайм-аута может происходить по-разному. Так, если ведущим устройством является процессор, он делает это с помощью специального вызова операционной системы, известного как «ошибка шины» (bus error).

Тайм-ауты цикла данных, обычно означающие отказ оборудования, достаточно редки, поэтому время тайм-аута может быть весьма большим. С другой стороны, тайм-ауты по адресу возникают часто. Происходит это, например, когда программа инициализирует систему и проверяет, какие из устройств присутствуют на шине; при этом вполне реальна выдача на шину адреса несуществующего устройства. В спецификациях шин предписываются очень малые значения тайм-аута по адресу, из-за чего устройства декодирования адреса в ведомых устройствах должны быть весьма быстрыми, чтобы уложиться в отведенное время.

Шины ввода/вывода обычно реализуются как асинхронные.

Особенности синхронного и асинхронного протоколов

В предшествующие годы проектировщики ВМ отдавали предпочтение асинхронным шинам, однако в последних высокопроизводительных разработках все чаще используются шины на базе синхронного протокола.

Существующие синхронные шины несколько быстрее асинхронных и по уровню быстродействия уже достаточно близки к физическим скоростям распространения сигналов. Возможное ускорение асинхронных шин по мере развития технологии может привести лишь к незначительному их преимуществу над синхронными.

Любой из протоколов предполагает информирование схем арбитража о занятости шины. В синхронном протоколе шина занята от начала стартового сигнала до завершения сигнала подтверждения, и специальный сигнал занятости шины не нужен. В асинхронном протоколе о занятости шины свидетельствуют адресный строб или сигнал подтверждения адреса.

В асинхронной системе присутствует полная процедура квитирования установления связи, то есть во всех случаях оба устройства до удаления информации с шины должны прийти к соглашению. Таким образом, даже если одно из них построено на очень быстрых схемах, а другое — на очень медленных, взаимодействие все равно будет успешным.

Синхронные системы квитируются частично, за счет того, что ведомое устройство перед выдачей подтверждения может занимать под поиск нужных данных несколько тактовых периодов. С другой стороны, существует неявное требование, чтобы ведомый успел использовать или, по крайней мере, скопировать адрес и информацию управления за время одного тактового периода, до их исчезновения с сигнальных линий. Необходимо также, чтобы и считывание данных ведущим также происходило в пределах одного тактового периода, иначе эти данные будут утеряны. Если в ведущем устройстве используется динамическая память, это требование может приводить к проблемам, если в момент получения данных память находится в режиме регенерации. Для решения подобных проблем обычно используют дополнительную буферную память. Отметим также, что если ведомому для завершения своей операции требуется время, лишь незначительно превышающее длительность тактового периода, транзакция все равно удлиняется на целый период. Это существенный недостаток по сравнению с асинхронным протоколом.

В обоих видах протоколов необходимо учитывать эффект перекоса сигналов. Максимальное значение времени перекоса равно разности времен прохождения сигналов по самой быстрой и самой медленной сигнальным линиям шины. В синхронных шинах перекос уже заложен в указанную в спецификации максимальную тактовую частоту, поэтому при проектировании устройств может не учитываться. Для асинхронных шин перекос необходимо принимать во внимание для каждой транзакции и для каждого устройства. Перед выставлением строба ведущее устройство выжидает в течение времени перекоса данных, считая от момента выставления на шину данных, так, что когда ведомый видит строб, он уже может считать данные достоверными. У ведомого дополнительно возможен перекос сигналов на внутренних трактах данных. Компенсировать его можно введением принудительной задержки, перед тем как использовать полученный сигнал стробирования. Когда ведомый возвращает данные ведущему, он должен после установки данных на шине, но до отправки сигнала подтверждения выждать время перекоса.

Учет перекоса может быть реализован как в ведущем, так и в ведомом устройстве, либо и там и там, лишь бы была обеспечена необходимая общая задержка.

В обоих протоколах необходимо учитывать еще одну проблему — проблему метастабильного состояния. Суть ее поясним на примере микропроцессора, к которому подключена клавиатура. Время от времени микропроцессор считывает информацию из регистра состояния клавиатуры, который должен решить, была ли нажата клавиша, и в зависимости от этого возвратить единицу или ноль. Проблема возникает, если принятие решения практически совпадает с моментом опроса регистра. Если это происходит несколько раньше, регистр вернет 1, а если чуть позже, то 0, но факт нажатия запоминается в соответствующем триггере регистра состояния и будет зафиксирован при следующем опросе регистра. Сложность заключается в том, что в момент переключения триггера информация на входе должна оставаться неизменной. В спецификации на реальные триггеры указывается интервал вблизи тактового импульса, в течение которого входная информация не должна изменяться. Если данные не синхронизированы с ТИ и поступают от какого-либо независимого источника, как в примере с клавиатурой, предотвратить изменение входной информации триггера в запрещенном интервале невозможно. При нарушении данного условия триггер способен перейти в метастабильное состояние, то есть на его выходе может на неопределенное время установиться неоднозначный уровень напряжения, который сохранится, пока случайный шум не установит триггер в то или иное стабильное состояние.

Метастабильное состояние триггера опасно неопределенным поведением схем, для которых информация триггера является входной. К сожалению, многие проектировщики игнорируют упомянутую проблему, и это становится причиной случайных ошибок.

Кардинально решить означенную проблему принципиально невозможно, поэтому при проектировании необходимо проявить особую тщательность, чтобы уменьшить вероятность возникновения метастабильного состояния. Одним из методов может быть правильный выбор элементов, поскольку некоторые триггеры срабатывают быстрее, чем иные. Эффективными способами могут являться использование двухтактных триггеров и/или синхронизация триггеров тактовыми импульсами, что снижает вероятность ошибки до уровня несущественной.

В асинхронных системах имеется иная возможность: специальные схемы для обнаружения метастабильных состояний, где асинхронная система вправе просто выждать, пока состояние не станет стабильным.

Методы повышения эффективности шин

Существует несколько приемов, позволяющих повысить производительность шин.

К ним, прежде всего, следует отнести пакетный режим, конвейеризацию и расщепление транзакций.

Пакетный режим пересылки информации

Эффективность как выделенных, так и мультиплексируемых шин может быть улучшена, если они функционируют в блочном или пакетном режиме (burst mode), когда один адресный цикл сопровождается множественными циклами данных (чтения или записи, но не чередующимися). Это означает, что пакет данных передается без указания текущего адреса внутри пакета.

При записи в память последовательные элементы блока данных заносятся в последовательные ячейки. Так как в пакетном режиме передается адрес только первой ячейки, все последующие адреса генерируются уже в самой памяти путем последовательного увеличения начального адреса. Передача на устройства ввода/вывода или в память наподобие очереди может не сопровождаться изменением начального адреса.

Скорость передачи собственно данных в пакетном режиме увеличивается естественным образом за счет уменьшения числа передаваемых адресов. Внутри пакета очередные данные могут передаваться в каждом такте шины, длина пакета может достигать 1024 байт. Наиболее частый вариант — пакеты, состоящие из четырех байтов. Такие пакеты используются при работе с памятью в 32-разрядных ВМ, где длина ячейки памяти равна одному байту.

В асинхронных системах пакетный режим позволяет достичь дополнительного эффекта. Как известно, время пересылки слова включает в себя время прохождения слова от отправителя к приемнику и время, затрачиваемое на процедуру подтверждения. Необходимо также учесть внутренние задержки в ведущем и ведомом устройствах и, наконец, дополнительные издержки на восстановление исходного состояния шины после процедуры квитирования. В ходе пакетной передачи можно избавиться от этих задержек и работать с максимальной пропускной способностью, которую допускают ширина полосы пропускания линий и перекос сигналов, за счет разрешения отправителю начинать следующий цикл данных не ожидая подтверждения. Реализация описанного режима сопряжена с некоторыми ограничениями. В частности, становится невозможным восстановление ошибок в каждом цикле. Кроме того, скорость должна быть тщательно согласована с особенностями каждой передачи.

Примером шины, обеспечивающей пакетный режим передачи, может служить современная шина Futurebus+.

Конвейеризация транзакций

Одним из способов повышения скорости передачи данных по шине является конвейеризация транзакций. Очередной элемент данных может быть отправлен устройством А до того, как устройство В завершит считывание предыдущего элемента.

Аналогичное решение уже рассматривалось в разделе, посвященном пакетному режиму, однако сам прием применим и к обычным транзакциям.

На рис. 4.20 показана конвейеризация транзакций чтения.

Рис. 4.20. Конвейеризация транзакций чтения

Данные на шине должны оставаться стабильными в течение времени tст + tуд.

Только после этого возможна смена элемента данных. Максимальная скорость передачи при конвейеризации определяется выражением

Протокол с расщеплением транзакций

Для увеличения эффективной полосы пропускания шины во многих современных шинах используется протокол с расщеплением транзакций (split transaction), известный также как протокол соединения/разъединения (connect/disconnect) или протокол с коммутацией пакетов (packet-switched). Этот протокол обычно обеспечивает преимущество на транзакциях чтения.

В классическом варианте любая транзакция на шине неразрывна, то есть новая транзакция может начаться только после завершения предыдущей, причем в течение всего периода транзакции шина остается занятой. Протокол с расщеплением транзакций допускает совмещение во времени сразу нескольких транзакций.

В шине с расщеплением транзакций линии адреса и данных обязаны быть независимыми. Каждая транзакция чтения разделяется на две части: адресную транзакцию и транзакцию данных. Считывание данных из памяти начинается с адресной транзакции: выставления ведущим на адресную шину адреса ячейки. С приходом адреса память приступает к относительно длительному процессу поиска и извлечения затребованных данных. По завершении чтения память становится ведущим устройством, запрашивает доступ к шине и направляет считанные данные по шине данных. Фактически от момента поступления запроса до момента формирования отклика шина остается незанятой и может быть востребована для выполнения других транзакций. В этом и состоит главная идея протокола расщепления транзакций.

Таким образом, на шине с расщеплением транзакции имеют место поток запросов и поток откликов. Часто в системах с расщеплением транзакций контроллер памяти проектируется так, чтобы обеспечить буферизацию множественных запросов.

Случай, когда затребованные данные возвращаются в той же последовательности, в которой поступали запросы, в сущности, представляет собой рассмотренную выше конвейеризацию. Шина с расщеплением транзакций зачастую может обеспечивать вариант, при котором ответы на запросы поступают в произвольной последовательности (рис. 4.21). Чтобы не спутать, какому из запросов соответствует информация на шине данных, ее необходимо снабдить признаком (тегом).

Рис. 4.21 . Расщепление транзакций

Хотя протокол с расщеплением транзакций и позволяет более эффективно использовать полосу пропускания шины по сравнению с протоколами, удерживающими шину в течение всей транзакции, он обычно вносит дополнительную задержку из-за необходимости получать два подтверждения — при запросе и при отклике.

Кроме того, реализация протокола связана с дополнительными затратами, так как требует, чтобы транзакции были тегированы и отслеживались каждым устройством.

Для любой шины с расщеплением транзакций существует предельное значение числа одновременно обслуживаемых запросов.

Увеличение полосы пропускания шины

Среди приемов, способствующих расширению полосы пропускания шины, основными, пожалуй, можно считать следующие:

• отказ от мультиплексирования шин адреса и данных;

• увеличение ширины шины данных;

• повышение тактовой частоты шины;

• использование блочных транзакций.

Замена мультиплексируемой шины адреса/данных и переход к выделенным шинам адреса и данных делают возможной одновременную пересылку как адреса, так и данных, то есть позволяют реализовать более эффективные варианты транзакций. Такое решение, однако, является более дорогостоящим из-за необходимости иметь большее число сигнальных линий.

Полоса пропускания шины по своему определению непосредственно зависит от количества параллельно пересылаемой информации — практически прямо пропорциональна ширине шины данных. Несмотря на то что данный способ требует увеличения числа сигнальных линий, многие разработчики ВМ используют в своих машинах достаточно широкие шины данных. Например, в рабочей станции SPARCstation 20 ширина шины составляет 128 бит.

Наращивание тактовой частоты — еще один очевидный способ увеличения полосы пропускания, и проектировщики широко им пользуются.

О том, как на полосу пропускания шины влияют пакетные или блочные транзакции, было сказано выше: Данный способ требует некоторого усложнения аппаратуры, но одновременно позволяет сократить время обслуживания запроса.

Ускорение транзакций

Для сокращения времени транзакций проектировщики обычно прибегают к следующим приемам:

• арбитражу с перекрытием;

• арбитражу с удержанием шины;

• расщеплению транзакций.

Сущность расщепления транзакций была рассмотрена ранее. Кратко поясним остальные два метода.

Арбитраж с перекрытием (overlapped arbitration) заключается в том, что одновременно с выполнением текущей транзакции производится арбитраж следующей транзакции.

При арбитраже с удержанием шины (bus parking) ведущий может удерживать шину и выполнять множество транзакций, пока отсутствуют запросы от других потенциальных ведущих.

В современных шинах обычно сочетаются все вышеперечисленные способы ускорения транзакций.

Повышение эффективности шин с множеством ведущих

Любая система шин характеризуется пределом пропускной способности, зависящим от их ширины, скорости и протокола. Имеются также издержки, такие как арбитраж, если только он не проводится параллельно с выполнением предшествующей транзакции. Даже простой микропроцессор способен практически монополизировать производительность объединительной шины при выборке инструкций и данных, но без блочных пересылок.

При проектировании мультипроцессорных систем целесообразно рассматривать системную шину как коммуникационный тракт между разными процессорами и нескольким контроллерами ввода/вывода и снабдить каждый процессор локальной памятью для команд и большей части данных. Это существенно снижает нагрузку на системную шину. Если процессоры используют шину в первую очередь для ввода/вывода и пересылки сообщений, большая часть трафика может быть реализована в виде блочных пересылок, что ведет практически к удвоению пропускной способности. Однако, в зависимости от числа процессоров и природы приложения, шина может стать и ォузким местомサ. Фактически, если шина в течение значительной части времени не свободна, процессоры могут значительную долю времени провести в состоянии ожидания. Система с пересылкой сообщений начинает функционировать скорее как сеть, чем как простая шина ввода/вывода.

Одно из решений проблемы пропускной способности — увеличение количества шин с несколькими процессорами на каждой. Этот подход применен в шине Fastbus, где общее адресное пространство совместно используется нескольким отдельными шинами, называемыми сегментами. Сегменты функционируют независимо, но автоматически объединяются нужным образом, если ведущий из одного сегмента обращается к ведомому из другого сегмента. Это автоматическое объединение выражается во вмешательстве в трафик всех промежуточных сегментов, поэтому, чтобы не возникало заторов, применяться оно должно осторожно. Разумное использование узлов с промежуточным хранением совместно с сетевым протоколом передачи сообщений могут еще более сократить перегрузку путем сглаживания нагрузки, разрешая одновременное объединение как двух, так и нескольких сегментов.

Надежность и отказоустойчивость

Надежность и отказоустойчивость — важнейшие аспекты проектирования шин.

Основные надежды здесь обычно возлагают на корректирующие коды, которые позволяют обнаружить отказ одиночного элемента или шумовой выброс и автоматически парировать ошибку. Подобный подход, широко практикуемый в системах памяти, применительно к шинам порождает специфические проблемы.

В шинах отдельные функциональные группы сигналов (сигналы адреса, данных, управления, состояния и арбитража) предполагают независимые контроль и коррекцию. При наличии множества небольших групп сигналов метод корректирующих кодов становится малоэффективным из-за необходимости включения В шину большого числа контрольных линий. Кроме того, в шинах весьма вероятно одновременное возникновение ошибок сразу в нескольких сигналах. Для учета такой ситуации необходимо увеличивать разрядность корректирующего кода, то есть вводить в шину дополнительные сигнальные линии. Достаточно неясным остается вопрос защиты одиночных сигналов, в частности сигналов тактирования и синхронизации.

Вычисление корректирующих кодов и коррекция ошибок требуют дополнительного времени, что замедляет шину.

Усложнение аппаратуры, обусловленное использованием корректирующих ходов, ведет к снижению общей надежности шины, в результате чего суммарный выигрыш может оказаться меньше ожидаемого. В силу приведенных соображений становится ясным, почему проектировщики постоянно ищут альтернативные способы обеспечения надежности и отказоустойчивости шин.

Достаточно хорошие результаты дают так называемые высокоуровневые подходы. Здесь вместо отслеживания каждого цикла шины производятся контроль и коррекция более крупных единиц, например целых блоков данных или законченной программной операции.

При наличии в системе избыточных процессоров и шин возможен перекрестный контроль, причем программное обеспечение может производить изменения в конфигурации системы и предупреждать оператора о необходимости замены определенных блоков. Даже если шина имеет встроенные средства коррекции ошибок, желательно дополнять их некоторым дополнительным уровнем разумности для предотвращения такой постепенной деградации системы, компенсировать которую имеющийся механизм коррекции будет уже не в состоянии.

При разработке аппаратуры необходимо обязательно учитывать определенные требования, связанные с обеспечением отказоустойчивости. Так, если обнаружена ошибка, то для ее коррекции должна быть предусмотрена возможность повторной передачи данных. Это предполагает, что оригинальная передача не должна приводить к необратимым побочным эффектам. Например, если операция чтения с периферийного устройства вызывает стирание исходных данных или сбрасывает флаги состояния, успешное повторное чтение становится невозможным. Другой пример: работа с буферной памятью типа FIFO (First In First Out), работающей по принципу первым прибыл, первым обслужен, где ошибочные данные внутри очереди недоступны и поэтому не могут быть откорректированы.

Чтобы учесть подобные ситуации, при разработке адресуемой памяти необходимо предусмотреть буферы, а очистка ячеек и сброс флагов должны быть не побочными эффектами, а выполняться только явно с помощью определенных команд.

Память типа FIFO может быть снабжена адресуемыми буферами, предназначенными для хранения данных вплоть до завершения передачи.


 

А также другие работы, которые могут Вас заинтересовать

30465. Формы политико-территориального устройства в зарубежных странах 15.18 KB
  Главное различие между обеими формами заключается в том что при унитарной форме территория государства состоит из политикоадминистративных или административных единиц тогда как при федеративной форме высшие территориальные единицы представляют собой государствоподобные образования или даже государства субъекты федерации. означает не что...
30466. Принципы распределения компетенции между федерацией и ее субъектами в зарубежных странах 15.91 KB
  В первую очередь он механизм регулирует отношения равновесия на основе принципа разделения власти между всеми имеющимися центрами власти в государстве. С его помощью происходит реализация разграничения полномочий между ветвями власти без чего не может нормально функционировать не только федеративное государство но и любое другое. Вопервых разделение власти между центром и регионами имеет конституционноправовое обоснование. В случаях же возникновения коллизий между центром и регионами в отношении разделения власти...
30467. Статус субъектов федерации и иных носителей государственной автономии в зарубежных странах 14.96 KB
  Эти договоры не могут противоречить праву и интересам Союза а также правам других кантонов. С нижестоящими иностранными властями кантоны могут иметь дело непосредственно а в остальных случаях отношения кантонов с заграницей осуществляются через посредство Союза. В заключение следует отметить специфическую особенность трех кантонов Швейцарии это Аппенцелль Базель и Унтервальден которая заключается в том что каждый из них состоит из двух полукантонов а общекантональной власти там не существует. Каждый из полукантонов имеет свою...
30468. Основные модели организации публичной власти на местах в зарубежных странах 14.74 KB
  Для первых характерно избрание местной администрации местными представительными органами из своего состава причем нередко глава администрации мэр и т. но и главы местной администрации а также некоторых других должностных лиц исполнительной и судебной власти казначея прокурора мирового судьи вплоть до шерифа начальника полиции. Оно предполагает наличие у местной единицы собственной компетенции охватывающей вопросы местного значения; гарантированной конституцией и законом самостоятельности па отношению к государственной власти в...
30469. Договоры и конституционные процедуры разрешения конфликтов между федерацией и ее субъектами в зарубежных странах 15.77 KB
  Следует отметить возможность федеральной интервенции в случае конфликта между федеральной властью и властями субъектов федерации или в случае когда по каким либо причинам власть субъекта федерации не может функционировать нормально. Если земля не выполняет федеральные обязанности возложенные на нее Основным законом или иным федеральным законом то...
30470. Конституционная ответственность, ее субъекты и виды в зарубежных странах 14.2 KB
  В последнее время в литературе стали признавать наличие особого вида ответственности “конституционной†хотя до сих пор многие ее положения остаются дискуссионными. Так трудно согласиться с тем что конституционная ответственность является разновидностью политической ответственности а равно с тем что конституционная ответственностью объединяет в себе политическую моральную и юридическую ответственность. Конституционная ответственность это самостоятельный вид...
30471. Особенности Конституции и конституционного права США 14.92 KB
  Особенности Конституции и конституционного права США. Ныне действующая конституция США была принята 17 сентября 1787 г. Конституция США является выдающимся политикоправовым актом. Конституция США первая в истории писаная конституция крупного государства.
30472. Порядок выборов Президента и Конгресса США 14.83 KB
  Высшим органом законодательной власти является Конгресс США состоящий из двух палат: Палаты представителей и Сената. Палата представителей представляет интересы народа в целом. Выборы в Палату представителей проходит в первый вторник после первого понедельника ноября каждого четного года. Члены Палаты представителей избираются по мажоритарной системе относительного большинства без требования кворума.
30473. Система сдержек и противовесов в форме правления США 15.06 KB
  Влиятельная фигура в ранней Америке Джон Адамс говорил что целью конституционного правительства является создание правительства законов а не правительства людей. Для Адамса великой идеей к наделению широкими полномочиями правительства и в то же время подчинению его букве закона стал принцип разделения правительственных полномочий. Эта концепция разделения властей исторически ассоциируемая со школой французского философа Монтескье предотвратила злоупотребление властью путем отказа от концентрации власти в одной ветви или одном...