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

УДК 004.31

ФУНКЦИОНАЛЬНАЯ ОРГАНИЗАЦИЯ МОДУЛЯ АССОЦИАТИВНОГО СОПРОЦЕССОРА ДЛЯ СПЕЦИАЛИЗИРОВАННЫХ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ1

А. И. Мартышкин

THE FUNCTIONAL ORGANIZATION OF THE MODULE OF THE ASSOCIATIVE COPROCESSOR FOR SPECIALIZED COMPUTING SYSTEMS

А. I. Martyshkin

Аннотация. Актуальность и цели. Основная область применения ЭВМ сегодня - работа с большими объемами данных, при которой самыми трудоемкими операциями являются всевозможные поиски и сортировки. Существующие вычислительные системы используют адресную архитектуру памяти. При такой организации, чтобы осуществить поиск данных в памяти, необходимо произвести чтение по каждому адресу модуля памяти и сравнить его с аргументом поиска, в результате чего на поиск нужной информации в памяти уходит много машинного времени. Это обстоятельство негативно сказывается на быстродействии вычислительной системы в целом. В работе рассматривается возможность реализации модуля ассоциативного сопроцессора на современной элементной базе для специализированных вычислительных систем. Целью данной работы является разработка и исследование модуля ассоциативного сопроцессора на базе ПЛИС для специализированных вычислительных, например многопроцессорных, систем, выполняющего ассоциативные функции и функции хранения данных. Объектом разработки и исследования данной статьи является ассоциативный сопроцессор на базе ПЛИС. Материалы и методы. Для достижения поставленных в работе целей использована САПР Web pack ISE фирмы Xilinx с возможностью создания и моделирования работы устройства как при помощи схемотехнического редактора, так и при помощи языка VHDL, что существенно облегчает синтез проектов для применения на современной элементной базе - ПЛИС. Результаты. Разработаны и отлажены VHDL-коды модуля ассоциативного сопроцессора и отдельных его блоков. Функционал и работоспособность устройства проверена тестированием в используемой САПР, получены временные диаграммы. Выводы. Результатами исследования являются полученные VHDL-коды модуля ассоциативного сопроцессора, из которых синтезирован прошивочный файл для конфигурирования ПЛИС.

Ключевые слова: ассоциативная память, сопроцессор, вычислительная система, ячейка памяти, анализатор многократного совпадения, адресация памяти, шинный интерфейс, аппаратная реализация, цикл записи, цикл чтения.

Abstract. Background. The main applications of computers today - working with large volumes of data, where are all sorts of searches and sort the most labor-intensive operations. Existing computer systems used address memory architecture. In such an arrangement, to effect retrieval of data in the memory, it is necessary to make the reading of

1 Работа выполнена при финансовой поддержке РФФИ (грант № 16-07-00012).

157

each memory module address and compare it with the search argument, resulting in finding the desired information in the memory takes a lot of computer time. This fact negatively affects the speed of a computer system as a whole. The paper considers the possibility of implementing a coprocessor module association on modern element base for specialized computer systems. The aim of this work is the development and research of associative coprocessor module on FPGA, for specialized computing, for example, multi-processor, systems, performing associative function and data storage functions. The object of the development and research of this article is an associative co-processor based on FPGA. Materials and methods. In order to achieve the objectives used CAD Web pack ISE from Xilinx with the ability to create and simulate the operation of a device using the schematic editor, and in using VHDL language, which greatly facilitates the synthesis of projects for use on modern components - FPGAs. Results. Developed and debugged VHDL-code co-processor module association and its individual units. Functional and performance testing of devices tested in the CAD, obtained by the timing charts. Conclusions. The results of the study are obtained VHDL-code module of the associative co-processor, which is synthesized from broaching the file to configure the FPGA.

Key words: associative memory, coprocessor, computer system, memory cell, multiple match analyzer, memory addressing, bus interface, hardware implementation, write cycle, read cycle.

Введение

Пожалуй, самая основная область применения вычислительных систем (ВС) и кластеров сегодня - работа с большими объемами данных. Наиболее трудоемкими операциями здесь являются всевозможные поиски и сортировки данных. Существующие ВС используют адресную архитектуру памяти. Это обстоятельство негативно сказывается на быстродействии ВС в целом. Намного быстрее получать доступ к данным по ассоциации (содержанию). Сущность принципа адресации по содержанию описана в работе [1].

Постановка задачи

