Скачиваний:
27
Добавлен:
01.05.2014
Размер:
736.26 Кб
Скачать

4.3.3. Пункт меню «Моделирование работы»

Выбор данного пункта меню приводит к появлению окна моделирования работы систолического массива. Вид этого окна представлен на рис. 4.8.

Рис. 4.8. Окно моделирования работы систолического массива.

К основным управляющим элементам данного окна относятся:

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

  • кнопка «Выбрать…», позволяющая определить имя файла, из которого следует загрузить текущую конфигурацию. После выбора имени файла полный путь к нему будет выведен в строке слева;

  • протокол выходных значений массива, регистрирующий значения на всех выходах массива после каждого изменения его состояния;

  • кнопка «Новое состояние», нажатие которой приводит к пересчёту текущего состояния массива;

  • кнопка «Закрыть», закрывающая окно моделирования.

После успешной загрузки конфигурации массива на экране также появляется окно просмотра содержимого потоков данных. Внешний вид этого окна приведён на рис. 4.9.

Рис. 4.9. Окно просмотра содержимого потоков данных.

Данное окно предназначено для просмотра текущего состояния всех потоков данных, определённых в конфигурации массива.

4.4. Модель систолического массива

В принятой модели систолический массив описывается с помощью трёх понятий:

  • арифметический элемент (40rithmetic element или AREL). Представляет собой элементарную вычислительную единицу массива;

  • поток данных (data flow или FLOW). Представляет собой очередь входных значений, подаваемых на входы арифметических элементов;

  • выход массива (data output). Представляет собой ссылку на выход арифметического элемента, с которого следует считывать результаты вычислений.

Арифметический элемент моделирует работу схемы, имеющей три входных и три выходных контакта (условно «А{in|out}», «В{in|out}»и «С{in|out}»). Входные и выходные данные связаны соотношениями:

Aout = Ain

Bout = Bin

Cout = Cin + AinBin

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

Процесс получения информации арифметическими элементами от источников основывается на следующих ограничениях:

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

  • если источником данных является арифметический элемент, то его выходы могут быть связаны только с одноимёнными входами (т.е. выход «А» со входом «А» и т.д.);

  • если источником данных является поток данных, то на каждом такте работы входное значение будет изыматься из потока (состояние потока будет, таким образом, изменяться);

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

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

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

Массив работает по тактам. За один такт выполняются следующие действия:

  • сохранение значений на входах арифметических элементов в специальный буфер. Это необходимо для обеспечения независимости выполнения операций отдельными арифметическими элементами;

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

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

Конфигурация массива представляет собой текстовый файл с расширением «sis» и имеет следующий формат:

<количество_ариф_элементов_в_массиве> // Допустимо значение от 1 до 25

<количество_потоков_данных_в_массиве> // Допустимо значение от 1 до 25

<количество_выходов_в_массиве> // Допустимо значение от 1 до 25

// обязателен пропуск строки

<описание_ариф_элемента_1>

// обязателен пропуск строки

<описание_ариф_элемента_N>

// обязателен пропуск строки

<описание_потока_данных_1>

// обязателен пропуск строки

<описание_потока_данных_M>

// обязателен пропуск строки

<описание_выхода_1>

// обязателен пропуск строки

<описание_выхода_К>

Арифметический элемент описывается следующим образом:

ARYTHMETIC_ELEMENT

<номер_элемента> // Элементы должны определяться строго по порядку

[FLOW | AREL] // Источник данных для входа «А» - ар. элемент или поток

<номер_источника_данных> // Номер потока, либо ар. элемента для входа «А»

[FLOW | AREL] // Источник данных для входа «В» - ар. элемент или поток

<номер_источника_данных> // Номер потока, либо ар. элемента для входа «В»

[FLOW | AREL] // Источник данных для входа «С» - ар. элемент или поток

<номер_источника_данных> // Номер потока, либо ар. элемента для входа «С»

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

DATA_FLOW

<номер_элемента> // Потоки должны определяться строго по порядку

<содеримое_потока> // Значения элементов потока в строку через пробел. Строка

// завершается последним элементом, а не пробелом…

Выход массива описывается следующим образом:

DATA_OUTPUT

<номер_выхода> // Выходы должны определяться строго по порядку

<номер_ариф_элемента> // Ссылка на арифметический элемент

[A | B | C] // Указание конкретного выхода ар. элемента

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

  1. Неверный формат входного файла (порождаются исключения);

  2. Некорректно указано количество арифметических элементов в матрице;

  3. Некорректно указано количество входных потоков данных;

  4. Ожидается описание арифметического элемента;

  5. Нарушен порядок объявления идентификаторов арифметических элементов;

  6. Некорректно указан источник данных для входа арифметического элемента;

  7. Ссылка на несуществующий поток данных на входе арифметического элемента;

  8. Ссылка на несуществующий арифметический элемент на входе арифметического элемента;

  9. Ожидается описание входного потока данных;

  10. Нарушен порядок объявления идентификаторов входных потоков данных;

  11. Недостаточно описаний арифметических элементов;

  12. Недостаточно описаний входных потоков данных;

  13. Некорректно указано количество выходных потоков данных;

  14. Недостаточно описаний выходных потоков данных;

  15. Ожидается описание выходного потока данных;

  16. Нарушен порядок объявления идентификаторов выходных потоков данных;

  17. Ссылка на несуществующий арифметический элемент при описании выходного потока данных;

  18. При описании выходного потока данных некорректно указан выход арифметического элемента.