Опубликован: 01.10.2013 | Доступ: свободный | Студентов: 255 / 19 | Длительность: 24:58:00
ISBN: 978-5-9963-0223-9
Специальности: Разработчик аппаратуры
Лекция 9:

Оценка производительности и живучести МКМД-БИТ-потокового предпроцессора системы астронавигации

Первое значимое множимое является первым элементом вектор-столбца X ^{1}_{128} построчной гистограммы и подается на 936(+2*128) такте. Первый значащий множитель W ^{1}_{128} = 1 подается на 934(+2*128) такте. На управляющий вход умножителя на 933(+2*128) такте подается циклическая константа C_{128}1, задающая цикл его работы. При этом следует помнить, что первые нулевые операнды множимого и множителя поступают на входы умножителя соответственно на 808 и 806 тактах.

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

Рис. 8.19. Топологическая схема модуля свертки вектор-столбца построчной гистограммы отфильтрованного изображения (SMM)

Циклическая константа C_{128}1 и поток весовых коэффициентов W_{128}^{s} = (0, 1, 2, 3, …, 127) генерируются двумя взаимодействующими блоками управления WGU и CCU1(128), которые занимают на бит-матрице первые пять столбцов с 6-й по 24-ю строку.

Блок генерации CCU1(128) циклической константы C_{128}1 выполнен по классической схеме делителя (на 24) частоты задающего генератора CG, содержащего циклическую константу C_{8}1 (БП (23, 5)). В БП (20, 1) данная циклическая константа ветвится в двух направлениях, так как она используется и как независимая управляющая переменная, и как промежуточный аргумент, задающий величину и цикл приращения целочисленных значений весовых коэффициентов W_{128}^{s} в блоке WGU.

Блок WGU имеет выход (6, 2, 2) с начальной задержкой 794 такта по отношению к обнуленному в DWHCU операнду и 922 такта по отношению к первому значащему операнду, имеющему в ML вес "единица". Для установки такой начальной задержки использована PD -ассоциативная схема записи однократной "единицы" в соответствующие разряды счетчика на Т -триггерах. Однократная "единица" формируется при включении субпроцессора БП с координатами (21, 3)-(21, 5) и распространяется вверх по 5-му столбцу бит-матрицы. Время начальной задержки фиксировано, но его можно изменить, модифицировав адреса разрядов счетчика, в которые попадает однократная "единица".

Блок обнуления ( DWHCU ) паразитных взаимодействий строк из разных кадров, попавших в одно 2-элементное "скользящее окно", генерирует циклическую константу вида: 32 "нуля" и (214-32) "единиц". Он расположен на бит-матрице с координатами (10, 6)-(21, 9) и представляет собой два взаимодействующих счетчика, один из которых генерирует циклическую константу С_{32}1 (выход БП (13, 8, 2)), а второй - С_{2}^{14}1 (выход БП (12, 7, 2)). Циклическая константа С_{32}1 используется как управляющая переменная в БП (7, 11), который реализует бит-инструкцию ST1, а вторая циклическая константа используется в этом же БП как информационная. Начальная задержка в блоке DWHCU устанавливается с помощью бит-инструкций AND и NAND в БП 6-го и 9-го столбцов. Само обнуление паразитных взаимодействий строк из разных кадров осуществляется в БП (6, 10), который реализует бит-инструкци ю AND.

Сумматор-накопитель ADDRV32 оператора свертки вектор-столбца построчной гистограммы обрабатываемого изображения выполнен по классической схеме с 32-битным аккумулятором (рис. 8.19-б - бит-матрица с координатами (6, 7)-(8, 10)).