Данная статья в целом носит исследовательский характер. В ходе изучения предметной области с целью поиска слабо проработанных вопросов были проанализированы литературные источники [1-3]. Ряд проблемно ориентированных моментов, связанных с возможностью аппаратной реализации модуля ассоциативного сопроцессора для быстрого поиска данных, не нашли должного отражения в публикациях по данной тематике, однако частично они были освещены и показаны в работах [4-11].

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

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

Подключение описываемого устройства к ВС возможно следующими способами [12]:

- прямое подключение к шине ЦП, при этом сопроцессор необходимо включать в состав системной платы;

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

- подключение к шине расширения компьютера (PCI); в этом случае сопроцессор будет выполнен в виде платы расширения.

При прямом подключении к шине ЦП устройство придется включать в состав системной платы, что приведет к увеличению стоимости сопроцессора и его универсальности (устройство будет рассчитано на работу с определенным классом ЦП и определенной архитектурой ВС). При подключении с помощью интерфейса USB сопроцессор будет иметь вид отдельного модуля, но при этом работа с ним будет осуществляться последовательно, что приведет к снижению быстродействия. Подключение сопроцессора к шине PCI позволит реализовать его в виде платы расширения. При этом работа с модулем будет осуществляться по параллельному интерфейсу, что позволит достичь максимальной производительности. Проанализировав все перечисленные способы организации основной части устройства и части сопряжения с ВС, решено основную часть выполнить в виде параллельного АЗУ, так как данный способ обладает максимальной производительностью. Подключение к системе реализуется по шине PCI, так как она обладает достаточно высокой пропускной способностью.

Описание ассоциативного сопроцессора на функциональном уровне

Основой рассматриваемого ассоциативного сопроцессора является модуль памяти, представляющий собой массив ячеек памяти. Таким образом, разработка модуля памяти сводится к разработке ячейки памяти и объединению их в массив. Запоминающий элемент ячейки памяти можно реализовать на параллельном регистре, являющемся массивом D-триггеров, обеспечивающих максимальную производительность и минимум логики, необходимой для реализации запоминания информации. Основными сигналами для регистра являются 32-разрядный сигнал D, по которому в регистр поступают данные, сигнал CE и 32-разрядный сигнал Q, с которого хранящиеся данные счи-тываются из регистра. Схема сравнения может быть реализована на базе компаратора. Основными сигналами для него являются 32-разрядные сигналы A и B, на которые подаются аргументы для сравнения, сигналы =, < и >, с которых считываются результаты сравнения. В состав ячейки памяти включен буферный элемент для отключения выходной шины данных ячейки памяти от общей выходной шины. Основными сигналами буферного элемента являются 32-разрядный сигнал D, 32-разрядный сигнал Q и сигнал T. Если

сигнал Т равен логическому нулю, то данные с О поступают на Q. В противном случае Q переключается в третье состояние. Функциональная схема ячейки памяти приведена на рис. 1,а.

б)

Рис. 1. Ячейка памяти: а - функциональная схема; б - временные диаграммы работы

На вход ArgI подается аргумент поиска. Через вход Datai данные поступают в ячейку памяти. С входа DataO данные считываются из ячейки. Входы WRITE и CS служат для управления функционированием ячейки памяти. Сигналом CS ячейка выбирается, т.е. буферный элемент BUFT на выходную шину DataO пропускает сигналы с выхода регистра RG. По единичному сигналу WRITE данные с входа Datai записываются в регистр RG. На выходах Equal, More и Less формируются сигналы «РАВНО», «БОЛЬШЕ» и «МЕНЬШЕ» соответственно.

Временные диаграммы работы ячейки памяти, подтверждающие ее работоспособность, приведены на рис. 1,6. Здесь показана запись в ячейку памяти ряда значений: «F», «FFF» и «FF». Аргументом поиска является «F». Как видно из рисунка, пока сигнал CS равен логическому нулю, выходная шина (DataO) находится в третьем состоянии, т.е. отключена. При подаче на вход CS логической единицы с выходной шины данных (DataO) можно счи-

тывать значения, хранящиеся в регистре. Запись в ячейку осуществляется подачей логической единицы на вход WRITE. Из полученных временных диаграмм видно, что, как только в ячейку памяти записывается новое значение, на выходах Equal, More и Less устанавливаются результаты поиска.

Вычислительный эксперимент

