Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Руководство пользователя по сигнальным процессорам Sharc

.pdf
Скачиваний:
128
Добавлен:
01.05.2014
Размер:
9.49 Mб
Скачать

Многопроцессорная система 7

Если обслуживается запрос , то содержимое регистра BCNT не будет декрементироваться до тех пор, пока сигнал не будет сброшен.

7.3.4. Приоритетный доступ ядра

Сигнал приоритетного доступа ядра дает приоритет обращению ядра

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

шину до окончания передачи по DMA. С помощью сигнала ядро ведомого ADSP 2106x может получить шину без ожидания завершения операции DMA.

Если сигнал не используется в многопроцессорной системе, то ведущий

ADSP 2106x может передать шину другому ADSP 2106x: 1) в цикле, в котором он не выполняет обращение к внешней шине или 2) при истечении времени управления шиной. Если ведомому ADSP 2106x нужно отправить сообщение с высоким приоритетом или выполнить важную передачу данных, то обычно ему приходится ждать, пока завершится операция DMA. Использование сигнала

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

Ядро ведомого ADSP 2106x с отложенным обращением к шине выставляет сигнал одновременно с сигналом запроса шины . – выход с

открытым стоком, который соединяется со всеми ADSP 2106x в системе. На этом выводе каждый ADSP 2106x имеет «подтягивающий» к питанию резистор номиналом 5 KОм, что позволяет совместно использовать его всеми ADSP 2106x

в системе. Любой ADSP 2106x может выставить низкий уровень сигнала ,

но после освобождения вывода внутренний резистор (или дополнительный внешний резистор для более быстрого изменения) «подтянет» его в единицу. Несколько ADSP 2106x могут выставлять сигналы на этой линии в одно и то же

время. Когда выставляется сигнал , текущий ведущий сбрасывает свой

сигнал и уступает шину, убедившись, что его ядро не имеет отложенного внешнего обращения. Кроме того, любой ADSP 2106x, ядро которого не имеет отложенного внешнего обращения, сбросит сигнал на своей линии в следующем цикле. Заметим, что текущий ведущий никогда не выставляет сигнал

, так как он уже управляет шиной.

241

7 Многопроцессорная система

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

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

предыдущий ведущий освободит линию ). ADSP 2106x, который

становится ведущим, немедленно освобождает , как только получает управление шиной. Если нет других ADSP 2106x, ядро которых должно выполнить внешнее обращение, то сигнал будет «подтянут» к высокому

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

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

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

Полная последовательность происходящих событий, когда ADSP 2106x использует сигнал , следующая (на рис. 7.7 показаны временные диаграммы этих запросов):

1.Ядро ведомого процессора ADSP 2106x выставляет сигнал синхронно с , когда оно имеет отложенное обращение по внешней шине.

2.В следующем за установкой сигнала на общей линии цикла те ADSP 2106x, ядро которых не имеет отложенных внешних обращений,

сбрасывают сигналы на своих линиях . Если ядро текущего ведущего не имеет отложенного обращения, то он передает управление шиной (т. е.

сбрасывает свой сигнал ) после завершения своего текущего обращения.

242

Многопроцессорная система 7

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

обычным образом среди тех ADSP 2106x, которые установили сигналы . Устройство с самым высоким приоритетом становится ведущим, когда предыдущий ведущий сбрасывает свой сигнал .

4.Новый ведущий после получения управления шиной освобождает линию .

Все ADSP 2106x продолжают выставлять сигналы обычным образом в следующем после освобождения цикле.

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

Рис. 7.7. Временные диаграммы приоритетного доступа ядра

243

7 Многопроцессорная система

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

Из за того что сигнал «подтягивается» к высокому уровню с помощью

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

Если приоритетный доступ ядра в системе не требуется, то должен быть

оставлен неподключенным и арбитраж ADSP 2106x будет осуществляться обычным образом.

7.3.5. Синхронизация шины после сброса

После сброса многопроцессорной системы сигналом на выводе логика

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

При программном сбросе (SRST) ADSP 21062 версии кристалла 1.x или ADSP 21060/62 версии кристалла 2.x (или позже) не восстанавливают синхронизацию.

Заметим, что при программном сбросе (SRST) ADSP 21062 версии кристалла 0.x и ADSP 21060 версии кристалла 1.x восстанавливают синхронизацию.

Для правильной работы схемы синхронизации шины одному из ADSP 2106x в системе должен быть назначен ID=001. Этот процессор также удерживает внешние линии управления шиной в устойчивом состоянии в течение сброса. Если ADSP 2106x находится в однопроцессорной системе (ID=000), то синхронизация арбитража шины запрещена.

