Программно-аппаратные платформы и вычислительные наноструктуры

Инструментальные платформы МКМД-бит-потоковых вычислительных технологий

Разбить на страницы
Показывать лекцию целиком

6.1. Структура программных средств инструментальной платформы интерактивного микропрограммного конструирования

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

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

  • операционное ядро должно обеспечить максимальное "покрытие" функций и этапов проектирования минимумом доступных пользователю программных процедур, поддерживающих проект в структурно-функциональной, программно-аппаратной и диагностической плоскостях (см. рис. 3.5 и рис. 5.2);
  • интерфейс должен позволять пользователю в максимальной степени концентрировать свое внимание на решаемой задаче за счет эффективного однократного создания библиотечных операционных модулей и их многократного использования (импорта и экспорта) при создании устройств различного назначения: операционных, адресных, управляющих, интерфейсных и диагностических.
  • Сама инструментальная платформа является системой открытого типа, как по средствам синтеза, так и по накапливаемым результатам.

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

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

    (рис 6.1) Структура инструментальной платформы

    мощность всего функционального пространства допустимых флуктуаций напрямую зависит от мощности действующей в СБИС карты отказов.

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

    При создании инструментальной программной платформы МКМД-бит-потоковых технологий использование объектно-ориентированного подхода предопределяется двумя факторами:

  • объективно существующим отношением иерархии между проектируемыми объектами;
  • максимальным "вложением" одних и тех же операционных и интерфейсных функций, поддерживающих проект в функциональной и диагностической плоскостях.
  • В операционное ядро инструментальной платформы интерактивного микропрограммного конструирования ( Designer ) входят:

  • программный имитатор работы бит-матрицы ( IMOS ) с модифицируемой системой связей и бит-инструкций при его использовании в диагностической плоскости проекта;
  • графический редактор, отображающий на плоскости результаты имитационного моделирования на каждом такте работы бит-матрицы, а также компоновки и редактирования, выполняемых с использованием аффинных преобразований и обеспечивающих различные варианты размещения микропрограмм операционных модулей на бит-матрице типа параллельных переносов, вращений, поворотов и т. п. Инструментальные средства цифровых процессоров обработки сигналов (рис. 6.2) значительно проще, так как позволяют использовать пошаговый режим отладки программ непосредственно на ЦПОС. В этом случае инструментальная ЭВМ поддерживает только интерфейс обмена программами и данными, что обеспечивает программисту "доступ" ко всем используемым аппаратным ресурсам на каждом такте их использования.
  • (рис 6.2) Структура инструментальных платформ ЦПОС

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

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

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

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

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

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

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

    Уникальность МКМД-бит-потоковых технологий как раз и состоит в том, что в их рамках можно эффективно парировать целые карты отказов, для чего достаточно иметь некратный аппаратный резерв, который может составлять от 10 до 30 % "рабочего поля" бит-матрицы.

    6.2. Пользовательский интерфейс и операционное ядро инструментальной платформы интерактивного микропрограммного конструирования

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

    Designer положены общепризнанные принципы построения "дружественных интерфейсов":

  • "интерфейс - максимально близкий к стандартам Windows ";
  • "часто используемые элементы - "на поверхности", редко используемые - в меню";
  • "панели, не используемые на этапе работы, скрываются". Рабочее пространство Designer разделено на пять частей (рис. 6.3):
  • меню и панель основных команд, рабочее пространство, переключатели режимов, панель докеров, шкала трассировки.

    (рис 6.3) Общий вид инструментальной платформы Designer

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

    Designer может работать в пяти режимах: " Редактирование кода ", " Работа с выделением ", " Входы-выходы ", " Такты " и " Отладка ". Каждому режиму соответствует свое "окно", которое становится видимым при выборе соответствующего режима. "Окна" (докеры) реализованы с использованием технологии Drag Dock. Любое "окно" либо строго вложено в определенную форму (рис. 6.4), либо допускает свободное перемещение в пределах экрана (рис. 6.5).

    (рис 6.4) "Окно" в форме(рис 6.5) Открепленное "окно"(рис 6.1) "Окно" в форме
    Содержимое элементов меню
    Файл Работа с файлами
    Новый проект - создать PGM Создать новый проект
    Новый проект - открыть PGM Создать новый проект на основе существующего PGM-файла
    Открыть проект Открыть существующий проект
    Сохранить проект Сохранить проект с текущим именем
    Сохранить проект как... Сохранить проект, указав имя
    Импорт - PGM файл... Вставить в проект микропрограмму
    Импорт - РIO файл... Добавить входные последовательности
    Экспорт - PGM файл... Сохранить микропрограмму в формате PGM
    Печать... Распечатать микропрограмму
    Выход Закрыть Designer
    Правка Внесение изменений
    Вырезать Стандартные операции с буфером
    Копировать
    Вставить
    Атрибуты Изменение размера матрицы
    Повернуть Выполнение аффинных преобразований
    Отобразить
    Вставить из библиотеки Вставить библиотечный терм
    Параметры Настройка среды
    Вид Изменение цветовой схемы редактора
    Отображать все Отображение незадействованных связей
    Окно Настройка панелей
    Навигатор Отображать навигацию

    Если открепить все "окна", рабочее пространство заметно увеличится, что особо актуально при разрешениях экранов размером 800х600 пикселей и меньше.

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

    (рис 6.6) "Окно" "Навигация"

    Режим " Редактирование кода " (рис. 6.7) поддерживается соответствующим "окном" (рис. 6.8), с помощью которого выполняются все операции интерактивного формирования бит-инструкции выделенного бит-процессора.

    (рис 6.7) Режим "Редактирование кода"

    "Объектом" интерактивного графического редактирования является содержимое регистра бит-инструкции (см. рис. 3.2), которое включает: код операции (поле COP ), признак дополнительной задержки (поле FD ), направления приема двух входных операндов АЛУ (поля А1 и А2) и одного входного операнда транзита (поле А3), а также направления передачи выходных операндов АЛУ, транзита и транзита с задержкой (поля А4-А6). При выборе текущего входа/выхода в окне появляется его направление. Нажатием на нужную стрелку выбранный вход изменяет свое направление. Операция АЛУ выбирается из выпадающего списка. Флаг задержки определяется галочкой " Задержка ".

    (рис 6.8) "Окно" "Редактирование кода"

    Режим " Входы/выходы " (рис. 6.9) поддерживает "окно" назначения входов/выходов (рис. 6.10), через которое можно работать только с выделенным бит-процессором. В этом режиме задаются все контрольные точки для работы программы имитационного моделирования IMOS. Нажатие на выбранной стрелке "окна" открывает диалог для ввода (рис. 6.11) цвета отображения входа на шкале трассировки, начальной задержки по данному входу и входной последовательности. Нажатие на прямоугольник, отображающий цвет входа, вызывает стандартный диалог выбора цвета. По умолчанию цвета назначаются случайным образом. По кнопке " Удалить " данный вход удаляется из списка. После назначения входа он отображается на шкале трассировки.

    (рис 6.9) Режим "Входы-выходы"(рис 6.10) "Окно" "Назначения входов/выходов" (первый шаг диалога)(рис 6.11) "Окно" "Назначение входов/выходов" (второй шаг диалога)

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

    Для задания циклической входной бит-последовательности (рис. 6.12) "окно" рис. 6.11 необходимо перевести в режим " Вставка ", в результате чего появится "окно" рис. 6.13. В этом режиме непосредственно определяется содержимое операнда (в данном случае 1001110110) и задается количество циклов его повторения (в данном случае 3), которое после выхода из "окна" отображается на шкале трассировки (рис. 6.14).

    (рис 6.12) Режим "Входы-выходы" при задании циклического входного воздействия(рис 6.13) "Окно" назначения входов/выходов (третий шаг диалога)(рис 6.14) Циклическая последовательность на шкале трассировки

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

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

    Designer имеет встроенное средство интерактивного расчета фазы продвижения вычислительной волны по бит-матрице. Выбор интерактивного режима предопределен неоднозначностью правил распространения вычислительной волны. Например, требуется вычислить время задержки в бит-процессоре рис. 6.16, на один из вводов которого подается содержимое 01000010 из бит-инструкции "Генератор константы" ( CG ). Данное содержимое можно интерпретировать и как число 66, если считать, что на выходе бит-процессора оно появляется на первом такте работы, и как число 33, если считать, что на выходе бит-процессора оно появляется на втором такте работы. Отсюда, номер такта в указанной области микропрограммы можно рассчитать, отталкиваясь:

    (рис 6.15) Режим "Такты"(рис 6.16)
  • от номера такта операнда, пришедшего на вход in 1;
  • от номера такта первой единицы, вышедшей из out 1;
  • из номера такта первой единицы, вышедшей из out 2 и т. п. Подобная неоднозначность может быть разрешена только самим
  • разработчиком микропрограммы либо высокоразвитой системой искусственного интеллекта, предлагающей (микро)программисту возможные варианты устранения возникающих неоднозначностей и точек их локализации. Поэтому в Designer использован смешанный режим определения времени задержки в каждом бит-процессоре, в котором автоматически вычисляется задержка по отношению к входному операнду с минимальной входной задержкой, которую (микро)программист может изменить по своему усмотрению в любой "контрольной" точке микропрограммы, после чего цикл автоматического вычисления должен быть повторен.

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

    (рис 6.17) "Окно" "Расчет тактов"(рис 6.18) "Окно" "Коррекция такта"(рис 6.19) "Окно" "Коррекция такта"

    который выделяется красным цветом (рис. 6.19) и сохраняется в файле с расширением *.MPR (рис. 6.20).

    Для компоновки объектов проектирования МКМД-бит-потоковых технологий Designer переводится в режим " Работа с выделением " (рис. 6.21), который поддерживается "окном" " Аффинный преобразователь " (рис. 6.22).

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

    (рис 6.20) Режим "Такты" с принудительной коррекцией(рис 6.21) Режим "Работа с выделением"

    В режиме " Отладка " прежде всего необходимо задать количество тактов работы IMOS, для чего используется поле " Настройка " меню основных команд (рис. 6.23).

    При отладке IMOS может работать в двух режимах - пошаговом и автоматическом, то есть на всю "глубину" моделирования: по всем контрольным точкам, заданным на шкале трассировки, и на всех тактах, заданных в окне " Настройка ". Результаты моделирования отражаются в виде двоичных последовательностей на выходах, определенных на шкале трассировки (рис. 6.24-a), с той разницей, что в режиме пошаговой отладки распространение фронта вычислительной волны по бит-матрице фиксируется распространением "желтых шариков", отвечающих "единичным" значениям распространяемых данных (рис. 6.24-б).

    (рис 6.22) "Окно" "Аффинный преобразователь"(рис 6.23) Режим "Отладка" (задание количества тактов)(рис 6.24) б) Режим "Пошаговой отладки"

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

    Проблемно-ориентированная инструментальная платформа MatrixDesigner является надстройкой над платформой Designer, предназначена для термального синтеза МКМД-бит-потоковых субпроцессоров векторно-матричной обработки потоков данных и включает:

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

  • генерация операционных устройств в зависимости от заданных параметров;
  • поддержка выполнения всего спектра аффинных преобразований над операционными устройствами;
  • обеспечение взаимодействия с другими инструментальными платформами;
  • использование системного буфера обмена для экспорта набора устройств между различными копиями MatrixDesigner ;
  • настройка пользовательского интерфейса под потребности разработчика;
  • экспорт и импорт операционных устройств (в том числе пользовательских) и данных проекта в различных форматах;
  • сохранение и загрузка всех данных создаваемой схемы в виде файла проекта.
  • Пользовательский интерфейс реализует:

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

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

    (рис 6.25) Пользовательский интерфейс инструментальной среды MatrixDesigner

    Меню MatrixDesigner содержит пункты: " Файл ", " Правка ", " Специальное ", " О программе ".

    Меню " Файл " содержит функции управления проектом (рис. 6.26).

    (рис 6.26) Меню "Файл"

    Пункт " Новый …" меню " Файл " позволяет создать новый проект. При этом пользователю предлагается ввести размер новой матрицы (рис. 6.27).

    (рис 6.27) Меню "Новый…"

    Через пункт меню " Открыть проект " можно загрузить ранее созданный проект, указав его имя.

    Файлы проекта инструментальной платформы MatrixDesigner имеют расширение *.dpj. В таком файле содержатся данные всей созданной пользователем схемы. Для сохранения на диск нового созданного проекта и для сохранения изменений, сделанных в уже существующем проекте, существуют пункты меню " Сохранить " и " Сохранить как ". Если проект является вновь созданным, то при нажатии на кнопку " Сохранить " пользователю предлагается ввести имя нового файла проекта; если же проект уже имеет имя, то при нажатии на эту кнопку происходит сохранение проекта под старым именем.

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

    Пункт " Правка " позволяет выполнять основные операции редактирования (рис. 6.28).

    (рис 6.28) Меню "Правка"

    В этом меню пункты " Вырезать ", " Копировать ", " Вставить ", " Удалить " выполняют стандартные действия. При этом объекты, попавшие в системный буфер обмена (по команде " Копировать " или " Вырезать "), можно разместить в другие копии программы MatrixDesigner, где работа ведется над другим проектом.

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

    (рис 6.29) Меню "Специальное"

    Нажатие на пункт меню " О программе " позволяет увидеть информацию о версии программного продукта.

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

    Кнопки на панелях управления проектом повторяют функциональность аналогичных пунктов главного меню программы. Исключение составляет команда " Экспортировать " (рис. 6.30). Она позволяет сохранить текущий проект в формате файла *.PGM, который поддерживается ранее созданной низкоуровневой средой разработки Designer.

    (рис 6.30) Меню "Экспортировать"

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

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

    (рис 6.31) Область редактирования проекта

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

    (рис 6.32) Содержимое окна параметров слов-инструкции ADD

    После нажатия на кнопку " OK " на бит-матрице появляется новое устройство с заданными параметрами (в данном случае это сумматор - рис. 6.33).

    (рис 6.33) Отображение сгенерированной слов-инструкции ADD в рабочем поле

    Нажав правую кнопку мыши на устройстве и выбрав в появившемся контекстном меню пункт " Детализировать ", получим графическое представление топологии выбранной микропрограммы (рис. 6.34).

    (рис 6.34) Детализация сгенерированной слов-инструкции ADD

    Описание некоторых элементов графического отображения топологии микропрограммы представлено в табл. 6.2.

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

    Описание условных графических отображений бит-процессоров в MatrixDesigner
    Условное изображение Комментарий
    В канале АЛУ бит-процессора выполняется операция ADD над операндами, поступающими на первом такте слева и снизу. Результирующий операнд выдается на 3 такте вправо. В канале транзита входной операнд поступает снизу на 1 такте и подается с задержкой на один такт вверх, а с задержкой на 3 такта - вниз
    В канале АЛУ выполняется операция "расширенный транзит"(WTR), в которой по каналам "слева-вниз" и "снизу-вправо" операнды распространяются с задержкой на 1 такт, а по каналу "справа-налево" - с задержкой на 2 такта
    В канале АЛУ выполняется операция "запоминание единицей", в которой информационный операнд подается на 0 такте слева, а управляющий операнд - на 2 такте справа и, если он имеет вид циклической константы 00…01, то на выходе с дополнительной задержкой на 2 такта по отношению к управляющему входу запоминается содержимое $$(n-3)$$ -го бита информационного операнда. Канал транзита не используется
    В каналах АЛУ и транзита выполняется слияние потоков по "ИЛИ" по правилу: $$x(t+1)\lor x(t+2)\lor x(t+3)$$, где $$\lor$$ - операция "ИЛИ", а результирующий операнд поступает на правый выход бит-процессора с задержкой на 1, 2 и 3 такта
    В канале АЛУ реализуется операция NOP, то есть он не используется, а в канале транзита входной операнд поступает слева и передается вправо с дополнительной задержкой на 2 такта, а вниз - с дополнительной задержкой на 1 такт
    Команды генерации основных устройств
    Команда Описание
    $$MLT$$ Умножитель
    $$ADD$$ Сумматор
    $$DCC$$ Трансформатор кода
    $$DIV$$ Делитель
    $$С[1,m]$$ Генератор константы вида $$С[1,m]$$
    $$С[n,m\$$ Генератор константы вида $$C[n,m]$$
    $$С+1$$ Счетчик +1 (инкремент)
    $$С-1$$ Счетчик -1 (декремент)
    $$С+1S$$ Счетчик +1 с предустановкой
    $$С -1S$$ Счетчик -1с предустановкой
    $$In$$ Параллельно-последовательный интерфейс
    $$Out$$ Последовательно-параллельный интерфейс

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

    (рис 6.35) Меню "Нестандартное устройство"(рис 6.36) Коммутатор выходных портов ОЗУ

    В частности, "нестандартным" устройством является коммутатор, который обеспечивает перераспределение 8 выходов ОЗУ между 2 входами операционного устройства субпроцессора векторно-матричной обработки данных (рис. 6.36). "Нестандартность" такого коммутатора обусловлена пространственным совмещением FIFO -регистровых шин передачи входных данных и адресов, управляющих обменом с ОЗУ.

    Чтобы добавить в проект это нестандартное устройство, достаточно в файл *.PGM этого устройства добавить строки с описанием, например:

    0088 CE87 7E87 0083 0083 0083 0083 0083 0083 0083 0083 6531 6734 64F1
    0088 C98D 4A47 C9B8 C9B8 C9B8 C9B8 C9B8 C9B8 C9B8 C9B4 66F1 6E58 66F9
    0088 C60F 0041 4D20 4D28 4D28 4D28 4D28 4D28 4D28 4D28 6632 6D1E 6639
    62E1 6261 6261 6221 62E1 62E1 62E1 62E1 62E1 62E1 62F1 7631 62F1 7847
    6263 6261 6261 6261 6221 62E1 62E1 62E1 62E1 62F1 66F1 6631 62F1 7847
    62E1 6261 6261 6261 6261 6221 62E1 62E1 62F1 66F1 66F1 6631 62F1 7847
    6263 6261 6261 6261 6261 6261 6221 62F1 66F1 66F1 66F1 6631 62F1 7B4B
    62E1 6261 6261 6261 6261 6263 6232 6631 66F1 66F1 66F1 6631 62F1 6263
    6263 6261 6261 6261 6263 6223 6263 6263 6631 66F1 66F1 6631 62F1 6253
    62E1 6261 6261 6263 6223 6263 6263 6263 6263 6631 66F1 6631 62F1 6253
    6263 6263 6263 6223 6263 6263 6263 6263 6263 6263 6631 6631 62F1 6253
    0088 CE05 00C3 4720 4728 4728 4728 4728 4728 4728 4728 6263 6E39 6043
    0088 CB87 4ACD CB98 CB98 CB98 CB98 CB98 CB98 CB98 CB9C 6263 6594 0054
    0088 C68D 768D 0081 0081 0081 0081 0081 0081 0081 0081 0044 0000 0000
    
    C $INPORT(0,3,0,<Порт 1>)
    C $INPORT(0,4,0,<Порт 2>)
    C $INPORT(0,5,0,<Порт 3>)
    C $INPORT(0,6,0,<Порт 4>)
    C $INPORT(0,7,0,<Порт 5>)
    C $INPORT(0,8,0,<Порт 6>)
    C $INPORT(0,9,0,<Порт 7>)
    C $INPORT(0,10,0,<Порт 8>)
    
    C $INPORT(11,0,1,<Управление 1: Циклическая константа>)
    C $INPORT(12,0,1,<Управление 2: Адрес порта по входу 1 ОУ>)
    C $INPORT(13,0,1,<Управление 3: Адрес порта по входу 2 ОУ>)
    
    C $INPORT(13,3,2,<Вход  адреса  ОЗУ порта 1>)
    C $INPORT(13,4,2,<Вход  адреса  ОЗУ порта 2>)
    C $INPORT(13,5,2,<Вход  адреса  ОЗУ порта 3>)
    C $INPORT(13,6,2,<Вход  адреса  ОЗУ порта 4>)
    C $INPORT(13,7,2,<Вход  адреса  ОЗУ порта 5>)
    C $INPORT(13,8,2,<Вход  адреса  ОЗУ порта 6>)
    C $INPORT(13,9,2,<Вход  адреса  ОЗУ порта 7>) 
    C $INPORT(13,10,2,<Вход адреса ОЗУ порта 8>)
    
    C $OUTPORT(0,3,0,<Адрес  порта ОЗУ 1>)
    C $OUTPORT(0,4,0,<Адрес  порта ОЗУ 2>)
    C $OUTPORT(0,5,0,<Адрес  порта ОЗУ 3>)
    C $OUTPORT(0,6,0,<Адрес  порта ОЗУ 4>)
    C $OUTPORT(0,7,0,<Адрес  порта ОЗУ 5>)
    C $OUTPORT(0,8,0,<Адрес  порта ОЗУ 6>)
    C $OUTPORT(0,9,0,<Адрес  порта ОЗУ 7>) 
    C $OUTPORT(0,10,0,<Адрес порта ОЗУ 8>)
    
    C $OUTPORT(12,0,1,<Информационный выход первого входа 2 ОУ>) 
    C $OUTPORT(13,0,1,<Информационный выход первого входа 1 ОУ>),

    где первые 14 строк - шестнадцатеричное представление бит-инструкций файла *.PGM.

    Команда " Импорт " позволяет добавить это устройство в проект (рис. 6.37).

    (рис 6.37) Отображение "нестандартного" интерфейса в рабочем поле

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

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

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

    клавишу " Shift ". Если в выбранном новом положении устройство выходит за границы матрицы, то перемещение не будет выполнено. Разрешается наложение объектов. Эта возможность предусмотрена для удобства компоновки устройств в случае очень "плотной" схемы. Построение оптимальной топологической схемы проектируемого сопроцессора невозможно без аффинных преобразований. Для этого предусмотрена панель, показанная на рис. 6.38.

    (рис 6.38) "Окно" "Аффинные преобразования"

    Кнопки (слева направо) выполняют следующие действия:

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

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

    (рис 6.39) "Окно" "Масштаб"

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

    Есть еще один альтернативный способ изменения положения свойств и размещения объектов. Этот способ основан на использовании контекстных меню (рис. 6.40).

    (рис 6.40) Контекстное меню

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

    Чтобы посмотреть "внутреннее наполнение" процессорного устройства (отображение ведется в нотации, принятой в Designer ), контекстное меню содержит пункт " Детализировать …". Детализированное устройство показано на рис. 6.36.

    С помощью " Сохранить в PGM *" можно сохранить выбранное пользователем устройство в файл PGM (который поддерживается программой Designer ) расширенной структуры (с сохранением свойств прибора, то есть его входов, выходов, цвета и т. д.). Из файла такой структуры может производиться импорт нестандартных устройств в проект способом, описанным выше.

    В MatrixDesigner разработчику предоставлен инструмент гибкой настройки программного средства. Это можно сделать, нажав на кнопку " Настройка " на панели инструментов. Диалог настроек программы содержит две вкладки (рис. 6.41).

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

    (рис 6.41) Вкладки "окна" "Настройки"

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

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

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

    (рис 6.42) Схема преобразования задач пользователя МКМД-бит-потокового (суб)процессора в исполняемый формат

    В связи с этим, начальным "кирпичиком" создаваемой инструментальной среды проектирования МКМД-бит-потоковых вычислителей стал класс Processor (рис. 6.43), который представляет собой один бит-процессор со всеми присущими ему свойствами и методами. Среди методов наиболее важными являются 3 конструктора с разными параметрами и методы аффинных преобразований (вращение, отображение относительно диагоналей и осей), среди свойств - направления получения операндов ( InA1, InA2 ) и направление отправки результата ( OutA ), а также

    (рис 6.43) Основные классы реализации инструментальной среды

    код операции ( OperationCode ) и направление канала транзита ( InTr, OutTr, OutTrD ). Кроме того, для каждого бит-процессора можно получить и установить значение его регистра ( Register ).

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

    В этом классе определены основные действия (методы), которые можно применять к процессорному устройству. К ним относятся:

  • аффинные преобразования: повороты ( Rotate90 ), отражения относительно осей ( RotateOnX, RotateOnY ) и диагоналей ( RotateOnDiagonal );
  • загрузка микропрограмм устройств из файла и потоков данных;
  • сохранение микропрограмм устройств в файл или потоков данных.
  • Каждое устройство обладает следующими основными свойствами:

  • разрядность ( N ),
  • описание ( Description ),
  • цвет отображения в пользовательском интерфейсе ( DeviceColor ),
  • размеры по горизонтали и вертикали ( SizeX, SizeY ), которые задаются параметрами описывающего прямоугольника ;
  • положение на проектируемой схеме ( XPos, YPos ).
  • Каждое новое процессорное устройство является потомком класса ProcessorDevice (рис. 6.44).

    (рис 6.44) Основные процессорные устройства, производные от ProcessorDevice

    Очень важным методом класса ProcessorDevice является метод GenerateDeivce, который создает выбранное процессорное устройство в зависимости от разрядности. У каждого класса процессорных устройств этот метод свой. Кроме того, каждое устройство при создании инициализирует свое описание, цвет, размер и т. д. В программе реализовано более 20 различных процессорных устройств. Среди них умножитель, сумматор, делитель, последовательно-параллельный и параллельно-последовательный интерфейсы, коммутационные и другие устройства. Каждое из них пользователь может автоматически сгенерировать, указав требуемую разрядность. Каждое процессорное устройство кроме всего прочего имеет входы операндов и констант и выходы результатов и промежуточных данных. Для хранения информации такого рода существует класс DevicePort, который описывает вход и выход устройства (далее порт устройства). Каждый порт является или входом, или выходом по отношению к процессорному устройству ( Enter ). Кроме того, порт имеет описание ( Description ), положение на устройстве ( X, Y ) и направление ( Direction ).

    Все устройства размещаются на имеющейся в распоряжении пользователя бит-процессорной матрице. В программе она представлена классом ProcessorMatrix. Главными ее свойствами являются размер (по вертикали ( YSize ) и горизонтали ( XSize )) и положение курсора вставки ( CursorXPos и CursorYPos ). Объект этого класса содержит в себе список процессорных устройств, находящихся на бит-матрице. Основные методы ProcessorMatrix - это AddDevice (добавление устройства на бит-матрицу), DeleteDevice (удаление устройства), ReadFromStream (считать содержимое процессорной матрицы из потока), SaveToStream (сохранить процессорную матрицу со всеми устройствами в поток), GetDevice (получить устройство), GetDeviceCount (получить количество процессорных устройств, находящихся на бит-матрице).

    Приведенных функций и уровней вложенности достаточно для проектирования сверхпараллельных (порядка 10000 бит-процессоров) МКМД-бит-потоковых операторов. Более высокий уровень организации вычислений связан с последовательной активизацией и загрузкой поток-операторов в бит-матрицу.

    Инструментальное средство MatrixDesigner реализовано в среде Microsoft Visual Studio 2005 и написано на языке C#.

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

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

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

  • исходным объектом преобразований служит топологическая схема микропрограммы, полученная дорогостоящим эмпирическим путем;
  • полностью сохраняются фазовые соотношения между пространственно-временными потоками данных внутри преобразуемых микропрограммных модулей;
  • для восстановления информационных связей и фазовых соотношений по потокам данных между перемещаемыми и неподвижными микропрограммными модулями используются бит-процессоры, способные выполнить требуемые коммутационные функции. Аффинные преобразования в геометрии сохраняют линейные соотношения между объектами преобразований, а при их использовании в системе парирования отказов и при проектировании МКМД-бит-процессорных матриц, кроме преобразования координат, размещения бит-операций на матрице, в ряде случаев требуют еще и преобразования содержимого адресной части перемещаемых по бит-матрице микропрограммных модулей.
  • Рассмотрим преобразования координат размещения бит-команд в поток-операторе пользователя (бит-процессорном устройстве). Здесь $$i$$ и $$j$$ - координаты бит-процессора. В общем случае его координаты после проведения аффинных преобразований изменятся на $$\tilde{i}$$ и $$\tilde{j}$$, $$i = \overline{1,i_m}$$, $$j = \overline{1,j_m}$$. Алгоритмы вычисления нового положения каждого бит-процессора:

  • Поворот на +90o: $$\tilde{i} = j,\,\tilde{j}=i_{m} -(i-1)$$.
  • Поворот на -90o: $$\tilde{i} = j_{m} - (j -1),\, j = i$$.
  • Вращение вдоль оси Х: $$\tilde{i} = i_{m} - (i - 1),\, \tilde{j} = j$$.
  • Вращение вдоль оси Y: $$\tilde{i} = i_{m},\, \tilde{j} = j_m -(j-1)$$.
  • Вращение вдоль главной диагонали: $$\tilde{i} = j,\, \tilde{j} = i$$
  • Вращение вдоль побочной диагонали: $$\tilde{i} = j_{m} - (j - 1),\, \tilde{j} = i_m - (i - 1)$$.
  • В каждом из рассмотренных выше случаев аффинных преобразований есть необходимость изменения содержимого регистра каждого бит-процессора. Преобразование кодов бит-команд производится следующим образом ( $$R$$ - регистр бит-процессора, $$\tilde{R}$$ - значение регистра бит-процессора после преобразования):

  • Поворот на +90o:$$\tilde{R} = \tilde{R}_1 \lor \tilde{R}_{2}, \tilde{R}_1 = (R_1 + B_2) \land B_1, \tilde{R}_1 = (R_2 + B_3) \land \overline{B}_1, \\ R_1 = R \land B_1, R_2 = R \land \overline{B}_1$$

    где $$B_{1} = 1111.0011.0011.0011;\\ B_{2} = 0000.0001.0001.0001; \\ B_{3}(T) = B_{2} (T+2) = 0000.0100.0100.0100$$.

  • 2. Поворот на -90o: то же, что и на +90o, только $$B _{2} = 0000.0011.0011.0011; \\ B _{3} = 0000.1100.1100.1100$$.
  • Вращение вдоль оси Х: $$\tilde{B}_4 = R\land B_4,\tilde{R} = R(T)\oplus\tilde{B}_4(T+1)$$, где $$B_{4}(T) = B_2(T) \lor B_2(T+2) = 0000.0101.0101.0101$$.
  • Вращение вдоль оси Y: $$\tilde{В}_{5} = \overline{R} \land В_{4}, \tilde{R} = R(T) \oplus \tilde{В}_{5}(Т+1)$$.
  • Вращение вдоль главной диагонали: $$\tilde{R} = R\oplus B_{4}$$.
  • Вращение вдоль побочной диагонали: $$\tilde{R} = R\oplus B_{5}$$, где $$В_{5} = 0000.1111.1111.1111$$.
  • Входы и выходы устройства в нотации MatrixDesigner изображаются в виде треугольников. Порт устройства является объектом, свойство которого пользователь может увидеть в таблице свойств выбранного объекта. Чтобы обеспечить эту возможность, необходим алгоритм определения принадлежности точки треугольнику. На вход такого алгоритма подаются координаты вершин треугольника в прямоугольной системе координат и координаты точки, а выходом алгоритма является логическое значение true, если точка принадлежит треугольнику, и false, если точка лежит за пределами треугольника. Эту проверку осуществляет метод Triangle::IsPointInTriangle. Алгоритм следующий:

  • Если тестируемая точка совпадает с одной из вершин треугольника, вернуть true, иначе перейти к пункту 2.
  • Найти уравнение прямой для произвольной стороны треугольника (вершины P 1 и P 2) L 1.
  • Найти уравнение прямой для отрезка между вершиной треугольника, которая не принадлежит L 1 ( P 3), и точкой, где щелкнула мышь ( P 4)( L 2).
  • Найти точку пересечения L 1 и L 2 ( P 5). Если прямые параллельны, вернуть false, иначе перейти к пункту 5.
  • Найти расстояния между P 1 и P 2, между P 1 и P 5 и между P 2 и P 5 и, используя неравенство треугольника, проверить, что точка P 5 лежит на отрезке от P 1 до P 2. Если проверка успешна, перейти к пункту 6, иначе вернуть false.
  • Найти расстояния между P 3 и P 5, между P 3 и P 4 и между P 5 и P 4. Аналогично, используя неравенство треугольника, проверить, что проверяемая точка лежит на отрезке от P 3 до P 5. Если это условие выполняется, то точка лежит внутри треугольника (вернуть true ), иначе вернуть false.
  • Одной из наиболее сложных задач в плане программной реализации является создание пользовательского интерфейса, особенно той его части, которая отвечает за визуальное отображение данных проекта (бит-матрица и находящиеся на ней операционные устройства) и работу с ним. Чтобы отделить реализацию этого элемента пользовательского интерфейса от создания других частей программы, модуль рисования и работы над бит-матрицей оформлен в виде пользовательского элемента управления ( UserControl ) и реализован в классе MatrixDirectDrawView. Именно в нем реализованы методы копирования и вставки объектов, методы рисования данных проекта на экране, а также методы взаимодействия программы с пользователем посредством клавиатуры и мыши. Особого внимания заслуживает алгоритм перерисовки проекта. Входными данными здесь являются процессорная матрица, ее размер, находящиеся на ней операционные устройства, текущий масштаб, положение полос прокрутки. Алгоритм рисования проекта в любой момент времени:

  • 1 Рассчитать, какие бит-процессоры из бит-матрицы будут видны на экране.
  • Заполнить матрицу цветом фона.
  • Найти смещение сетки бит-процессоров от левого верхнего угла элемента управления.
  • С помощью данных, полученных на шаге 1, найти список операционных устройств, которые видны на экране.
  • Для каждого устройства из списка выполнить процедуру рисования. Она заключается в изображении прямоугольника (цвет которого определяется устройством), и рисовании портов (входов и выходов).
  • Нарисовать сетку бит-процессоров.
  • Если есть устройства, выбранные пользователем, то нарисовать рамку выделения вокруг них.
  • Нарисовать курсор вставки.
  • Важным является алгоритм определения номера устройства, на которое щелкнула мышь. Чтобы реализовать эту задачу наиболее просто

    и быстро, применен следующий подход. Создается таблица размещения устройств ( Location Table ), которая представляет собой двумерный массив целых чисел, размер которого равен размеру бит-матрицы в бит-процессорах. Значение каждого элемента массива с координатами [i, j] равно номеру процессорного устройства в списке процессорных устройств матрицы, которое "перекрывает" позицию [i, j]. Если несколько устройств перекрывают позицию [i, j] (то есть устройства накладываются друг на друга), то значение элемента таблицы размещения устройств равно большему номеру устройства. Если ни одно устройство не находится в указанной позиции, то Location Table[i, j] равно минус один. Таким образом, когда пользователь щелкает мышью, программа определяет позицию бит-процессора, на который указал пользователь, и по значению элемента из таблицы размещения устройств находит номер выбранного устройства (или определяет факт того, что щелчок пришелся по "незанятой" части бит-матрицы).

    6.4. Пользовательский интерфейс и операционное ядро инструментальной платформы обеспечения живучести МКМД-бит-потоковых субпроцессоров

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

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

    Проектирование алгоритмически ориентированных отказоустойчивых матричных СБИС разделяется на последовательность этапов, состоящих из операционного, логического и конструкторско-топологического проектирования (рис. 6.45).

    (рис 6.45) Анализ задач проектирования отказоустойчивых матричных СБИС

    Цель логического проектирования - определить структуру и порядок функционирования процессоров СБИС на уровне логических схем. Исходными данными для логического проектирования являются операционные схемы и микропрограммы, полученные при операционном проектировании.

    Процесс проектирования логических схем - это последовательность этапов синтеза и анализа (см. рис. 6.45) [296]. На этапе синтеза осуществляется проектирование схемы, реализующей заданный закон функционирования.

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

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

    (рис 6.46) Особенности разработки отказоустойчивых схем

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

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

    (рис 6.47) Отношение иерархии между микроэлектронными компонентами

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

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

    Таким образом, элементарным логическим вентилем с отказами считается схема, реализующая элементарную конъюнкцию или дизъюнкцию, имеющая несколько входов и только один результирующий выход, а отказом этого вентиля считается ошибка на выходе: "константный ноль", "константная единица", "инверсия выхода", "однотактное хранение единицы" (рис. 6.48).

    Сложность МКМД-бит-потоковых субпроцессоров как объектов диагностики определяется размерами $$(I, J)$$ бит-матрицы, израсходованной на микропрограмму. Полностью исправная бит-матрица однородна по предоставляемому аппаратному ресурсу, и пространство ее состояний оценивается соотношением $$Q(МКМД) = 2^{Rp*I*J}$$, где $$R_{p}$$ - разрядность регистра бит-инструкции, которая в случае СБИС Н1841 ВФ1 равна 16 битам. В результате уже при $$I*J = 10^{3}$$ МКМД-бит-потоковый субпроцессор оказывается непроверяемым за время жизни, сопоставимое со временем жизни Вселенной (порядка 14 миллиардов лет). Поэтому диагностику таких объектов можно провести только с использованием декомпозиции самого объекта диагностики.

    Использованная декомпозиция базируется на естественном структурно-функциональном разбиении объекта диагностики (субпроцессора), в котором выделены 5 уровней (рис. 6.49):

  • бит-матрица,
  • бит-процессор,(рис 6.48) Уровни моделирования неисправностей(рис 6.49) Структурно-функциональная декомпозиция МКМД-субпроцессора
  • составляющие бит-процессор устройства: регистр инструкций, АЛУ, блоки коммутации,
  • элементарные узлы дешифрации, мультиплексирования и временного хранения,
  • вентили.
  • Такая декомпозиция естественным образом дополняет структурно-функциональную декомпозицию субпроцессора. В результате оказываются согласованными "единицы" проекта в структурно-функциональной и диагностической плоскостях, а базовая "единица" диагностики (бит-процессор) оказывается равномощной. При этом три нижних уровня используются только на этапе проектирования бит-процессоров, субпроцессоров и средств их диагностики. Непосредственно в эксплуатации диагностика проводится с точностью до координаты отказавшего бит-процессора и (не)реализуемой бит-инструкции.

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

    (рис 6.50) Методика многоуровневого имитационного моделирования МКМД-бит-потокового субпроцессорного тракта

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

    окончательное моделирование и анализ должны завершаться физическим моделированием ВС.

    При создании инструментальных средств использована технология проблемно-ориентированного программирования, которая отвечает требованиям прототипирования проектов в области вычислительной техники. Поэтому базовым модулем всего комплекса является инструментальная библиотека классов логических вентилей. Работа остальных инструментальных средств опирается на этот модуль, в котором описана логика работы с учетом отказов следующих конструктивных элементарных блоков (логических элементов (ЛЭ)): 1-не, 2-или, 2-или-не, 3-или, 3-или-не, 4-или, 4-или-не, 2-и, 2-и-не, 3-и, 3-и-не (рис. 6.51).

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

    Логическая схема, построенная пользователем с помощью инструментального средства FailSys.exe, хранится в оперативной памяти как отдельный объект класса CSheme и сохраняется на диске (сериализуется, по терминологии [297]) в файл с расширением *.log. Схема представляет собой массив указателей на абстрактный класс COperateLog, а фактически на объекты классов вентилей и схем. Указатель на этот массив хранится в родительском классе CShemeBase переменной m_ppOperate. В этом же классе определен набор чисто виртуальных функций, с помощью которых и происходит управление объектами массива m_ppOperate. Очередность расположения элементов в этом массиве определяет порядок срабатывания объектов (логических схем).

    Элементами этого массива могут быть как сложные схемы (объекты класса CSheme ), так и элементарные логические вентили (объекты классов CElem1No (инверсия), CElem2Or (2-или), CElem2OrNo (2-или-не) и другие потомки класса CLogicSimple ). Класс CLogicOt (родитель класса CLogicSimple ) имеет набор методов, позволяющих устанавливать или убирать отказ в логическом вентиле. Класс CLogic предназначен для управления работой входами и выходами как сложных схем, так и простых вентилей. Объекты класса CLink связывают выход с входами логических элементов (один выход может быть соединен с множеством входов) и хранят текущие значения выходов логических вентилей и схем.

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

    (рис 6.51) Инструментальная библиотека классов логических вентилей

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

    Инструментальное средство BPBrowse позволяет:

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

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

    (рис 6.52) Структурная схема инструментальных средств моделирования

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

    Для уровня блоков и узлов бит-процессора исходными данными для синтеза являются:

  • $$S = \{s_{1}, s_{2}, …, s_{M}\}$$ - множество логических схем, реализующих одинаковый закон функционирования;
  • $$M$$ - количество логических схем, реализующих одинаковый закон функционирования;
  • $$Q = \{q_{1}, q_{2}, q_{3}, q_{4}\}$$ - множество типов отказов логического вентиля схемы (всего четыре).
  • Для каждой схемы $$s_{m}$$ заданы:

  • $$X = {x_{1}, x_{2}, …, x_{K}}$$ - множество контролируемых входов;
  • $$K$$ - количество контролируемых входов;
  • $$Z = {z_{1}, z_{2}, …, z_{L}}$$ - множество контролируемых выходов;
  • $$L$$ - количество контролируемых выходов;
  • $$D_{m} = {d_{1m}, d_{2m}, …, d_{Nm}}$$ - множество логических вентилей;
  • $$N_{m}$$ - общее количество логических вентилей;
  • $$C_{m} = ||c_{ij}||$$ - бинарная матрица связей выхода вентиля $$d_{im}$$ со входом вентиля $$d_{jm}$$ ;
  • $$n_{ot}$$ - число одновременно отказавших вентилей в схеме $$1 \le n_{ot} \le N_{m}$$, распределенных по множеству $$D_{m}$$ случайным образом по равномерному закону.
  • Используя BPBrowse, необходимо определить наиболее устойчивую к $$n_{ot}$$ одновременным отказам вентилей схему $$s^{*}\in S$$ и контролирующий $$тест T ^{*}$$, где $$T ^{*}$$ - бинарная матрица размерности $$Kxl_{t}, l_{t}$$ - длина теста. Данная задача решается следующим образом.

  • С помощью инструментального средства FailSys синтезируется один из вариантов схемы бит-процессора, который сохраняется в файле с расширением *.log.
  • Для каждого варианта схемы бит-процессора с помощью OtkazModulate в интерактивном режиме определяется полный контролирующий тест, отправной точкой которого является эталонный проверяющий тест $$T_{m}$$, полученный при условии, что схема $$s_{m}$$ не имеет ни одного отказавшего вентиля.
  • Тест $$T_{m}$$ порождает эталонную бинарную матрицу выходных последовательностей $$O_{тэт}$$, которая отвечает реакциям полностью исправной схемы бит-процессора. При подаче подбираемого проверяющего теста $$T_{m}$$ на схему $$s_{m}$$, но уже с отказами в ней, с ее выходов снимается матрица $$O_{m}$$, которая представляет собой бинарную матрицу выходных последовательностей размерности $$L\times l_t$$.

    Вероятность обнаружения отказов вентилей схемы $$s_m$$ синтезируемым тестом $$T_{m}$$ можно оценить соотношением:

    $$P_{обн}^{m}=\cfrac{r_{om}^{m}}{C_{N_m}^{n_{ot}}*4^{n_{ot}}}$$

    где:

  • $$r_{om}^m$$ - количество отклонений $$O_{m}$$ от $$O_{m}$$ при переборе всех карт $$n_{ot}$$ одновременных отказов вентилей;
  • $$C_{N_m}^{n_{ot}$$ - число сочетаний из $$N_m$$ элементов по $$n _{t} $$,а произведение $$C_{N_m}^{n_{ot}*4^{n_{ot}}$$ - количество возможных карт $$n_{ot}$$ одновременных отказов вентилей в схеме $$s_{m}$$ (мощность пространства отказов).
  • Главная особенность МКМД-бит-потоковых технологий состоит в том, что объектом диагностики на схемотехническом уровне является относительно простая схема бит-процессора (порядка 800-1000 вентилей), которая к тому же достаточно просто разбивается на блоки с разным последействием отказов: регистр команды, операционный канал, канал транзита, средства коммутации и т. п. (см. рис. 6.49). Поэтому при оценке отказоустойчивости реализуемых бит-процессором инструкций разработчик бит-процессора может синтезировать диагностический тест для всего бит-процессора, осуществив конкатенацию контролирующих тестов для узлов бит-процессора.

    Вместе с тем функциональные возможности программно-аппаратной плоскости проекта, как правило, отвечают ультравысокой степени интеграции (порядка 8-20 миллионов вентилей и выше) за счет наращивания "площади" бит-матрицы (от 1000 до 10000 бит-процессоров).

    Благодаря этой особенности инструментальное средство OtkazModulate позволяет перебрать все пространство отказов схемы бит-процессора $$s_m$$ и вычислить для нее $$P_{обн}^{m}$$ для подбираемого проверяющего теста $$T_m$$.

    Если принять гипотезу о равномерном законе распределения входных воздействий в тесте $$T_{m} $$, то его обнаруживающая способность $$P_{обн}^{m}$$ определяется длиной контролирующего теста $$l_{t}$$ как показано на рис. 6.53.

    Из рис. 6.53 видно, что с ростом до бесконечности длины теста вероятность обнаружения отказов растет до определенного значения $$P_{обн}^{предел}$$ которое можно считать предельным значением вероятности обнаружения отказов в схеме. Это обусловлено наличием в схеме бит-процессора индифферентных отказов, которые не влияют на правильность реализации заданной бит-инструкции. Таким образом, $$P_{раб}^{m}(n_{ot})$$ можно принять за вероятность сохранения работоспособности схемы $$s_m$$ при $$n_{ot}$$ одновременных отказов ее логических вентилей: $$P_{раб}^m(n_{ot}) = 1 - P_{обн}^{предел}$$.

    Длина контролирующего теста $$T_m$$ для схемы $$s_m$$ не может быть бесконечной. Поэтому разработчику схемы бит-процессора приходиться ее ограничивать $$l_{t}^{min} $$, руководствуясь критерием минимума разности $$P_{обн}^{предел} - P_{обн}^{m}(l_t^{min}) \le \varepsilon \to \min$$ причем при этом он больше опирается на интуицию, чем на аналитические выводы.

    (рис 6.53) Определение предельной вероятности обнаружения отказов схемы

    Таким образом, для каждой схемы $$s_m$$ разработчик определяет полный контролирующий тест $$T_{m}$$ ограниченной длины и его характеристики $$P_{обн}^{m}(l_t^{min})$$ и $$P_{раб}^{m}(n_{ot})$$. Очевидно, что наиболее устойчивая к $$n_{ot}$$ отказам схема та, у которой $$P_{раб}^{m}(n_{ot})$$ максимальна.

    Системотехнические выводы по лекции 6

  • Объективно существующее отношение иерархии между "объектами" проектирования и множественность "вложений" одних и тех же компонент, используемых в программно-аппаратной и диагностической плоскостях проекта, предопределяет эффективность создания инструментальных платформ МКМД-бит-потоковых вычислительных технологий на основе объектно-ориентированного подхода.
  • В структурно-функциональной и программно-аппаратной плоскости бит-процессор является неделимой единицей проекта, но при переходе в диагностическую плоскость его необходимо раскрыть, включив в иерархию описания блоки, узлы, вентили и физико-технические процессы, нарушение условий правильной работы которых и служит источником "расширения" библиотеки бит-инструкций бит-процессора.
  • Интерактивный режим, а с ним и графический интерфейс инструментальных платформ пока остаются атрибутом МКМД-бит-потоковых технологий, так как они поддерживают завершающий этап проектирования субпроцессоров, на котором решаются задачи компоновки библиотечных модулей на бит-матрице, или, что одно и то же, на плоской ортогональной FIFO -регистровой коммутационной решетке, где сдвиг на один дискрет всегда сопровождается изменением времени задержки на 1 такт.
  • Главная особенность МКМД-бит-потоковых технологий состоит в том, что объектом диагностики на схемотехническом уровне является относительно простая схема бит-процессора (порядка 800-1000 вентилей), которая к тому же достаточно просто разбивается на блоки с разным последействием отказов: регистр команды, операционный канал, канал транзита, средства коммутации и т. п. Вместе с тем, функциональные возможности программно-аппаратной плоскости проекта, как правило, отвечают ультравысокой степени интеграции (порядка 8-20 миллионов вентилей и выше) за счет наращивания "площади" бит-матрицы (от 1000 до 10000 бит-процессоров).
  • Средства эксплуатационной диагностики МКМД-бит-потоковых субпроцессоров являются продолжением средств промышленной диагностики, которые используются для генерации эталонных тестов и эталонных тестовых воздействий. Незнание использованных в производстве бит-матричных СБИС методов и средств обнаружения отказов и положенных в их основу физических моделей отказов приводит к неоправданному увеличению пространства диагностики, делая само изделие диагностонепригодным. Поэтому стратегия заимствования изделий микроэлектроники в третьих странах чревата высокой вероятностью необнаружения отказов, особенно в современных процессорах RISC - и ЦПОС -архитектуры, которые по степени функциональной интеграции уже давно относятся к УБИС.
  • Страницы:

    6.1. Структура программных средств инструментальной платформы интерактивного микропрограммного конструирования

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

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

  • операционное ядро должно обеспечить максимальное "покрытие" функций и этапов проектирования минимумом доступных пользователю программных процедур, поддерживающих проект в структурно-функциональной, программно-аппаратной и диагностической плоскостях (см. рис. 3.5 и рис. 5.2);
  • интерфейс должен позволять пользователю в максимальной степени концентрировать свое внимание на решаемой задаче за счет эффективного однократного создания библиотечных операционных модулей и их многократного использования (импорта и экспорта) при создании устройств различного назначения: операционных, адресных, управляющих, интерфейсных и диагностических.
  • Сама инструментальная платформа является системой открытого типа, как по средствам синтеза, так и по накапливаемым результатам.

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

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

    (рис 6.1) Структура инструментальной платформы

    мощность всего функционального пространства допустимых флуктуаций напрямую зависит от мощности действующей в СБИС карты отказов.

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

    При создании инструментальной программной платформы МКМД-бит-потоковых технологий использование объектно-ориентированного подхода предопределяется двумя факторами:

  • объективно существующим отношением иерархии между проектируемыми объектами;
  • максимальным "вложением" одних и тех же операционных и интерфейсных функций, поддерживающих проект в функциональной и диагностической плоскостях.
  • В операционное ядро инструментальной платформы интерактивного микропрограммного конструирования ( Designer ) входят:

  • программный имитатор работы бит-матрицы ( IMOS ) с модифицируемой системой связей и бит-инструкций при его использовании в диагностической плоскости проекта;
  • графический редактор, отображающий на плоскости результаты имитационного моделирования на каждом такте работы бит-матрицы, а также компоновки и редактирования, выполняемых с использованием аффинных преобразований и обеспечивающих различные варианты размещения микропрограмм операционных модулей на бит-матрице типа параллельных переносов, вращений, поворотов и т. п. Инструментальные средства цифровых процессоров обработки сигналов (рис. 6.2) значительно проще, так как позволяют использовать пошаговый режим отладки программ непосредственно на ЦПОС. В этом случае инструментальная ЭВМ поддерживает только интерфейс обмена программами и данными, что обеспечивает программисту "доступ" ко всем используемым аппаратным ресурсам на каждом такте их использования.
  • (рис 6.2) Структура инструментальных платформ ЦПОС

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

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

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

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

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

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

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

    Уникальность МКМД-бит-потоковых технологий как раз и состоит в том, что в их рамках можно эффективно парировать целые карты отказов, для чего достаточно иметь некратный аппаратный резерв, который может составлять от 10 до 30 % "рабочего поля" бит-матрицы.

    6.2. Пользовательский интерфейс и операционное ядро инструментальной платформы интерактивного микропрограммного конструирования

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

    Designer положены общепризнанные принципы построения "дружественных интерфейсов":

  • "интерфейс - максимально близкий к стандартам Windows ";
  • "часто используемые элементы - "на поверхности", редко используемые - в меню";
  • "панели, не используемые на этапе работы, скрываются". Рабочее пространство Designer разделено на пять частей (рис. 6.3):
  • меню и панель основных команд, рабочее пространство, переключатели режимов, панель докеров, шкала трассировки.

    (рис 6.3) Общий вид инструментальной платформы Designer

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

    Designer может работать в пяти режимах: " Редактирование кода ", " Работа с выделением ", " Входы-выходы ", " Такты " и " Отладка ". Каждому режиму соответствует свое "окно", которое становится видимым при выборе соответствующего режима. "Окна" (докеры) реализованы с использованием технологии Drag Dock. Любое "окно" либо строго вложено в определенную форму (рис. 6.4), либо допускает свободное перемещение в пределах экрана (рис. 6.5).

    (рис 6.4) "Окно" в форме(рис 6.5) Открепленное "окно"(рис 6.1) "Окно" в форме
    Содержимое элементов меню
    Файл Работа с файлами
    Новый проект - создать PGM Создать новый проект
    Новый проект - открыть PGM Создать новый проект на основе существующего PGM-файла
    Открыть проект Открыть существующий проект
    Сохранить проект Сохранить проект с текущим именем
    Сохранить проект как... Сохранить проект, указав имя
    Импорт - PGM файл... Вставить в проект микропрограмму
    Импорт - РIO файл... Добавить входные последовательности
    Экспорт - PGM файл... Сохранить микропрограмму в формате PGM
    Печать... Распечатать микропрограмму
    Выход Закрыть Designer
    Правка Внесение изменений
    Вырезать Стандартные операции с буфером
    Копировать
    Вставить
    Атрибуты Изменение размера матрицы
    Повернуть Выполнение аффинных преобразований
    Отобразить
    Вставить из библиотеки Вставить библиотечный терм
    Параметры Настройка среды
    Вид Изменение цветовой схемы редактора
    Отображать все Отображение незадействованных связей
    Окно Настройка панелей
    Навигатор Отображать навигацию

    Если открепить все "окна", рабочее пространство заметно увеличится, что особо актуально при разрешениях экранов размером 800х600 пикселей и меньше.

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

    (рис 6.6) "Окно" "Навигация"

    Режим " Редактирование кода " (рис. 6.7) поддерживается соответствующим "окном" (рис. 6.8), с помощью которого выполняются все операции интерактивного формирования бит-инструкции выделенного бит-процессора.

    (рис 6.7) Режим "Редактирование кода"

    "Объектом" интерактивного графического редактирования является содержимое регистра бит-инструкции (см. рис. 3.2), которое включает: код операции (поле COP ), признак дополнительной задержки (поле FD ), направления приема двух входных операндов АЛУ (поля А1 и А2) и одного входного операнда транзита (поле А3), а также направления передачи выходных операндов АЛУ, транзита и транзита с задержкой (поля А4-А6). При выборе текущего входа/выхода в окне появляется его направление. Нажатием на нужную стрелку выбранный вход изменяет свое направление. Операция АЛУ выбирается из выпадающего списка. Флаг задержки определяется галочкой " Задержка ".

    (рис 6.8) "Окно" "Редактирование кода"

    Режим " Входы/выходы " (рис. 6.9) поддерживает "окно" назначения входов/выходов (рис. 6.10), через которое можно работать только с выделенным бит-процессором. В этом режиме задаются все контрольные точки для работы программы имитационного моделирования IMOS. Нажатие на выбранной стрелке "окна" открывает диалог для ввода (рис. 6.11) цвета отображения входа на шкале трассировки, начальной задержки по данному входу и входной последовательности. Нажатие на прямоугольник, отображающий цвет входа, вызывает стандартный диалог выбора цвета. По умолчанию цвета назначаются случайным образом. По кнопке " Удалить " данный вход удаляется из списка. После назначения входа он отображается на шкале трассировки.

    (рис 6.9) Режим "Входы-выходы"(рис 6.10) "Окно" "Назначения входов/выходов" (первый шаг диалога)(рис 6.11) "Окно" "Назначение входов/выходов" (второй шаг диалога)

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

    Для задания циклической входной бит-последовательности (рис. 6.12) "окно" рис. 6.11 необходимо перевести в режим " Вставка ", в результате чего появится "окно" рис. 6.13. В этом режиме непосредственно определяется содержимое операнда (в данном случае 1001110110) и задается количество циклов его повторения (в данном случае 3), которое после выхода из "окна" отображается на шкале трассировки (рис. 6.14).

    (рис 6.12) Режим "Входы-выходы" при задании циклического входного воздействия(рис 6.13) "Окно" назначения входов/выходов (третий шаг диалога)(рис 6.14) Циклическая последовательность на шкале трассировки

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

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

    Designer имеет встроенное средство интерактивного расчета фазы продвижения вычислительной волны по бит-матрице. Выбор интерактивного режима предопределен неоднозначностью правил распространения вычислительной волны. Например, требуется вычислить время задержки в бит-процессоре рис. 6.16, на один из вводов которого подается содержимое 01000010 из бит-инструкции "Генератор константы" ( CG ). Данное содержимое можно интерпретировать и как число 66, если считать, что на выходе бит-процессора оно появляется на первом такте работы, и как число 33, если считать, что на выходе бит-процессора оно появляется на втором такте работы. Отсюда, номер такта в указанной области микропрограммы можно рассчитать, отталкиваясь:

    (рис 6.15) Режим "Такты"(рис 6.16)
  • от номера такта операнда, пришедшего на вход in 1;
  • от номера такта первой единицы, вышедшей из out 1;
  • из номера такта первой единицы, вышедшей из out 2 и т. п. Подобная неоднозначность может быть разрешена только самим
  • разработчиком микропрограммы либо высокоразвитой системой искусственного интеллекта, предлагающей (микро)программисту возможные варианты устранения возникающих неоднозначностей и точек их локализации. Поэтому в Designer использован смешанный режим определения времени задержки в каждом бит-процессоре, в котором автоматически вычисляется задержка по отношению к входному операнду с минимальной входной задержкой, которую (микро)программист может изменить по своему усмотрению в любой "контрольной" точке микропрограммы, после чего цикл автоматического вычисления должен быть повторен.

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

    (рис 6.17) "Окно" "Расчет тактов"(рис 6.18) "Окно" "Коррекция такта"(рис 6.19) "Окно" "Коррекция такта"

    который выделяется красным цветом (рис. 6.19) и сохраняется в файле с расширением *.MPR (рис. 6.20).

    Для компоновки объектов проектирования МКМД-бит-потоковых технологий Designer переводится в режим " Работа с выделением " (рис. 6.21), который поддерживается "окном" " Аффинный преобразователь " (рис. 6.22).

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

    (рис 6.20) Режим "Такты" с принудительной коррекцией(рис 6.21) Режим "Работа с выделением"

    В режиме " Отладка " прежде всего необходимо задать количество тактов работы IMOS, для чего используется поле " Настройка " меню основных команд (рис. 6.23).

    При отладке IMOS может работать в двух режимах - пошаговом и автоматическом, то есть на всю "глубину" моделирования: по всем контрольным точкам, заданным на шкале трассировки, и на всех тактах, заданных в окне " Настройка ". Результаты моделирования отражаются в виде двоичных последовательностей на выходах, определенных на шкале трассировки (рис. 6.24-a), с той разницей, что в режиме пошаговой отладки распространение фронта вычислительной волны по бит-матрице фиксируется распространением "желтых шариков", отвечающих "единичным" значениям распространяемых данных (рис. 6.24-б).

    (рис 6.22) "Окно" "Аффинный преобразователь"(рис 6.23) Режим "Отладка" (задание количества тактов)(рис 6.24) б) Режим "Пошаговой отладки"

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

    Проблемно-ориентированная инструментальная платформа MatrixDesigner является надстройкой над платформой Designer, предназначена для термального синтеза МКМД-бит-потоковых субпроцессоров векторно-матричной обработки потоков данных и включает:

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

  • генерация операционных устройств в зависимости от заданных параметров;
  • поддержка выполнения всего спектра аффинных преобразований над операционными устройствами;
  • обеспечение взаимодействия с другими инструментальными платформами;
  • использование системного буфера обмена для экспорта набора устройств между различными копиями MatrixDesigner ;
  • настройка пользовательского интерфейса под потребности разработчика;
  • экспорт и импорт операционных устройств (в том числе пользовательских) и данных проекта в различных форматах;
  • сохранение и загрузка всех данных создаваемой схемы в виде файла проекта.
  • Пользовательский интерфейс реализует:

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

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

    (рис 6.25) Пользовательский интерфейс инструментальной среды MatrixDesigner

    Меню MatrixDesigner содержит пункты: " Файл ", " Правка ", " Специальное ", " О программе ".

    Меню " Файл " содержит функции управления проектом (рис. 6.26).

    (рис 6.26) Меню "Файл"

    Пункт " Новый …" меню " Файл " позволяет создать новый проект. При этом пользователю предлагается ввести размер новой матрицы (рис. 6.27).

    (рис 6.27) Меню "Новый…"

    Через пункт меню " Открыть проект " можно загрузить ранее созданный проект, указав его имя.

    Файлы проекта инструментальной платформы MatrixDesigner имеют расширение *.dpj. В таком файле содержатся данные всей созданной пользователем схемы. Для сохранения на диск нового созданного проекта и для сохранения изменений, сделанных в уже существующем проекте, существуют пункты меню " Сохранить " и " Сохранить как ". Если проект является вновь созданным, то при нажатии на кнопку " Сохранить " пользователю предлагается ввести имя нового файла проекта; если же проект уже имеет имя, то при нажатии на эту кнопку происходит сохранение проекта под старым именем.

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

    Пункт " Правка " позволяет выполнять основные операции редактирования (рис. 6.28).

    (рис 6.28) Меню "Правка"

    В этом меню пункты " Вырезать ", " Копировать ", " Вставить ", " Удалить " выполняют стандартные действия. При этом объекты, попавшие в системный буфер обмена (по команде " Копировать " или " Вырезать "), можно разместить в другие копии программы MatrixDesigner, где работа ведется над другим проектом.

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

    (рис 6.29) Меню "Специальное"

    Нажатие на пункт меню " О программе " позволяет увидеть информацию о версии программного продукта.

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

    Кнопки на панелях управления проектом повторяют функциональность аналогичных пунктов главного меню программы. Исключение составляет команда " Экспортировать " (рис. 6.30). Она позволяет сохранить текущий проект в формате файла *.PGM, который поддерживается ранее созданной низкоуровневой средой разработки Designer.

    (рис 6.30) Меню "Экспортировать"

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

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

    (рис 6.31) Область редактирования проекта

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

    (рис 6.32) Содержимое окна параметров слов-инструкции ADD

    После нажатия на кнопку " OK " на бит-матрице появляется новое устройство с заданными параметрами (в данном случае это сумматор - рис. 6.33).

    (рис 6.33) Отображение сгенерированной слов-инструкции ADD в рабочем поле

    Нажав правую кнопку мыши на устройстве и выбрав в появившемся контекстном меню пункт " Детализировать ", получим графическое представление топологии выбранной микропрограммы (рис. 6.34).

    (рис 6.34) Детализация сгенерированной слов-инструкции ADD

    Описание некоторых элементов графического отображения топологии микропрограммы представлено в табл. 6.2.

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

    Описание условных графических отображений бит-процессоров в MatrixDesigner
    Условное изображение Комментарий
    В канале АЛУ бит-процессора выполняется операция ADD над операндами, поступающими на первом такте слева и снизу. Результирующий операнд выдается на 3 такте вправо. В канале транзита входной операнд поступает снизу на 1 такте и подается с задержкой на один такт вверх, а с задержкой на 3 такта - вниз
    В канале АЛУ выполняется операция "расширенный транзит"(WTR), в которой по каналам "слева-вниз" и "снизу-вправо" операнды распространяются с задержкой на 1 такт, а по каналу "справа-налево" - с задержкой на 2 такта
    В канале АЛУ выполняется операция "запоминание единицей", в которой информационный операнд подается на 0 такте слева, а управляющий операнд - на 2 такте справа и, если он имеет вид циклической константы 00…01, то на выходе с дополнительной задержкой на 2 такта по отношению к управляющему входу запоминается содержимое $$(n-3)$$ -го бита информационного операнда. Канал транзита не используется
    В каналах АЛУ и транзита выполняется слияние потоков по "ИЛИ" по правилу: $$x(t+1)\lor x(t+2)\lor x(t+3)$$, где $$\lor$$ - операция "ИЛИ", а результирующий операнд поступает на правый выход бит-процессора с задержкой на 1, 2 и 3 такта
    В канале АЛУ реализуется операция NOP, то есть он не используется, а в канале транзита входной операнд поступает слева и передается вправо с дополнительной задержкой на 2 такта, а вниз - с дополнительной задержкой на 1 такт
    Команды генерации основных устройств
    Команда Описание
    $$MLT$$ Умножитель
    $$ADD$$ Сумматор
    $$DCC$$ Трансформатор кода
    $$DIV$$ Делитель
    $$С[1,m]$$ Генератор константы вида $$С[1,m]$$
    $$С[n,m\$$ Генератор константы вида $$C[n,m]$$
    $$С+1$$ Счетчик +1 (инкремент)
    $$С-1$$ Счетчик -1 (декремент)
    $$С+1S$$ Счетчик +1 с предустановкой
    $$С -1S$$ Счетчик -1с предустановкой
    $$In$$ Параллельно-последовательный интерфейс
    $$Out$$ Последовательно-параллельный интерфейс

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

    (рис 6.35) Меню "Нестандартное устройство"(рис 6.36) Коммутатор выходных портов ОЗУ

    В частности, "нестандартным" устройством является коммутатор, который обеспечивает перераспределение 8 выходов ОЗУ между 2 входами операционного устройства субпроцессора векторно-матричной обработки данных (рис. 6.36). "Нестандартность" такого коммутатора обусловлена пространственным совмещением FIFO -регистровых шин передачи входных данных и адресов, управляющих обменом с ОЗУ.

    Чтобы добавить в проект это нестандартное устройство, достаточно в файл *.PGM этого устройства добавить строки с описанием, например:

    0088 CE87 7E87 0083 0083 0083 0083 0083 0083 0083 0083 6531 6734 64F1
    0088 C98D 4A47 C9B8 C9B8 C9B8 C9B8 C9B8 C9B8 C9B8 C9B4 66F1 6E58 66F9
    0088 C60F 0041 4D20 4D28 4D28 4D28 4D28 4D28 4D28 4D28 6632 6D1E 6639
    62E1 6261 6261 6221 62E1 62E1 62E1 62E1 62E1 62E1 62F1 7631 62F1 7847
    6263 6261 6261 6261 6221 62E1 62E1 62E1 62E1 62F1 66F1 6631 62F1 7847
    62E1 6261 6261 6261 6261 6221 62E1 62E1 62F1 66F1 66F1 6631 62F1 7847
    6263 6261 6261 6261 6261 6261 6221 62F1 66F1 66F1 66F1 6631 62F1 7B4B
    62E1 6261 6261 6261 6261 6263 6232 6631 66F1 66F1 66F1 6631 62F1 6263
    6263 6261 6261 6261 6263 6223 6263 6263 6631 66F1 66F1 6631 62F1 6253
    62E1 6261 6261 6263 6223 6263 6263 6263 6263 6631 66F1 6631 62F1 6253
    6263 6263 6263 6223 6263 6263 6263 6263 6263 6263 6631 6631 62F1 6253
    0088 CE05 00C3 4720 4728 4728 4728 4728 4728 4728 4728 6263 6E39 6043
    0088 CB87 4ACD CB98 CB98 CB98 CB98 CB98 CB98 CB98 CB9C 6263 6594 0054
    0088 C68D 768D 0081 0081 0081 0081 0081 0081 0081 0081 0044 0000 0000
    
    C $INPORT(0,3,0,<Порт 1>)
    C $INPORT(0,4,0,<Порт 2>)
    C $INPORT(0,5,0,<Порт 3>)
    C $INPORT(0,6,0,<Порт 4>)
    C $INPORT(0,7,0,<Порт 5>)
    C $INPORT(0,8,0,<Порт 6>)
    C $INPORT(0,9,0,<Порт 7>)
    C $INPORT(0,10,0,<Порт 8>)
    
    C $INPORT(11,0,1,<Управление 1: Циклическая константа>)
    C $INPORT(12,0,1,<Управление 2: Адрес порта по входу 1 ОУ>)
    C $INPORT(13,0,1,<Управление 3: Адрес порта по входу 2 ОУ>)
    
    C $INPORT(13,3,2,<Вход  адреса  ОЗУ порта 1>)
    C $INPORT(13,4,2,<Вход  адреса  ОЗУ порта 2>)
    C $INPORT(13,5,2,<Вход  адреса  ОЗУ порта 3>)
    C $INPORT(13,6,2,<Вход  адреса  ОЗУ порта 4>)
    C $INPORT(13,7,2,<Вход  адреса  ОЗУ порта 5>)
    C $INPORT(13,8,2,<Вход  адреса  ОЗУ порта 6>)
    C $INPORT(13,9,2,<Вход  адреса  ОЗУ порта 7>) 
    C $INPORT(13,10,2,<Вход адреса ОЗУ порта 8>)
    
    C $OUTPORT(0,3,0,<Адрес  порта ОЗУ 1>)
    C $OUTPORT(0,4,0,<Адрес  порта ОЗУ 2>)
    C $OUTPORT(0,5,0,<Адрес  порта ОЗУ 3>)
    C $OUTPORT(0,6,0,<Адрес  порта ОЗУ 4>)
    C $OUTPORT(0,7,0,<Адрес  порта ОЗУ 5>)
    C $OUTPORT(0,8,0,<Адрес  порта ОЗУ 6>)
    C $OUTPORT(0,9,0,<Адрес  порта ОЗУ 7>) 
    C $OUTPORT(0,10,0,<Адрес порта ОЗУ 8>)
    
    C $OUTPORT(12,0,1,<Информационный выход первого входа 2 ОУ>) 
    C $OUTPORT(13,0,1,<Информационный выход первого входа 1 ОУ>),

    где первые 14 строк - шестнадцатеричное представление бит-инструкций файла *.PGM.

    Команда " Импорт " позволяет добавить это устройство в проект (рис. 6.37).

    (рис 6.37) Отображение "нестандартного" интерфейса в рабочем поле

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

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

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

    клавишу " Shift ". Если в выбранном новом положении устройство выходит за границы матрицы, то перемещение не будет выполнено. Разрешается наложение объектов. Эта возможность предусмотрена для удобства компоновки устройств в случае очень "плотной" схемы. Построение оптимальной топологической схемы проектируемого сопроцессора невозможно без аффинных преобразований. Для этого предусмотрена панель, показанная на рис. 6.38.

    (рис 6.38) "Окно" "Аффинные преобразования"

    Кнопки (слева направо) выполняют следующие действия:

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

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

    (рис 6.39) "Окно" "Масштаб"

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

    Есть еще один альтернативный способ изменения положения свойств и размещения объектов. Этот способ основан на использовании контекстных меню (рис. 6.40).

    (рис 6.40) Контекстное меню

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

    Чтобы посмотреть "внутреннее наполнение" процессорного устройства (отображение ведется в нотации, принятой в Designer ), контекстное меню содержит пункт " Детализировать …". Детализированное устройство показано на рис. 6.36.

    С помощью " Сохранить в PGM *" можно сохранить выбранное пользователем устройство в файл PGM (который поддерживается программой Designer ) расширенной структуры (с сохранением свойств прибора, то есть его входов, выходов, цвета и т. д.). Из файла такой структуры может производиться импорт нестандартных устройств в проект способом, описанным выше.

    В MatrixDesigner разработчику предоставлен инструмент гибкой настройки программного средства. Это можно сделать, нажав на кнопку " Настройка " на панели инструментов. Диалог настроек программы содержит две вкладки (рис. 6.41).

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

    (рис 6.41) Вкладки "окна" "Настройки"

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

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

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

    (рис 6.42) Схема преобразования задач пользователя МКМД-бит-потокового (суб)процессора в исполняемый формат

    В связи с этим, начальным "кирпичиком" создаваемой инструментальной среды проектирования МКМД-бит-потоковых вычислителей стал класс Processor (рис. 6.43), который представляет собой один бит-процессор со всеми присущими ему свойствами и методами. Среди методов наиболее важными являются 3 конструктора с разными параметрами и методы аффинных преобразований (вращение, отображение относительно диагоналей и осей), среди свойств - направления получения операндов ( InA1, InA2 ) и направление отправки результата ( OutA ), а также

    (рис 6.43) Основные классы реализации инструментальной среды

    код операции ( OperationCode ) и направление канала транзита ( InTr, OutTr, OutTrD ). Кроме того, для каждого бит-процессора можно получить и установить значение его регистра ( Register ).

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

    В этом классе определены основные действия (методы), которые можно применять к процессорному устройству. К ним относятся:

  • аффинные преобразования: повороты ( Rotate90 ), отражения относительно осей ( RotateOnX, RotateOnY ) и диагоналей ( RotateOnDiagonal );
  • загрузка микропрограмм устройств из файла и потоков данных;
  • сохранение микропрограмм устройств в файл или потоков данных.
  • Каждое устройство обладает следующими основными свойствами:

  • разрядность ( N ),
  • описание ( Description ),
  • цвет отображения в пользовательском интерфейсе ( DeviceColor ),
  • размеры по горизонтали и вертикали ( SizeX, SizeY ), которые задаются параметрами описывающего прямоугольника ;
  • положение на проектируемой схеме ( XPos, YPos ).
  • Каждое новое процессорное устройство является потомком класса ProcessorDevice (рис. 6.44).

    (рис 6.44) Основные процессорные устройства, производные от ProcessorDevice

    Очень важным методом класса ProcessorDevice является метод GenerateDeivce, который создает выбранное процессорное устройство в зависимости от разрядности. У каждого класса процессорных устройств этот метод свой. Кроме того, каждое устройство при создании инициализирует свое описание, цвет, размер и т. д. В программе реализовано более 20 различных процессорных устройств. Среди них умножитель, сумматор, делитель, последовательно-параллельный и параллельно-последовательный интерфейсы, коммутационные и другие устройства. Каждое из них пользователь может автоматически сгенерировать, указав требуемую разрядность. Каждое процессорное устройство кроме всего прочего имеет входы операндов и констант и выходы результатов и промежуточных данных. Для хранения информации такого рода существует класс DevicePort, который описывает вход и выход устройства (далее порт устройства). Каждый порт является или входом, или выходом по отношению к процессорному устройству ( Enter ). Кроме того, порт имеет описание ( Description ), положение на устройстве ( X, Y ) и направление ( Direction ).

    Все устройства размещаются на имеющейся в распоряжении пользователя бит-процессорной матрице. В программе она представлена классом ProcessorMatrix. Главными ее свойствами являются размер (по вертикали ( YSize ) и горизонтали ( XSize )) и положение курсора вставки ( CursorXPos и CursorYPos ). Объект этого класса содержит в себе список процессорных устройств, находящихся на бит-матрице. Основные методы ProcessorMatrix - это AddDevice (добавление устройства на бит-матрицу), DeleteDevice (удаление устройства), ReadFromStream (считать содержимое процессорной матрицы из потока), SaveToStream (сохранить процессорную матрицу со всеми устройствами в поток), GetDevice (получить устройство), GetDeviceCount (получить количество процессорных устройств, находящихся на бит-матрице).

    Приведенных функций и уровней вложенности достаточно для проектирования сверхпараллельных (порядка 10000 бит-процессоров) МКМД-бит-потоковых операторов. Более высокий уровень организации вычислений связан с последовательной активизацией и загрузкой поток-операторов в бит-матрицу.

    Инструментальное средство MatrixDesigner реализовано в среде Microsoft Visual Studio 2005 и написано на языке C#.

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

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

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

  • исходным объектом преобразований служит топологическая схема микропрограммы, полученная дорогостоящим эмпирическим путем;
  • полностью сохраняются фазовые соотношения между пространственно-временными потоками данных внутри преобразуемых микропрограммных модулей;
  • для восстановления информационных связей и фазовых соотношений по потокам данных между перемещаемыми и неподвижными микропрограммными модулями используются бит-процессоры, способные выполнить требуемые коммутационные функции. Аффинные преобразования в геометрии сохраняют линейные соотношения между объектами преобразований, а при их использовании в системе парирования отказов и при проектировании МКМД-бит-процессорных матриц, кроме преобразования координат, размещения бит-операций на матрице, в ряде случаев требуют еще и преобразования содержимого адресной части перемещаемых по бит-матрице микропрограммных модулей.
  • Рассмотрим преобразования координат размещения бит-команд в поток-операторе пользователя (бит-процессорном устройстве). Здесь $$i$$ и $$j$$ - координаты бит-процессора. В общем случае его координаты после проведения аффинных преобразований изменятся на $$\tilde{i}$$ и $$\tilde{j}$$, $$i = \overline{1,i_m}$$, $$j = \overline{1,j_m}$$. Алгоритмы вычисления нового положения каждого бит-процессора:

  • Поворот на +90o: $$\tilde{i} = j,\,\tilde{j}=i_{m} -(i-1)$$.
  • Поворот на -90o: $$\tilde{i} = j_{m} - (j -1),\, j = i$$.
  • Вращение вдоль оси Х: $$\tilde{i} = i_{m} - (i - 1),\, \tilde{j} = j$$.
  • Вращение вдоль оси Y: $$\tilde{i} = i_{m},\, \tilde{j} = j_m -(j-1)$$.
  • Вращение вдоль главной диагонали: $$\tilde{i} = j,\, \tilde{j} = i$$
  • Вращение вдоль побочной диагонали: $$\tilde{i} = j_{m} - (j - 1),\, \tilde{j} = i_m - (i - 1)$$.
  • В каждом из рассмотренных выше случаев аффинных преобразований есть необходимость изменения содержимого регистра каждого бит-процессора. Преобразование кодов бит-команд производится следующим образом ( $$R$$ - регистр бит-процессора, $$\tilde{R}$$ - значение регистра бит-процессора после преобразования):

  • Поворот на +90o:$$\tilde{R} = \tilde{R}_1 \lor \tilde{R}_{2}, \tilde{R}_1 = (R_1 + B_2) \land B_1, \tilde{R}_1 = (R_2 + B_3) \land \overline{B}_1, \\ R_1 = R \land B_1, R_2 = R \land \overline{B}_1$$

    где $$B_{1} = 1111.0011.0011.0011;\\ B_{2} = 0000.0001.0001.0001; \\ B_{3}(T) = B_{2} (T+2) = 0000.0100.0100.0100$$.

  • 2. Поворот на -90o: то же, что и на +90o, только $$B _{2} = 0000.0011.0011.0011; \\ B _{3} = 0000.1100.1100.1100$$.
  • Вращение вдоль оси Х: $$\tilde{B}_4 = R\land B_4,\tilde{R} = R(T)\oplus\tilde{B}_4(T+1)$$, где $$B_{4}(T) = B_2(T) \lor B_2(T+2) = 0000.0101.0101.0101$$.
  • Вращение вдоль оси Y: $$\tilde{В}_{5} = \overline{R} \land В_{4}, \tilde{R} = R(T) \oplus \tilde{В}_{5}(Т+1)$$.
  • Вращение вдоль главной диагонали: $$\tilde{R} = R\oplus B_{4}$$.
  • Вращение вдоль побочной диагонали: $$\tilde{R} = R\oplus B_{5}$$, где $$В_{5} = 0000.1111.1111.1111$$.
  • Входы и выходы устройства в нотации MatrixDesigner изображаются в виде треугольников. Порт устройства является объектом, свойство которого пользователь может увидеть в таблице свойств выбранного объекта. Чтобы обеспечить эту возможность, необходим алгоритм определения принадлежности точки треугольнику. На вход такого алгоритма подаются координаты вершин треугольника в прямоугольной системе координат и координаты точки, а выходом алгоритма является логическое значение true, если точка принадлежит треугольнику, и false, если точка лежит за пределами треугольника. Эту проверку осуществляет метод Triangle::IsPointInTriangle. Алгоритм следующий:

  • Если тестируемая точка совпадает с одной из вершин треугольника, вернуть true, иначе перейти к пункту 2.
  • Найти уравнение прямой для произвольной стороны треугольника (вершины P 1 и P 2) L 1.
  • Найти уравнение прямой для отрезка между вершиной треугольника, которая не принадлежит L 1 ( P 3), и точкой, где щелкнула мышь ( P 4)( L 2).
  • Найти точку пересечения L 1 и L 2 ( P 5). Если прямые параллельны, вернуть false, иначе перейти к пункту 5.
  • Найти расстояния между P 1 и P 2, между P 1 и P 5 и между P 2 и P 5 и, используя неравенство треугольника, проверить, что точка P 5 лежит на отрезке от P 1 до P 2. Если проверка успешна, перейти к пункту 6, иначе вернуть false.
  • Найти расстояния между P 3 и P 5, между P 3 и P 4 и между P 5 и P 4. Аналогично, используя неравенство треугольника, проверить, что проверяемая точка лежит на отрезке от P 3 до P 5. Если это условие выполняется, то точка лежит внутри треугольника (вернуть true ), иначе вернуть false.
  • Одной из наиболее сложных задач в плане программной реализации является создание пользовательского интерфейса, особенно той его части, которая отвечает за визуальное отображение данных проекта (бит-матрица и находящиеся на ней операционные устройства) и работу с ним. Чтобы отделить реализацию этого элемента пользовательского интерфейса от создания других частей программы, модуль рисования и работы над бит-матрицей оформлен в виде пользовательского элемента управления ( UserControl ) и реализован в классе MatrixDirectDrawView. Именно в нем реализованы методы копирования и вставки объектов, методы рисования данных проекта на экране, а также методы взаимодействия программы с пользователем посредством клавиатуры и мыши. Особого внимания заслуживает алгоритм перерисовки проекта. Входными данными здесь являются процессорная матрица, ее размер, находящиеся на ней операционные устройства, текущий масштаб, положение полос прокрутки. Алгоритм рисования проекта в любой момент времени:

  • 1 Рассчитать, какие бит-процессоры из бит-матрицы будут видны на экране.
  • Заполнить матрицу цветом фона.
  • Найти смещение сетки бит-процессоров от левого верхнего угла элемента управления.
  • С помощью данных, полученных на шаге 1, найти список операционных устройств, которые видны на экране.
  • Для каждого устройства из списка выполнить процедуру рисования. Она заключается в изображении прямоугольника (цвет которого определяется устройством), и рисовании портов (входов и выходов).
  • Нарисовать сетку бит-процессоров.
  • Если есть устройства, выбранные пользователем, то нарисовать рамку выделения вокруг них.
  • Нарисовать курсор вставки.
  • Важным является алгоритм определения номера устройства, на которое щелкнула мышь. Чтобы реализовать эту задачу наиболее просто

    и быстро, применен следующий подход. Создается таблица размещения устройств ( Location Table ), которая представляет собой двумерный массив целых чисел, размер которого равен размеру бит-матрицы в бит-процессорах. Значение каждого элемента массива с координатами [i, j] равно номеру процессорного устройства в списке процессорных устройств матрицы, которое "перекрывает" позицию [i, j]. Если несколько устройств перекрывают позицию [i, j] (то есть устройства накладываются друг на друга), то значение элемента таблицы размещения устройств равно большему номеру устройства. Если ни одно устройство не находится в указанной позиции, то Location Table[i, j] равно минус один. Таким образом, когда пользователь щелкает мышью, программа определяет позицию бит-процессора, на который указал пользователь, и по значению элемента из таблицы размещения устройств находит номер выбранного устройства (или определяет факт того, что щелчок пришелся по "незанятой" части бит-матрицы).

    6.4. Пользовательский интерфейс и операционное ядро инструментальной платформы обеспечения живучести МКМД-бит-потоковых субпроцессоров

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

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

    Проектирование алгоритмически ориентированных отказоустойчивых матричных СБИС разделяется на последовательность этапов, состоящих из операционного, логического и конструкторско-топологического проектирования (рис. 6.45).

    (рис 6.45) Анализ задач проектирования отказоустойчивых матричных СБИС

    Цель логического проектирования - определить структуру и порядок функционирования процессоров СБИС на уровне логических схем. Исходными данными для логического проектирования являются операционные схемы и микропрограммы, полученные при операционном проектировании.

    Процесс проектирования логических схем - это последовательность этапов синтеза и анализа (см. рис. 6.45) [296]. На этапе синтеза осуществляется проектирование схемы, реализующей заданный закон функционирования.

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

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

    (рис 6.46) Особенности разработки отказоустойчивых схем

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

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

    (рис 6.47) Отношение иерархии между микроэлектронными компонентами

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

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

    Таким образом, элементарным логическим вентилем с отказами считается схема, реализующая элементарную конъюнкцию или дизъюнкцию, имеющая несколько входов и только один результирующий выход, а отказом этого вентиля считается ошибка на выходе: "константный ноль", "константная единица", "инверсия выхода", "однотактное хранение единицы" (рис. 6.48).

    Сложность МКМД-бит-потоковых субпроцессоров как объектов диагностики определяется размерами $$(I, J)$$ бит-матрицы, израсходованной на микропрограмму. Полностью исправная бит-матрица однородна по предоставляемому аппаратному ресурсу, и пространство ее состояний оценивается соотношением $$Q(МКМД) = 2^{Rp*I*J}$$, где $$R_{p}$$ - разрядность регистра бит-инструкции, которая в случае СБИС Н1841 ВФ1 равна 16 битам. В результате уже при $$I*J = 10^{3}$$ МКМД-бит-потоковый субпроцессор оказывается непроверяемым за время жизни, сопоставимое со временем жизни Вселенной (порядка 14 миллиардов лет). Поэтому диагностику таких объектов можно провести только с использованием декомпозиции самого объекта диагностики.

    Использованная декомпозиция базируется на естественном структурно-функциональном разбиении объекта диагностики (субпроцессора), в котором выделены 5 уровней (рис. 6.49):

  • бит-матрица,
  • бит-процессор,(рис 6.48) Уровни моделирования неисправностей(рис 6.49) Структурно-функциональная декомпозиция МКМД-субпроцессора
  • составляющие бит-процессор устройства: регистр инструкций, АЛУ, блоки коммутации,
  • элементарные узлы дешифрации, мультиплексирования и временного хранения,
  • вентили.
  • Такая декомпозиция естественным образом дополняет структурно-функциональную декомпозицию субпроцессора. В результате оказываются согласованными "единицы" проекта в структурно-функциональной и диагностической плоскостях, а базовая "единица" диагностики (бит-процессор) оказывается равномощной. При этом три нижних уровня используются только на этапе проектирования бит-процессоров, субпроцессоров и средств их диагностики. Непосредственно в эксплуатации диагностика проводится с точностью до координаты отказавшего бит-процессора и (не)реализуемой бит-инструкции.

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

    (рис 6.50) Методика многоуровневого имитационного моделирования МКМД-бит-потокового субпроцессорного тракта

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

    окончательное моделирование и анализ должны завершаться физическим моделированием ВС.

    При создании инструментальных средств использована технология проблемно-ориентированного программирования, которая отвечает требованиям прототипирования проектов в области вычислительной техники. Поэтому базовым модулем всего комплекса является инструментальная библиотека классов логических вентилей. Работа остальных инструментальных средств опирается на этот модуль, в котором описана логика работы с учетом отказов следующих конструктивных элементарных блоков (логических элементов (ЛЭ)): 1-не, 2-или, 2-или-не, 3-или, 3-или-не, 4-или, 4-или-не, 2-и, 2-и-не, 3-и, 3-и-не (рис. 6.51).

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

    Логическая схема, построенная пользователем с помощью инструментального средства FailSys.exe, хранится в оперативной памяти как отдельный объект класса CSheme и сохраняется на диске (сериализуется, по терминологии [297]) в файл с расширением *.log. Схема представляет собой массив указателей на абстрактный класс COperateLog, а фактически на объекты классов вентилей и схем. Указатель на этот массив хранится в родительском классе CShemeBase переменной m_ppOperate. В этом же классе определен набор чисто виртуальных функций, с помощью которых и происходит управление объектами массива m_ppOperate. Очередность расположения элементов в этом массиве определяет порядок срабатывания объектов (логических схем).

    Элементами этого массива могут быть как сложные схемы (объекты класса CSheme ), так и элементарные логические вентили (объекты классов CElem1No (инверсия), CElem2Or (2-или), CElem2OrNo (2-или-не) и другие потомки класса CLogicSimple ). Класс CLogicOt (родитель класса CLogicSimple ) имеет набор методов, позволяющих устанавливать или убирать отказ в логическом вентиле. Класс CLogic предназначен для управления работой входами и выходами как сложных схем, так и простых вентилей. Объекты класса CLink связывают выход с входами логических элементов (один выход может быть соединен с множеством входов) и хранят текущие значения выходов логических вентилей и схем.

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

    (рис 6.51) Инструментальная библиотека классов логических вентилей

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

    Инструментальное средство BPBrowse позволяет:

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

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

    (рис 6.52) Структурная схема инструментальных средств моделирования

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

    Для уровня блоков и узлов бит-процессора исходными данными для синтеза являются:

  • $$S = \{s_{1}, s_{2}, …, s_{M}\}$$ - множество логических схем, реализующих одинаковый закон функционирования;
  • $$M$$ - количество логических схем, реализующих одинаковый закон функционирования;
  • $$Q = \{q_{1}, q_{2}, q_{3}, q_{4}\}$$ - множество типов отказов логического вентиля схемы (всего четыре).
  • Для каждой схемы $$s_{m}$$ заданы:

  • $$X = {x_{1}, x_{2}, …, x_{K}}$$ - множество контролируемых входов;
  • $$K$$ - количество контролируемых входов;
  • $$Z = {z_{1}, z_{2}, …, z_{L}}$$ - множество контролируемых выходов;
  • $$L$$ - количество контролируемых выходов;
  • $$D_{m} = {d_{1m}, d_{2m}, …, d_{Nm}}$$ - множество логических вентилей;
  • $$N_{m}$$ - общее количество логических вентилей;
  • $$C_{m} = ||c_{ij}||$$ - бинарная матрица связей выхода вентиля $$d_{im}$$ со входом вентиля $$d_{jm}$$ ;
  • $$n_{ot}$$ - число одновременно отказавших вентилей в схеме $$1 \le n_{ot} \le N_{m}$$, распределенных по множеству $$D_{m}$$ случайным образом по равномерному закону.
  • Используя BPBrowse, необходимо определить наиболее устойчивую к $$n_{ot}$$ одновременным отказам вентилей схему $$s^{*}\in S$$ и контролирующий $$тест T ^{*}$$, где $$T ^{*}$$ - бинарная матрица размерности $$Kxl_{t}, l_{t}$$ - длина теста. Данная задача решается следующим образом.

  • С помощью инструментального средства FailSys синтезируется один из вариантов схемы бит-процессора, который сохраняется в файле с расширением *.log.
  • Для каждого варианта схемы бит-процессора с помощью OtkazModulate в интерактивном режиме определяется полный контролирующий тест, отправной точкой которого является эталонный проверяющий тест $$T_{m}$$, полученный при условии, что схема $$s_{m}$$ не имеет ни одного отказавшего вентиля.
  • Тест $$T_{m}$$ порождает эталонную бинарную матрицу выходных последовательностей $$O_{тэт}$$, которая отвечает реакциям полностью исправной схемы бит-процессора. При подаче подбираемого проверяющего теста $$T_{m}$$ на схему $$s_{m}$$, но уже с отказами в ней, с ее выходов снимается матрица $$O_{m}$$, которая представляет собой бинарную матрицу выходных последовательностей размерности $$L\times l_t$$.

    Вероятность обнаружения отказов вентилей схемы $$s_m$$ синтезируемым тестом $$T_{m}$$ можно оценить соотношением:

    $$P_{обн}^{m}=\cfrac{r_{om}^{m}}{C_{N_m}^{n_{ot}}*4^{n_{ot}}}$$

    где:

  • $$r_{om}^m$$ - количество отклонений $$O_{m}$$ от $$O_{m}$$ при переборе всех карт $$n_{ot}$$ одновременных отказов вентилей;
  • $$C_{N_m}^{n_{ot}$$ - число сочетаний из $$N_m$$ элементов по $$n _{t} $$,а произведение $$C_{N_m}^{n_{ot}*4^{n_{ot}}$$ - количество возможных карт $$n_{ot}$$ одновременных отказов вентилей в схеме $$s_{m}$$ (мощность пространства отказов).
  • Главная особенность МКМД-бит-потоковых технологий состоит в том, что объектом диагностики на схемотехническом уровне является относительно простая схема бит-процессора (порядка 800-1000 вентилей), которая к тому же достаточно просто разбивается на блоки с разным последействием отказов: регистр команды, операционный канал, канал транзита, средства коммутации и т. п. (см. рис. 6.49). Поэтому при оценке отказоустойчивости реализуемых бит-процессором инструкций разработчик бит-процессора может синтезировать диагностический тест для всего бит-процессора, осуществив конкатенацию контролирующих тестов для узлов бит-процессора.

    Вместе с тем функциональные возможности программно-аппаратной плоскости проекта, как правило, отвечают ультравысокой степени интеграции (порядка 8-20 миллионов вентилей и выше) за счет наращивания "площади" бит-матрицы (от 1000 до 10000 бит-процессоров).

    Благодаря этой особенности инструментальное средство OtkazModulate позволяет перебрать все пространство отказов схемы бит-процессора $$s_m$$ и вычислить для нее $$P_{обн}^{m}$$ для подбираемого проверяющего теста $$T_m$$.

    Если принять гипотезу о равномерном законе распределения входных воздействий в тесте $$T_{m} $$, то его обнаруживающая способность $$P_{обн}^{m}$$ определяется длиной контролирующего теста $$l_{t}$$ как показано на рис. 6.53.

    Из рис. 6.53 видно, что с ростом до бесконечности длины теста вероятность обнаружения отказов растет до определенного значения $$P_{обн}^{предел}$$ которое можно считать предельным значением вероятности обнаружения отказов в схеме. Это обусловлено наличием в схеме бит-процессора индифферентных отказов, которые не влияют на правильность реализации заданной бит-инструкции. Таким образом, $$P_{раб}^{m}(n_{ot})$$ можно принять за вероятность сохранения работоспособности схемы $$s_m$$ при $$n_{ot}$$ одновременных отказов ее логических вентилей: $$P_{раб}^m(n_{ot}) = 1 - P_{обн}^{предел}$$.

    Длина контролирующего теста $$T_m$$ для схемы $$s_m$$ не может быть бесконечной. Поэтому разработчику схемы бит-процессора приходиться ее ограничивать $$l_{t}^{min} $$, руководствуясь критерием минимума разности $$P_{обн}^{предел} - P_{обн}^{m}(l_t^{min}) \le \varepsilon \to \min$$ причем при этом он больше опирается на интуицию, чем на аналитические выводы.

    (рис 6.53) Определение предельной вероятности обнаружения отказов схемы

    Таким образом, для каждой схемы $$s_m$$ разработчик определяет полный контролирующий тест $$T_{m}$$ ограниченной длины и его характеристики $$P_{обн}^{m}(l_t^{min})$$ и $$P_{раб}^{m}(n_{ot})$$. Очевидно, что наиболее устойчивая к $$n_{ot}$$ отказам схема та, у которой $$P_{раб}^{m}(n_{ot})$$ максимальна.

    Системотехнические выводы по лекции 6

  • Объективно существующее отношение иерархии между "объектами" проектирования и множественность "вложений" одних и тех же компонент, используемых в программно-аппаратной и диагностической плоскостях проекта, предопределяет эффективность создания инструментальных платформ МКМД-бит-потоковых вычислительных технологий на основе объектно-ориентированного подхода.
  • В структурно-функциональной и программно-аппаратной плоскости бит-процессор является неделимой единицей проекта, но при переходе в диагностическую плоскость его необходимо раскрыть, включив в иерархию описания блоки, узлы, вентили и физико-технические процессы, нарушение условий правильной работы которых и служит источником "расширения" библиотеки бит-инструкций бит-процессора.
  • Интерактивный режим, а с ним и графический интерфейс инструментальных платформ пока остаются атрибутом МКМД-бит-потоковых технологий, так как они поддерживают завершающий этап проектирования субпроцессоров, на котором решаются задачи компоновки библиотечных модулей на бит-матрице, или, что одно и то же, на плоской ортогональной FIFO -регистровой коммутационной решетке, где сдвиг на один дискрет всегда сопровождается изменением времени задержки на 1 такт.
  • Главная особенность МКМД-бит-потоковых технологий состоит в том, что объектом диагностики на схемотехническом уровне является относительно простая схема бит-процессора (порядка 800-1000 вентилей), которая к тому же достаточно просто разбивается на блоки с разным последействием отказов: регистр команды, операционный канал, канал транзита, средства коммутации и т. п. Вместе с тем, функциональные возможности программно-аппаратной плоскости проекта, как правило, отвечают ультравысокой степени интеграции (порядка 8-20 миллионов вентилей и выше) за счет наращивания "площади" бит-матрицы (от 1000 до 10000 бит-процессоров).
  • Средства эксплуатационной диагностики МКМД-бит-потоковых субпроцессоров являются продолжением средств промышленной диагностики, которые используются для генерации эталонных тестов и эталонных тестовых воздействий. Незнание использованных в производстве бит-матричных СБИС методов и средств обнаружения отказов и положенных в их основу физических моделей отказов приводит к неоправданному увеличению пространства диагностики, делая само изделие диагностонепригодным. Поэтому стратегия заимствования изделий микроэлектроники в третьих странах чревата высокой вероятностью необнаружения отказов, особенно в современных процессорах RISC - и ЦПОС -архитектуры, которые по степени функциональной интеграции уже давно относятся к УБИС.
  • Вернуться к учебному плану