Работа ассоциативного сопроцессора (рис. 2) начинается с включения питания или с аппаратного сброса (сигнал RST# равен логическому нулю), во время которого сбрасываются регистр BAR и все триггеры устройства.

После сброса устройство не отвечает на обращение к пространству ввода/вывода. Начинается его конфигурирование с помощью циклов конфигурационной записи/чтения. Сигнал IDSEL устанавливается в единичное значение. Триггер T3 фиксирует обращение к конфигурационной памяти. Устройство устанавливает сигналы DEVSEL и TRDY в нулевое значение, тем самым подтверждая готовность к приему/передаче данных. Декодируются сигналы шины команд (CBE). Если это команда конфигурационного чтения, то триггер T2 устанавливается в единичное состояние. С линий AD [7:2] в фазе адреса считывается и декодируется дешифратором DCCS адрес регистра конфигурационной памяти. Декодированная двоичная последовательность фиксируется на регистре RGCS. При конфигурационном чтении из регистра с нулевым адресом на разрешающий вход T буферного элемента BUFV подается логическая единица и на шину AD выдается DEVICE ID и VENDOR ID («01010101010101010101010101010101»). При конфигурационном чтении из регистра с адресом 10h на разрешающий вход T буферного элемента BUFB подается логическая единица и на шину AD выводится содержимое регистра BAR. Если команда, поступившая по шине CBE, является командой конфигурационной записи, то триггер T1 устанавливается в единичное состояние. Как и при конфигурационном чтении, декодируется дешифратором DCCS адрес регистра конфигурационной памяти. И по обращению к регистру конфигурационной памяти с адресом 10h на разрешающий вход CE регистра BAR подается логическая единица, с шины AD в регистр BAR записывается базовый адрес области ввода/вывода. По завершении конфигурирования устройство готово к работе.

Компаратор COMP постоянно сравнивает сигналы на шине AD со значением, записанным в регистр BAR. В случае равенства сигналов на шине AD и значения, записанного в регистр BAR, на вход триггера T4 подается логическая единица, и если сигналы FRAME и IDSEL равны нулю и сигнал DEVSEL равен единице, то триггер T4 фиксирует единицу на его входе. Сигналы DEVSEL и TRDY устанавливаются в нулевое значение, т.е. устройство готово к приему или передаче данных. В фазе адреса на регистре RA фиксируется сигнал AD [9:0]. На основании 9, 8 и 7 разрядов выхода Q регистра RA дешифратором DC и шифратором CD вырабатывается команда (шина CMD), которая дешифруется на DCC и поступает в блоки сопроцессора. Разряды с 0 по 4 выхода Q регистра адреса RA поступают на вход мультиплексора MXA, который в зависимости от внутренней команды, поступающей по шине CMD (команды обычного чтения/записи), подключает эти сигналы к входу дешифратора DCA, который в свою очередь дешифрирует адрес и вырабатывает сигнал CS для соответствующей ячейки памяти.

При адресном (обычном) чтении из ячеек памяти сигнал WriteRAM равен нулю. Выработанный дешифратором адреса DCA сигнал CS для соответствующей ячейки разрешает прохождение сигналов с выхода регистра RG ячейки памяти на выходную шину данных (DataO). На остальных ячейках памяти в это время буферные элементы BUFT отключают выход регистра от выходной шины данных. Через мультиплексор MXDo и буферный элемент BUFD данные с выходной шины данных выводятся на шину AD. При адресной (обычной) записи в ячейку памяти дешифратором команды DCC сигнал WriteRAM переводится в единичное состояние. Дешифратором адреса DCA вырабатывается сигнал CS для соответствующей ячейки, и сигналы с шины AD через регистр RDi записываются в регистр RG соответствующей ячейки памяти. Асинхронно компараторы COMP всех ячеек памяти сравнивают содержимое регистра RG с аргументом и вырабатывают сигналы Equal, More и Less для случаев, когда содержимое ячеек равно, больше или меньше соответственно. И по команде фиксации (команда FixHit) данные сигналы фиксируются в памяти фиксации реакций.

Временные диаграммы работы ассоциативного сопроцессора приведены на рис. 3,а—г. На рис. 3,а показаны диаграммы циклов конфигурирования. В первом цикле, который занимает 2 такта, происходит конфигурационное чтение из ячейки конфигурационной памяти с адресом 0h. По шине CBE передается команда конфигурационного чтения «1010», в шестнадцатеричной системе счисления это A. По разрядам 7-2 шины AD передается адрес ячейки конфигурационной памяти («0»). Сигналы DEVSEL и TRDY устанавливаются в нулевое значение, подтверждая готовность к работе устройства. Далее в следующем такте начинается фаза данных, и устройство выдает DEVICE ID и VENDOR ID - это «55555555h». Во втором цикле, который также занимает 2 такта, происходит конфигурационная запись в ячейку конфигурационной памяти с адресом 10h (ячейка, отвечающая за базовый адрес области ввода/вывода). В нее записываем 5С00Ь. В дальнейшем устройство до следующего сброса или записи иного значения в регистр базового адреса области ввода/вывода (BAR) будет отвечать на обращение к портам ввода/вывода с адресами 5CT0-5FFF. Так как в качестве базового адреса используются разряды с 31 по 10, остальные применяются для обращения к узлам устройства.

На рис. 3,б представлены диаграммы циклов записи в ячейки АП. Цикл состоит из фазы адреса и фазы данных. Как видно из диаграмм, для записи в устройство необходимо два такта. В первом такте (фаза адреса) по разрядам 31-10 шины AD передается адрес устройства («0000000000000000010111xxxxxxxxxx»). В разрядах 9-7 шины AD передается адрес узла устройства («000» - адресное обращение к ячейкам памяти), а по разрядам 4-0 шины AD поступает адрес ячейки АП («00000», «00001», «00010», «00011», «00100», «00101», «00110», «00111»). Таким образом, для обращения к ячейке памяти с адресом 5h на шине AD должен быть выставлен адрес «00000000000000000101110000000101» (рис. 4,а). В первом такте по шине CBE так же передается команда записи в порт ввода/вывода («0011»). Во втором такте по шине AD поступают данные. В ячейку с адресом 0h записывается «0000000F», в ячейку с адресом 1h -«0000001F», в ячейку с адресом 2h - «00000002», в ячейку с адресом 3h -«00000003» (см. рис. 3,б); в ячейку с адресом 4h - «0000004A», в ячейку с адресом 5h - «0000000F», в ячейку с адресом 6h - «0000000F» и в ячейку с адресом 7h - «0000000A».

а)