Для синхронизации логики арбитража шины и определения ведущего после сброса системы множество ADSP 2106x подчиняется следующим правилам:

244

Многопроцессорная система 7

Все ADSP 2106x, за исключением одного, у которого ID=001, сбрасывают

сигналы на линии в течение сброса. Они будут удерживать свои

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

После сброса ADSP 2106x определит, что он синхронизирован, когда увидит

только один выставленный сигнал на линии в определенном цикле.

ADSP 2106x идентифицирует ведущего по линии , на которой выставлен сигнал, и обновит свою информацию о том, кто является текущим ведущим (в поле CRBM регистра SYSTAT).

ADSP 2106x с ID=001 выставит свой сигнал () в течение сброса и будет удерживать его по крайней мере два цикла после сброса. Если никаких

других сигналов на линиях не будет выставлено в течение этих циклов, то ADSP 2106x с ID=001 будет выводить сигналы управления памятью, чтобы удержать их уровень стабильным и предотвратить сбои (хотя ведущий

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

Если ADSP 2106x с ID=001 синхронизируется до конца второго после сброса цикла, он становится ведущим. Если за это время синхронизации не произойдет,

он сбрасывает свой сигнал () и ждет, пока он не синхронизируется.

Когда ADSP 2106x синхронизировался, он устанавливает бит BSYN в регистре SYSTAT.

Если один ADSP 2106x выходит из состояния сброса после того, как другие синхронизировались и начали выполнение программы (например, если он

обнаружил более одного сигнала, выставленного на линии ), этот процессор

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

сможет выставить сигнал запроса шины на своей линии , и выполнение

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

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

245

7 Многопроцессорная система

Если сигнал был выставлен сразу после сброса и не было никакого

арбитража шины, то ADSP 2106x с ID=001 рассматривается как последний ведущий.

Как уже упоминалось выше, ADSP 2106x с ID=001 поддерживает правильный логический уровень сигналов , , , PAGE и в течение сброса.

Если процессор с ID=001 будет случайно введен в состояние сброса из за ошибочной записи бита программного сброса SRST в регистре SYSCON, то поведение процессора в течение сброса будет следующим:

ADSP 2106x с ID=001 попытается получить управление шиной, выставляя , пока он находится в состоянии сброса.

ADSP 2106x с ID=001 будет управлять сигналами , , , PAGE,

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

условия: 1) в предыдущем цикле был выставлен и никаких других сигналов на линиях не было выставлено; 2) в предыдущем цикле сигнал был сброшен.

ADSP 2106x с ID=001 будет продолжать управлять сигналами , , , PAGE, , , в течение двух циклов после сброса,

пока ни , ни любые другие сигналы на линиях не будут выставлены.

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

шины. Если процессор не синхронизировался, то он сбрасывает , перестает

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

Хотя схема синхронизации шины позволяет вводить в состояние сброса каждый процессор отдельно, ADSP 2106x с ID=001 может потерять возможность вывода сигналов управления памятью, если он переходит в состояние сброса, когда другие процессоры уже выставили сигналы на своих

линиях .

246

Многопроцессорная система 7

Если ADSP 2106x с ID=001 выставил сигнал , когда он находился в состоянии сброса, то он будет синхронизирован после того, как сигнал на линии будет сброшен. Это позволяет хост процессору начать

использовать шину в то время, как все ADSP 2106x находятся в состоянии сброса.

Если хост процессор попытается ввести в состояние сброса ведущий ADSP 2106x, который выводит сигнал , то хост процессор немедленно потеряет управление шиной.

В течение сброса сигнал на линии ACK внутренне «подтягивается» к высокому уровню ведущим ADSP 2106x (с помощью резистора номиналом 2 кОм).

7.4. Прямое чтение и прямая запись ведомого

Ведущий процессор может прямо обращаться к внутренней памяти и регистрам IOP ведомого ADSP 2106x, просто выполняя считывание или запись по соответствующему адресу в пространстве памяти многопроцессорной системы. Это называется прямым чтением или прямой записью. Каждый ведомый ADSP 2106x отслеживает адреса, выводимые на внешнюю шину, и отвечает на те, которые попадают в его область пространства памяти многопроцессорной системы.

Это обращение не влияет на операции ядра ведомого процессора, так как оно выполняется через внешний порт по шине ввода вывода, а не по шинам DM или PM (см. рис.8.1 в главе Хост интерфейс).

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

Ведущий ADSP 2106x может прямо считывать и записывать данные в регистры IOP ведомого, например, для посылки векторного прерывания или настройки передач по DMA.