Строб "чтение" имеет вид: 32 "единицы" и (214-32) "нуля", предшествует полному циклу накопления, поступает на 916+Q*2^{14} такте на вход бит-процессора (7, 10, 1) и в инвертированном виде используется в БП (7, 9, 4) как строб сброса. Он генерируется блоком ( CADDR32 ), который занимает бит-матрицу с координатами (10, 10)-(13, 21). Задающий генератор этого блока размещен в БП (10, 12), который настроен на бит-инструкцию CG и генерирует циклическую константу С_{8}1, записанную со смещением на 7 тактов и потому имеющую шестнадцатеричное представление 10. Циклическая константа С_{32}1 формируется на выходе БП (15, 12, 2) и используется как управляющая переменная в БП (11, 11), настроенном на бит-инструкцию ST1. На нижний, информационный вход этого БП поступает циклическая константа С_{2}^{14}1. Установка начального состояния генер атора строба CADDR32 осуществляется соответствующим размещением бит-инструкций AND и NAND в БП 10-го и 13-го столбцов бит-матрицы.

Функциональный выход модуля свертки ADDRV32 построчной гистограммы расположен в бит-процессоре (7, 10, 4).

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

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

Управляющий вход этого сумматора расположен по адресу (3, 11, 4), на который на 918+Q*2^{14} такте поступает 32-битный "единичный" строб, который в бит-процессоре (2, 10) используется как сигнал "чтение", а в бит-процессоре (2, 11) - как сигнал "сброс".

Функциональный выход сумматора ADDRH32 расположен по адресу (2, 10, 4), на котором задержка составляет 922+Q*2^{14} такта. Топологический выход этого блока совпадает с входом операнда делителя, и на нем начальная задержка равна 966 тактов, которая учитывает сдвиг операнда на 7 бит влево, что соответствует умножению на нормирующий множитель 27. Такая нормировка обеспечивает условия правильного деления, когда частное должно быть меньше единицы.

Из приведенных данных видно, что в модуле свертки вектор-столбца ( SMM ) в одном 128-битном цикле выполняются:

  • в 8-разрядном умножителе (ML): 1 операция умножения 16-битных операндов с 32-битным результатом, 1 операция задания разрядности и 1 пересылка произведения в сумматор-накопитель (пересылки множимого, множителя и управляющей константы учтены в предшествующих модулях);
  • в блоке генерации весовых коэффициентов (WGU): 1 формирование, 1 чтение, 1 пересылка весового коэффициента;
  • в блоке генерации циклической константы C_{128}1 (CCU1(128)): 16 операций генерации задающей циклической константы C_{8}1 и 32 ее пересылки; 4 операции контроля приращения циклической константы C_{128}1 и 36 ее пересылок, так как эта константа используется и как аргумент приращения при формировании весового коэффициента, и как сигнал "чтение" на каждом цикле работы модуля WGU, и как сигнал управления в модуле ML;
  • в накапливающем сумматоре оператора свертки вектор-столбца (ADDRV32): 1 суммирование, 2 операции "И" и 3 пересылки;
  • в блоке управления (CADDR32) циклом накопления: 16 генераций задающей циклической константы C_{8}1 и 32 ее пересылки; 4 генерации циклической константы C_{32}1 и 4 ее пересылки; 4 контроля приращения циклической константы С_{2}^{14}1 и 4 ее пересылки; 4 контроля приращения циклической константы С_{2}^{14}32 и 8 ее пересылок в сумматор-накопитель;
  • в накапливающем сумматоре построчной гистограммы (ADDRH32): 1 суммирование, 2 операции "И" и 3 пересылки;
  • в блоке обнуления (DWHCU) паразитных взаимодействий: 1 операция AND и 1 пересылка результата.

Таким образом, пропускная способность модуля свертки вектор-столбца ( SMM ) по потоку смеси из 8-битных, 32-битных и 128-битных слов-инструкций составляет: V_{I} = [(1+1+1)+(1+1+1)+16+32+4+36)]+(1+2+3)+ (16+32+4+4+4+4+4+8)+(1+2+3)+(1+1)]*F_{t} /128 = 184*F_{t} /128 = 1,4375*F_{t} .

Модуль определения положение центра масс астроориентира на оси Х ( CMM - рис. 8.20) представляет собой:

  • 8-разрядный делитель (DL), где в качестве делимого выступают значения B_{S} свертки вектор-столбца построчной гистограммы отфильтрованного изображения, а в качестве делителя - суммарная черно-белая яркость одного кадра обрабатываемого изображения;
  • преобразователь "прямой код - дополнительный код" делимого (DCC) при смене знака с (+D) на (-D), который объединен с блоком генерации циклической константы C_{32}1.