б)

г)

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

На рис. 3 в показаны циклы записи аргумента, фиксации совпадений и чтение количества совпадений. Цикл записи аргумента поиска ничем не отличается от записи в ячейку памяти. На него также необходимо два такта. В фазе адреса передается адрес, состоящий из базового адреса («0000000000000000010111хххххххххх») и адреса узла («001»). Адрес ячейки памяти игнорируется. В регистр аргумента записываем «0000000Б». Таким образом, имеем 3 ячейки, содержимое которых равно аргументу, 2 ячейки -больше аргумента и 3 ячейки - меньше аргумента (рис. 4,6).

а)

Аргцмент! OOOOOOOF

Ячейка Ячейка Ячейка Ячейке Ячейка Ячейка Ячейка Ячейка

№0 №1 №2

N4

№6 №7

OOOOOOOF

0000001F

00000002

00000003

0000004А

OOOOOOOF

OOOOOOOF

ОООООООА

Рабно аргументу Больше аргумента Меньше аргумента Меньше аргумента Больше аргумента Рабно аргументу Рабно аргументу Меньше аргумента

б)

Рис. 4. Работа сопроцессора: а - адресация устройства; 6 - содержимое ассоциативной памяти

Цикл фиксации совпадений начинается с адреса 5E80h. Этот адрес получился в результате объединения базовой части адреса (она, как и во всех остальных случаях, равна «0000000000000000010111xxxxxxxxxx»), адреса узла устройства («101») и адреса ячейки памяти, который не участвует в цикле фиксации совпадений. Фиксация совпадений происходит только по команде записи в порт ввода/вывода («0011»). Значение, передаваемое в фазе данных, не имеет никакого значения, так как нигде не учитывается. Это значение передается по причине того, что транзакция PCI шины должна иметь хотя бы одну фазу данных. Цикл чтения количества совпадений начинается с адреса идентичного цикла записи аргумента. Разница состоит в том, что цикл чтения количества начинается с команды чтения из порта ввода/вывода, а цикл записи аргумента - с команды записи в порт ввода/вывода. В фазе данных читается значение количества элементов, равных аргументу (AD[17:12]), больше аргумента (AD[11:6]) и меньше аргумента (AD[5:0]). В нашем случае это значение равно 3083h («000011 000010 000011»), т.е. количество ячеек памяти, содержимое которых равно аргументу, составляет 3. Количество ячеек памяти, содержимое которых больше аргумента, - 2. Количество ячеек памяти, содержимое которых меньше аргумента, равно 3.

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

адреса узла (для чтения ячеек, содержимое которых больше аргумента, - это «011», для ячеек, содержимое которых больше аргумента, - это «100»), сигнал DEVSEL устанавливается в нулевое значение. Во втором такте читается адрес откликнувшейся ячейки. В третьем такте по считанному адресу читаются данные, и сигнал TRDY устанавливается в нулевое значение, что свидетельствует о готовности целевого устройства выдать данные данных.