Для чтения или записи 48 разрядных командных слов должен быть установлен в 1 бит IWT (Instruction Word Transfer – передача командного слова) в регистре SYSCON. Для чтения или записи 32 разрядных слов данных бит IWT должен быть установлен в 0. Когда этот бит установлен, он отменяет бит IMDWx (Internal Memory Data Width – разрядность внутренней памяти данных) для каждого блока памяти.

247

7 Многопроцессорная система

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

7.4.1. Прямая запись

При выполнении прямой записи в ведомый ADSP 2106x адрес и данные фиксируются на кристалле устройством ввода вывода. Устройство ввода вывода буферизирует адрес и данные в специальном наборе буферов FIFO. Если происходит дополнительная прямая запись, когда буфер FIFO полон, ведомый ADSP 2106x сбрасывает сигнал на линии ACK, пока буфер не станет частично пуст. До шести прямых записей может выполниться прежде, чем следующая будет задержана (буфер прямой записи может сам удерживать данные до четырех циклов, если все каналы DMA последовательного порта активны, или до девяти циклов, если происходит цепочка операций DMA).

7.4.1.1. Задержка прямой записи

При выполнении прямой записи в ведомый ADSP 2106x данные и адрес фиксируются на выводах I/O в четырехуровневом буфере FIFO. Этот буфер называется FIFO записи ведомого (см. рис. 8.1 в главе Хост интерфейс). В следующем цикле FIFO записи ведомого пытается выполнить запись во внутреннюю память. Это позволяет ведущему ADSP 2106x выполнять запись на полной тактовой частоте. FIFO записи ведомого не может напрямую считываться ядром ведомого ADSP 2106x, и его состояние не может быть определено.

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

Если запись происходит, когда буфер полный, то ведомый ADSP 2106x сбросит сигнал на линии ACK, пока буфер частично не освободится. Если не происходит внутренней передачи данных по DMA с более высоким приоритетом, то обычно буфер освобождается за один цикл. Поэтому задержка записи обычно составляет один цикл.

Если имеются данные в FIFO записи, то чтение ведомого задерживается. Это предотвращает считывание ошибочных данных.

Бит DWPD (Direct Write Pending – задержка прямой записи) в регистре SYSTAT указывает на то, что прямая запись во внутреннюю память задержана в

248

Многопроцессорная система 7

FIFO прямой записи устройства ввода вывода или данные ждут обработки в FIFO записи ведомого. Прямая запись и обращение к регистрам IOP могут завершаться в различной последовательности. Например, если ведущий ADSP 2106x выполняет прямую запись в память и затем записывает данные в регистр IOP ведомого, то запись данных в регистр IOP может завершиться раньше прямой записи.

7.4.2. Прямое чтение

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

Заметим, что прямая запись имеет максимальную конвейерную производительность «одна запись за цикл», а прямое чтение имеет максимальную производительность «одно чтение за два цикла» (для синхронного считывания регистра IOP) или «одно чтение за четыре цикла» (для синхронного считывания из внутренней памяти). См. табл. 11.5 «Задержка данных и производительность» в главе 11. Прямое чтение имеет малую производительность и поэтому не является самым эффективным методом передачи данных из ведомого ADSP 2106x. Инициализация канала DMA в режиме ведущего в ведомом процессоре позволяет выполнять запись более эффективно, хотя требует дополнительного программирования. Преимуществом прямого чтения является то, что не требуется никакого программирования контроллера DMA.

7.4.3. Широковещательная запись

Широковещательная запись позволяет одновременно передавать данные во все ADSP 2106x в многопроцессорной системе. Ведущий процессор может выполнять широковещательную запись в одну и ту же ячейку памяти или один и тот же регистр IOP всех ведомых. Во время широковещательной записи ведущий выполняет запись и в свою память тоже, если только эта запись не использует DMA. Широковещательная запись может использоваться для реализации взаимных семафоров в многопроцессорной системе (см. «Блокировка шины и семафоры» далее в этой главе). Широковещательная запись может также использоваться для одновременной загрузки кода или данных в несколько процессоров.

Область старших адресов пространства памяти многопроцессорной системы 0x0038 0000 0x003F FFFF используется для широковещательной записи. Когда

249

7 Многопроцессорная система

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

памяти процессора, при этом сигнал не выставляется.

На рис. 7.8 показаны временные диаграммы типичной широковещательной записи при MMSWS=0. В этом примере первая запись завершается без состояния ожидания. Во время второй записи один или больше ведомых имеют 3 состояния ожидания и сбрасывают ACK на 3 цикла. Примечание: вход ACK

опрашивается ведущим в нечетных циклах ( выставлен). Если разрешено

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

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

Рис. 7.8. Временные диаграммы широковещательной записи

250