Структурная схема модуля вычисления "центра масс" (CMM)

Рис. 8.20. Структурная схема модуля вычисления "центра масс" (CMM)

Делитель DL (рис. 8.21) на 7 двоичных разрядов занимает бит-матрицу размером 8*62 БП и имеет:

  • три информационных входа: делимого B_{S} (на рис. 8.21-а - это БП (3, 9, 3)) и делителя, который на 966 такте появляется на входах БП (4, 9, 3) и (6, 9, 3) с отрицательным (-D) и положительным (+D) знаком соответственно;
  • один управляющий вход (1, 9, 3), где на 966 такте появляется циклическая константа C_{32}1, задающая разрядность и формат обрабатываемых данных.

В данном случае использован классический для конвейерной арифметики формат фиксированной запятой: "нулевой" (старший) 32-й бит служит для блокирования паразитного распространения "единицы переноса" по потоку данных, 31-й бит - для хранения и передачи знака операнда, а остальные 30 бит - для хранения и передачи значащей части операндов.

Из приведенных данных видно, что из 214 тактов, соответствующих полному циклу обработки одного кадра изображения, делитель полезно используется только на 32 тактах, но занимает порядка 12 % всей площади бит-матрицы.

Первый результат на выходе делителя появляется начиная с 17699 такта, и представлен в инверсном виде.

В делителе использован алгоритм деления со сдвигом и восстановлением остатка:

\alpha_i =
\begin{cases}
2\alpha_{i-1}-D, & \text{ если } \alpha_{i-1} \ge 0, \\
2\alpha_{i-1}+D, & \text{ если } \alpha_{i-1} \pi 0.
\end{cases}  	   
\,\,\,\,
z_i =
\begin{cases}
0, & \text{ если } \alpha_{i} \pi 0, \\
1, & \text{ если } \alpha_{i} \ge 0.
\end{cases}

где \alpha_i - остаток на i -м цикле деления; z_{i} - разряд частного, причем i=\overline{0,k},если речь идет о \alpha, и i=\overline{1,k}, если речь идет о z. Здесь k - разрядность частного.

Модуль преобразования из прямого в дополнительный код делителя (-D) на рис. 8.21 занимает бит-матрицу в пределах БП (1, 10)-(6, 13). Его топология существенно "деформирована" по сравнению с рис. 4.2 (см. раздел 4.1), что связано с принудительной инверсией знакового разряда.

Из приведенных данных видно: в модуле определения положения центра масс астроориентира на оси Х ( CMM ) в одном 214 -битном цикле выполняются:

  • в 7-разрядном делителе (DL): 29 операций деления 32-битных операнда с 7-битным результатом и 29 пересылок результата, из которых только один информативен;
  • в преобразователе "прямой код - дополнительный код" делимого (DCC): 29 инверсий знака, 29 преобразований и 29 пересылок результата;
  • в блоке генерации циклической константы C _{32}1: 211 генераций циклической константы C_81 и 212 ее пересылок, 29 генерации циклической константы C_{32}1 и 211 ее пересылок.

Таким образом, физическая пропускная способность модуля определения положения центра масс астроориентира на оси Х ( CMM ) по потоку 32-битных слов-инструкций составляет

V_I = [(2^{9}+2^{9})+(2^{9}+2^{9}+2^{9})+(2^{11}+2^{12}+ 2^{9}+2^{11})]*F_t /2^{14} \approx 2^{13}*F_{t} /2^{14} = 0,5 F_{t}.

Фактическая (пользовательская) пропускная способность этого операционного модуля приближается к нулю, так как за 214 тактов фактически исполняется только одна 7-битная операция деления над 32-битными операндами.

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

Евгений Акимов
Евгений Акимов

Добрый день!

 

Скажите, пожалуйста,планируется ли продолжение курсов по нанотехнологиям?

Спасибо,

Евгений