Рассматриваемый аппаратный модуль реализован на ПЛИС фирмы Xilinx. Разработаны VHDL-коды устройства, описание которого состоит из четырех модулей, включающих основные блоки реализуемого устройства: ассоциативный сопроцессор, память фиксации реакций и анализатора многократного совпадения, описание PCI интерфейса и сопряжение ассоциативного сопроцессора с ним.

Заключение

На основании описания ассоциативного сопроцессора на функциональном уровне был разработан VHDL-код устройства, после чего получен прошивочный файл для конфигурирования ПЛИС. Работоспособность устройства и отдельных блоков проверена тестированием и отладкой разработанных VHDL-кодов.

Разрядность шины данных, описываемой в работе сопроцессора, составляет 32 бита (двойное машинное слово). Емкость массива АП составляет 32 двойных машинных слова. Ассоциативный сопроцессор реализован аппа-ратно, что позволяет выполнять трудоемкие операции поиска и сравнения, тем самым разгружая центральный процессор и увеличивая производительность ВС в целом.

Список литературы

1. Бикташев, Р. А. Архитектура параллельных вычислительных систем / Р. А. Бик-ташев, В. С. Князьков. - Пенза : РИО Упринформпечати, 1993. - 166 с.

2. Кохонен, Т. Ассоциативные запоминающие устройства : пер. с англ. / Т. Кохонен. -М. : Мир, 1982. - 384 с.

3. Огнев, И. В. Ассоциативные среды / И. В. Огнев, В. В. Борисов. - М. : Радио и связь, 2000. - 312 с.

4. Литвинская, О. С. Структура принятия решения по выбору цифрового средства реализации алгоритма в информационной технической системе / О. С. Литвинская, И. И. Сальников // Фундаментальные исследования. - 2010. - № 12. -С. 111-118.

5. Мартышкин, А. И. Математическое моделирование аппаратного буфера памяти многопроцессорной системы / А. И. Мартышкин // Оптико-электронные приборы и устройства в системах распознавания образов, обработки изображений и символьной информации. Распознавание -2015 : сб. материалов XII Междунар. науч.-техн. конф. - Курск : Изд-во Юго-Зап. гос. ун-та, 2015. - С. 247-249.

6. Мартышкин, А. И. Разработка аппаратного буферного устройства памяти многопроцессорной системы / А. И. Мартышкин // Фундаментальные исследования. -2015. - № 12-3. - С. 485-489.

7. Мартышкин, А. И. Реализация аппаратного буфера памяти многопроцессорной системы / А. И. Мартышкин // Новые информационные технологии и системы : сб. ст. XII Междунар. науч.-техн. конф. - Пенза : Изд-во ПГУ, 2015. - С. 96-99.

8. Мартышкин, А. И. Разработка и исследование разомкнутых моделей подсистемы «процессор-память» многопроцессорных вычислительных систем архитектур UMA и NUMA / А. И. Мартышкин // Вестник Рязанского государственного радиотехнического университета. - 2015. - № 54-1. - С. 121-126.

9. Сальников, И. И. Анализ растровых пространственно-временных сигналов и синтез специализированных процессоров для быстродействующей обработки изображений в системах технического зрения : дис. ... д-ра техн. наук : 05.13.14 / Сальников И. И. - Пенза, 2000. - 247 с.

10. Ушенина, И. В. Реализация алгоритмов цифровой адаптивной фильтрации на ПЛИС / И. В. Ушенина // XXI век: итоги прошлого и проблемы настоящего плюс. - 2012. - № 5 (09). - С. 134-138.

11. Biometrie identification in ehealthcare: Learning from the cases of Russia and Italy / P. Kachurina, L. B. Vidiasova, D. Trutnev, F. Buccafurri, E. Bershadskaya // Lecture Notes in Computer Science. - 2015. - Vol. 9265. - Р. 103-116.

12. Цилькер, Б. Я. Организация ЭВМ и систем / Б. Я. Цилькер, С. А. Орлов. - 2-е изд. -СПб. : Питер, 2011. - 688 с.

Мартышкин Алексей Иванович кандидат технических наук, доцент, кафедра вычислительных машин и систем,

Пензенский государственный технологический университет E-mail: alexey314@yandex.ru

Martyshkin Alexey Ivanovich candidate of technical sciences, associate professor,

sub-department of computers and systems, Penza State Technological University

УДК 004.31 Мартышкин, А. И.

Функциональная организация модуля ассоциативного сопроцессора для специализированных вычислительных систем / А. И. Мартышкин // Модели, системы, сети в экономике, технике, природе и обществе. - 2016. - № 3 (19). -С.157-167.