Интерф периф устр лекции (775982), страница 10
Текст из файла (страница 10)
В VME определено 5 основных циклов передачи данных: чтение/запись, чтение-модификация-запись, блочная передача, "только адресация", подтверждение прерываний.
Во время цикла чтение/запись ведущий модуль выставляет адрес ведомого на ША и код модификатора, включая IACK* на ШК. Достоверность адресной информации подтверждается сбросом AS* в 0. Затем данные передаются на ШД в сопровождении сигналов WRITE*, DSO*, DS1*. Ведомое устройство дешифрирует адрес и его модификатор, определяет особенности данной передачи. Оно принимает или передает данные и формирует нулевые уровни сигналов DTACK* или BERR*. С появлением сигнала DTACK*=0 ведущее устройство устанавливает сигналы AS*, DSO*,DS1* в единичное состояние, а ведомое устройство после этого инвертирует значение DTACK*. На этом цикл записи/чтения, который иллюстрируется рис.15, завершается.
Цикл "чтение-модификация-запись" используется в многопроцессорных и многопользовательских системах. Он позволяет многочисленным процессорам разделять общие ресурсы (контроллеры дисков, порты или блоки памяти). В этом цикле происходит чтение информации и её перезапись по тому же адресу за 1 цикл магистрали вместо двух. При этом строб AS* находится в состоянии нуля, а значение сигнала WRITE* в течение цикла обязательно инвертируется.
Цикл блочной передачи используется для перемещения блоков данных от 1 до 256 байт. В многопроцессорных системах этот режим может быть использован для передачи данных небольшими пакетами, уменьшая время на арбитраж магистрали. Прикладные задачи с интенсивным дисковым обменом используют цикл блочной передачи для перемещения данных с большой скоростью между центральным процессором и контроллерами дисков.
Ведущий модуль адресует первую ячейку, а затем передает данные, не заботясь об адресе, который автоматически увеличивается ведомым модулем в соответствии с типом передаваемых данных. В начале передачи ведомый запоминает адрес в своем адресном счетчике, ведущий последовательно выдает данные, сопровождая их соответствующими стробами. Содержимое счетчика используется для внутри модульной адресации. В процессе пересылки необходимо контролировать максимальный размер блока и, в случае необходимости, формировать сигнал BERR*. Ведущий модуль сохраняет непрерывный контроль над магистралью данных в течение всего времени передачи, удерживая низкий уровень AS*. Если ведущему необходимо передать более 256 байт данных, он должен инициировать несколько циклов блочной передачи. В редакции D VME разрешается использование блоков 64-разрядных данных длиной до 2 Кбайта. По сравнению с другими циклами блочная передача значительно увеличивает производительность интерфейса, т.к. ведущее устройство занимает магистраль на время передачи блока (а не слова), передавая ведомому только начальный адрес.
Цикл "только адрес" применяется для повышения производительности процессорного модуля, позволяя процессору начать цикл магистрали прежде, чем выяснится, где находится адресат (на локальной магистрали процессорного модуля или вне неё). Дешифратор адреса локальной памяти ведущего модуля работает параллельно с дешифратором адреса ведомого модуля и может в некоторых случаях ускорить работу магистрали. Это также может упростить разработку некоторых ведущих модулей.
В цикле "только адрес" передачи данных не происходит. Ведущий выставляет адрес, стробирует его AS* и, спустя некоторое время, сам завершает обмен. Так кaк DSO*, DSl* не выставляются, ведомое устройство не завершает цикл сигналами DTACK* или BERR*. Цикл прекращается, если ведущей модуль обнаруживает, что произошло обращение к локальным ресурсам.
Магистраль VМЕ имеет раздельные стробы адреса и данных, что позволяет ведущему модулю выставить адрес для следующего цикла в момент передачи данных предыдущего. Этот способ называется адресным конвейером. В этом случае можно начинать выборку следующих данных, не ожидая окончания предыдущих, что обеспечивает сокращение среднего времени выборки данных. Ведомое устройство должно быть разработано с учетом использования адресного конвейера. Для этого необходимо фиксировать адрес и модификатор адреса до формирования DTACK* или BERR* . Адрес часто фиксируется по срезу любого строба данных. Если этого не сделать, состояние линий данных ведомого устройства может измениться до завершения цикла чтения из-за изменения состояния его внутренних адресов. Во время цикла записи в ведомых устройствах могут быть нарушены внутренние временные соотношения.
Рис.15. Временная диаграмма цикла записи
3.3.2 Шина передачи управления
Перед каждым циклом передачи ведущий модуль или устройство обработки прерывания (УОП) обязаны получить разрешение на использование магистрали. Ведущий модуль необязательно должен быть процессором. В качестве ведущего могут быть модули, содержащие контроллеры прямого доступа к памяти или УОП. Эта задача решается с помощью шин передачи управления (ШПУ), арбитра и устройства запроса магистрали (УЗМ).
Шина передачи управления содержит: 4 линии запросов BRO*-BR3*, 4 последовательные цепи предоставления магистрали BGOIN*-BG3IN*/BGOOUT*-BG3OUT*, линии "Занято" (BBSY) и "Освободить магистраль" (BCLR*). Арбитр, всегда расположенный в слоте 01, принимает запросы УЗМ и предоставляет магистраль одному из них на основании определенных приоритетных правил. Запросы поступают на линии BRO*-BR3*, которые организованы как "монтажное ИЛИ". В VME используется централизованный арбитраж с параллельно-последовательной селекцией источников запросов. На рис.16 представлена структура ШПУ при поступлении запросов по линии BR03*.
Арбитры классифицируются в соответствии с принятой дисциплиной определения приоритета.
Одноуровневый арбитр является наиболее простым. Этот арбитр обслуживает только уровень запроса линии BR3* и выдает разрешение по последовательной цепи BG3IN*/BG3OUT* при BR3*=0, BBSY*=1. Одноуровневые арбитры могут формировать сигнал BCLR*, если требуется прервать работу модуля, который слишком долго занимает магистраль. Основным недостатком арбитра является фиксированное значение приоритетов, которое приведет к наиболее частому занятию магистрали модулями, близко расположенными к слоту 01.
Приоритетный арбитр присваивает жесткие приоритеты линиям запросов магистрали: BR3* - высший, a BRO* - низший. Если одновременно пришли несколько запросов, арбитр определяет запрос с максимальным приоритетом и активизирует соответствующую последовательную цепь предоставления магистрали.
B BG3OUT BG3IN BG30UT DG3IN
AS*
BBSY*
BR3*
BCLR*
М
агистраль информационного канала.
Рис.16. Структура шины передачи управления.
При поступлении запроса с более высоким приоритетом, чем текущий, формируется сигнал BCLR* и магистраль предоставляется новому модулю.
Циклический арбитр предоставляет равные приоритеты для всех источников запроса. Если в предыдущем цикле магистраль была предоставлена по требованию линии BRn, то наивысшим приоритетом в текущем цикле будет обладать линия BRn-1. Арбитр может использовать сигнал BCLR*, если ведущее устройство запрашивает магистраль на уровне приоритета, не совпадающего с приоритетом, которому была предоставлена магистраль в последний раз.
Циклические арбитры являются популярными в системах сбора данных с интеллектуальными периферийными устройствами, в которых данные загружаются в разделяемую память. Эти данные должны загружаться на равноправной основе. Возможен смешанный способ организации арбитров, при котором могут использоваться как 3 типа одновременно, например, в системном контроллере VME1000, так и в различных сочетаниях.
УЗМ является функциональным модулем, который размещается на одной плате с ведущими устройствами и обработчиками прерываний. Ведущее устройство формирует сигнал захвата магистрали DWB и передает его УЗМ, которое выставляет запрос на одной из линий BRn. После получения разрешения по последовательной цепи BGnlN/BGnOUT УЗМ устанавливает сигнал BBSY* и извещает ведущее устройство сигналом DGB. Ведущее устройство ожидает, когда AS* станет равным логической единице. Это позволяет проводить арбитраж магистрали во время пересылки данных или выполнения цикла подтверждения прерывания, что ускоряет пропускную способность магистрали.
В VME используется три варианта освобождения магистрали УЗМ.
УЗМ с освобождением по завершению операции (УЗМО) освобождает магистраль после того, как закончилась пересылка информации. Модули ПДП могут освобождать магистраль после окончания пересылки блока данных, а модули центрального процессора в конце каждого цикла или под управлением программы.
УЗМ с освобождением по запросу (УЗМЗ) освобождает магистраль при появлении сигнала на одной из линий BRO*-BR3* или BCLR*. Данный метод часто используется, т.к. хорошо работает для большинства применений и является достаточно быстрым. Его основной недостаток заключается в увеличении времени арбитража, когда большое число модулей требуют доступ к магистрали одновременно.
УЗМ с циклическим освобождением магистрали (УЗМЦ) применяется в системах с ведущими устройствами, требующими фиксированную пропускную способность. Наиболее часто они используются с арбитрами одного уровня или в том случае, если число ведущих устройств более 4. Последнее применение расширяет возможности циклического арбитра. УЗМЦ обеспечивает цикличность, не позволяя своему ведущему получить управление информационной магистралью, пока все ведущие модули одного уровня не получат доступ к магистрали. Это достигается тем, что, УЗМ ждет момента снятия сигнала BRn*, а затем формирует свой сигнал запроса магистрали.
D
WB DGB
BR3*
Рис. 17 Принцип работы устройства запроса с циклическим
освобождением магистрали.