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

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

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

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

процессоров. Процессор может прямо передавать данные в другой процессор или инициализировать канал DMA для передачи. Каждый процессор отображается в общую карту памяти. Для идентификации адресного пространства любого процессора внутри объединенной карты памяти кластерной системы каждый процессор имеет уникальный идентификатор. Регистры IOP, внутренняя память и внешняя память являются частью объединенного адресного пространства. Совместное использование внутренней памяти устраняет необходимость использования внешней памяти для передачи сообщений между процессорами и упрощает создание программного обеспечения для взаимодействия процессоров. Процессоры могут записывать прямо в память друг другу, не затрачивая дополнительный цикл на передачу шины. Локальная память может не использоваться, так как SHARC имеет большой объем SRAM. Однако для больших приложений блоки данных и кода могут храниться в совместно используемой памяти и загружаться во внутреннюю память процессора.

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

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

Внутренняя память SHARC разработана таким образом, чтобы облегчить ввод вывод в многопроцессорных системах. Двухпортовая RAM, расположенная на кристалле, позволяет осуществлять передачу данных между процессорами с максимальной скоростью, а также параллельно выполнять двойной доступ ядра процессора. При этом производительность процессора остается полной – 40 миллионов команд в секунду (MIPS – million instructions per second), 120 миллионов операций с плавающей точкой в секунду (MFLOPS – million floating operations per second).

7.2.2.1. Передача данных в кластере через линк-порт

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

231

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

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

Недостатком линк портов является то, что передача данных происходит со скоростью только 40 Мб/сек (для тактовой частоты системы 40 МГц). Эта скорость ниже, чем скорость передачи по совместно используемой параллельной шине. Линк порты 4 разрядные, поэтому для передачи каждого слова процессора требуется несколько циклов. Линк порты могут также потребовать больших затрат и сложности при написании программного обеспечения, так как, до того как начать передачу данных, линк порты должны быть инициализированы с обеих сторон.

7.2.3. Многопроцессорная система типа SIMD

Для некоторых классов приложений, например визуализация полученной радаром информации, может использоваться система с одним потоком команд и несколькими потоками данных (SIMD – single instruction multiple data) как наиболее эффективная схема для координирования большого количества процессоров в одной системе. Система SIMD на рис. 7.3 состоит из нескольких

Рис. 7.4. Двумерная многопроцессорная сеть типа SIMD

232

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

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

7.3 Управление шиной в многопроцессорной системе

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

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

ADSP 2106x, а управляют передачей шины от ведущего ADSP

2106x к хост процессору (и обратно). Схема приоритетов для арбитража шины определяется битом RPBA. В табл. 7.2 определены выводы ADSP 2106x, использующиеся в многопроцессорных системах.

Выводы Тип

Определение

 

I/O/S

Запрос шины в многопроцессорной системе (Multiprocessing Bus

 

Requests). Используется в многопроцессорных системах ADSP 2106x

 

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

 

линии

(определяемой значением его входов ID2 0) и

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

должны быть подключены к питанию; собственная линия

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

ID 2 0

I

Многопроцессорный идентификатор (Multiprocessing ID). Определяет,

 

 

какой запрос шины (

) используется ADSP 2106x. ID=001

соответствует , ID=010 соответствует , и т. д. ID=000

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

233

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

RPBA I/S

Выбор вращающихся приоритетов для арбитража шины (Rotating

 

Priority Bus Arbitration Select). Когда RPBA установлен, то выбрана

 

схема вращающихся приоритетов для арбитража шины

 

многопроцессорной системы. Когда RPBA сброшен, выбрана схема

 

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

 

системы и должен устанавливаться одинаковым во всех ADSP 2106x.

 

Если значение RPBA изменяется при работе системы, то новое

 

значение должно быть установлено в каждом ADSP 2106x в одном и

 

том же цикле.

(o/d) I/O Приоритетный доступ ядра (Core Priority Access). Сигнал позволяет ядру ведомого ADSP 2106x прервать фоновый DMA и получить доступ к внешней шине. является выходом с открытым

стоком. Выводы всех ADSP 2106x в системе соединены вместе.

Вывод имеет внутреннее сопротивление 5 KОм. Если этот

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

Таблица 7.2. Выводы ADSP-2106x в многопроцессорной системе

I = Вход

S = Синхронный

(o/d) = с открытым стоком

O = Выход

A= Асинхронный

(a/d) = активный управляющий

Выводы ID2 0 обеспечивают уникальный идентификатор для каждого ADSP 2106x в многопроцессорной системе. Первому ADSP 2106x должен быть назначен ID=001, второму – ID=010 и так далее. Для правильной работы схемы синхронизации шины одному из ADSP 2106x должен быть назначен ID=001. Этот процессор также удерживает сигналы на линии управления внешней шиной стабильными в течение сброса.

Когда входы ID2 0 ADSP 2106x равны 001, 010, 011, 100, 101 или 110, он конфигурирует себя для многопроцессорной системы и отображает свою внутреннюю память и регистры IOP в пространство памяти многопроцессорной системы. ID=000 устанавливается для работы ADSP 2106x в однопроцессорной системе. ID=111 зарезервирован и не должен использоваться.

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

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

234

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

Мнемоника ассемблера для кода этого условия – BM (bus master – ведущий), а его дополнение – NBM (not bus master – не ведущий). Состояние BM указывает, является ли ADSP 2106x текущим ведущим. Полный список кодов условий приведен в главе Управление программой в разделе «Выполнение условных команд». Для разрешения использования условия ВМ или NBM биты 17 и 18 в регистре MODE1 должны быть равны нулю, иначе условие всегда оценивается как ложное.

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

Соответствующие выводы всех ADSP 2106x в многопроцессорной

системе соединяются; причем количество используемых линий равно числу ADSP 2106x в системе. Каждый процессор управляет сигналом на одном выводе и отслеживает все другие. Номер управляемого соответствует

значению идентификатора процессора, т. е. значению на его входах ID2 0. Если в системе используется меньше шести ADSP 2106x, неиспользуемые линии

должны быть подключены к питанию.

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

линии в начале цикла. Позже в этом же цикле он опрашивает значения других линий .

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

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

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

Наблюдая за сигналами на всех линиях , каждый ADSP 2106x может

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

235

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

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

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

На рис. 7.5 приведены временные диаграммы арбитража шины.

При передаче управления шиной текущий ведущий переводит в третье состояние сигналы внешней шины – DATA47 0, ADDR31 0, ADRCLK, , ,

, PAGE, , и – в конце цикла перехода шины. Новый ведущий начинает управлять этими сигналами в следующем цикле. Уровень сигнала устанавливается высоким (неактивным) прежде, чем происходит переход в третье состояние (см. рис. 7.6).

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

арбитража шины, выставляя сигнал на линии . Чтение или запись

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

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

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

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

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

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

236

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

Рис. 7.5. Временные диаграммы арбитража шины

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

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

и продолжит выводить сигналы управления памятью, пока: 1) ему не понадобится использовать шину снова; 2) другой ADSP 2106x не выставит

сигнал на линии .

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

237

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

Рис. 7.6. Временные диаграммы запроса шины и чтения-записи

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

7.3.2. Приоритет при арбитраже шины (RPBA)

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

238

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

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

Бит RPBA должен быть установлен одинаковым во всех процессорах в многопроцессорной системе. Если значение бита RPBA изменяется при работе системы, то оно должно измениться синхронно с сигналом CLKIN и удовлетворять времени установки (определенному в технических характеристиках), чтобы все ADSP 2106x смогли распознать изменение в том же самом цикле. Схема приоритетов изменится в том же цикле.

При использовании схемы фиксированных приоритетов ADSP 2106x с самым младшим значением ID среди процессоров, выдающих конкурирующие запросы шины, становится ведущим. Например, если процессор с ID=010 и процессор с ID=100 запрашивают шину одновременно, то процессор с ID=010 становится ведущим в следующем цикле. Каждый ADSP 2106x знает ID других процессоров, запрашивающих шину, так как их ID соответствует используемой

линии .

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

Аппаратные ID процессора:

 

 

 

 

Цикл

ID1

ID2

ID3

ID4

ID5

ID6

 

1

M

1

2 BR

3

4

5

Начальное распределение приоритетов

2

4

5 BR M BR

1

2

3

 

3

4

5 BR M

1

2

3

 

4

5 BR

M

1

2

3

4 BR

5

1 BR

2

3

4

5

M

Конечное распределение приоритетов

1 5= назначенные приоритеты M=управляет шиной (в этом цикле)

BR=запрашивает управление шиной, выставляя

Таблица 7.3. Пример работы схемы вращающихся приоритетов при арбитраже шины

239

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

7.3.3. Ограничение времени управления шиной

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

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

Для задания времени управления шиной ваша программа должна загрузить в регистр BMAX максимальное число циклов (минус 2), в течение которых ADSP 2106x может сохранять управление шиной:

BMAX = (максимальное число циклов управления шиной) – 2

Минимальное значение BMAX=2 позволяет процессору сохранять управление шиной 4 цикла. Установка BMAX=1 недопустима. Для того чтобы отключить функцию ограничения времени управления шиной, надо установить BMAX=0.

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

шину. Когда ведущий сбрасывает сигнал на линии , регистр BCNT перезагружается из BMAX.

Если содержимое регистра BCNT уменьшилось до нуля, то ведущий сначала завершает внешние чтение/запись, а затем сбрасывает сигнал на своей линии

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

уменьшилось до нуля, то сигнал ведущего не сбрасывается и регистр BCNT

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

Если содержимое регистра BCNT уменьшилось до нуля во время блокировки шины (bus lock), то ведущий не сбросит сигнал на линии , пока блокировка

шины не будет снята (бит BUSLK в регистре MODE2 отвечает за режим блокировки шины; см. раздел «Блокировка шины и семафоры » далее в этой главе).

240