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

Номер патента: 3407

Опубликовано: 24.04.2003

Авторы: Мюнх Роберт, Форбах Мартин

Есть еще 22 страницы.

Смотреть все страницы или скачать PDF файл.

Формула / Реферат

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

1.1. запросы на реконфигурирование от подчиненных конфигурируемых элементов посылают в указанное устройство, которое

1.2. обрабатывает эти запросы, при этом

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

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

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

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

1.3. отрабатывает конфигурационные данные последовательности команд, при этом

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

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

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

2. Способ по п.1, отличающийся тем, что не принятые конфигурируемыми элементами конфигурационные данные записывают в конец буферной памяти (FILMO).

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

4. Способ по любому из пп.1-3, отличающийся тем, что конфигурационные данные, записываемые в конфигурируемые элементы из начала буферной памяти, удаляют из буферной памяти, т.е. указатель чтения устанавливают позади записанных данных.

5. Способ по любому из пп.1-4, отличающийся тем, что конфигурационные данные, записываемые в конфигурируемые элементы из середины буферной памяти,

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

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

6. Способ по любому из пп.1-5, отличающийся тем, что конечный автомат (сборщик мусора) управляет памятью (ТК-ЗУ) устройства таким образом, чтобы в ней не возникало никаких пропусков, перемещают пропуски в памяти с имеющимися конфигурационными данными от начала пропуска до конца памяти (ТК-ЗУ) таким образом, чтобы имеющиеся конфигурационные данные занимали ту ячейку памяти, из которой стерта информация, указатели совмещают с концом памяти, а информацию по трансляции идентификаторов соответственно совмещают с передвинутыми ячейками памяти.

7. Способ по любому из пп.1-6, отличающийся тем, что поступающие в устройство запросы транслируют в однозначно определенный идентификатор (ID) программы конфигурирования, который указывает на определенную ячейку памяти (ТК-ЗУ).

8. Способ по любому из пп.1-7, отличающийся тем, что конфигурационные данные инициируют загрузку следующих конфигурационных данных(команда выполнения EXECUTE).

9. Способ по любому из пп.1-8, отличающийся тем, что устройства расположены иерархически в виде древовидной структуры.

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

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

12. Способ по любому из пп.1-11, отличающийся тем, что конфигурационные данные по запросу к другому устройству инициируют (триггерные сигналы) выполнение следующих конфигурационных данных в других устройствах, при этом запросы посылают:

а) в широковещательном режиме всем другим устройствам,

б) только в устройство непосредственно предшествующего более высокого уровня,

в) только в устройство (-а) непосредственно предшествующего более низкого уровня,

г) в конкретно адресуемое устройство.

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

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

15. Способ по пп.1, 13 и 14, отличающийся тем, что при использовании способа по п.13 и/или 14 обеспечивают соблюдение жестко заданной последовательности конфигурирования в пределах последовательности команд.

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

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

18. Способ по пп.1 и 16, отличающийся тем, что трансляция идентификатора осуществляется с помощью просмотровой таблицы.

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

20. Способ по пп.1 и 16-19, отличающийся тем, что однозначно определенный идентификатор транслируют в адрес соответствующей последовательности команд в памяти.

21. Способ по пп.1 и 20, отличающийся тем, что при отсутствии достоверного адреса соответствующую последовательность команд загружают в память и формируют адресную ссылку.

22. Способ по пп.1 и 20, отличающийся тем, что трансляцию идентификатора в адрес осуществляют с помощью просмотровой таблицы.

23. Способ по любому из пп.1-22, отличающийся тем, что буферная память выполнена не в виде отдельной памяти и точно согласована с последовательностью команд, при этом не использованные фыя конфигурирования конфигурационные слова маркируют как таковые, в результате чего при повторном вызове последовательности команд вновь обрабатывают только эти маркированные конфигурационные слова.

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

25. Способ по пп.1 и 23, отличающийся тем, что последовательности команд полностью объединяют указателем в связанный список, в результате чего сборщик мусора проходит на основании этого связанного списка по всем последовательностям команд, перезаписывают удаляемую последовательность команд следующей и удаляют ее из этого связанного списка.

Рисунок 1

 

Текст

Смотреть все

1 Предпосылки создания изобретения Уровень техники Уровень техники, относящийся к области настоящего изобретения, описан в заявке DE 19654846.2-53 ("Способ автоматической динамической перезагрузки потоковых процессоров(ПП), а также микросхем с имеющей регулярную структуру двух- или многомерной программируемой матрицей (программируемой пользователем вентильной матрицей (ППВМ),динамически программируемой вентильной матрицей (ДПВМ) и т.п.") и в заявке DE 19654593.5-53 ("Способ реконфигурирования программируемых микросхем во время прогона"). В этих заявках описан способ конфигурирования и реконфигурирования ПП, а также ППВМ, ДПВМ и аналогичных микросхем, заключающийся в том, что отдельно выполненная центральная микросхема более высокого уровня, аналогичная микроконтроллеру, берет на себя функции по распределению конфигурационных данных по нескольким в основном пассивным устройствам управления (контроллерам). Проблематика При использовании центрального и общего устройства, управляющего реконфигурированием частей [например ячеек (конфигурируемых элементов или КЭЛ)] одной или нескольких микросхем, в том случае, когда приходится одновременно обрабатывать много различных запросов на реконфигурирование, возникают "узкие места". Подобное центральное устройство значительно ограничивает преимущества параллельной работы описанных микросхем, поскольку представляет собой типичное "узкое место" и в результате существенно замедляет обработку данных. Кроме того, проблематичным является соотнесение источника события с загружаемой конфигурацией, поскольку в работе используются абсолютные адреса конфигурационной памяти (памяти, содержащей необходимую для конфигурирования, соответственно реконфигурирования информацию). Таким образом,управляющее реконфигурированием устройство должно иметь своего рода систему управления памятью, которая аналогично операционной системе параллельно протоколировала бы, какие области памяти какой конфигурацией используются. Дополнительную проблему представляет управление ресурсами (например ячейками). Необходимо обеспечить, чтобы каждая ячейка выделялась строго однократно запущенному по запросу на реконфигурирование алгоритму, а именно, тому, который использует и остальные окружающие ячейки, поскольку в противном случае может произойти взаимоблокировка. Дополнительно пояснить суть проблематики реконфигурирования можно на следующем примере. Матрица ячеек не сконфигурирована и 2 находится в исходном состоянии. Каждая ячейка может сигнализировать о том, находится ли она в допускающем реконфигурирование состоянии. Все ячейки матрицы готовы к конфигурированию, т.е. находятся в состоянии, допускающем реконфигурирование. Происходит загрузка первой (стандартной) программы конфигурирования (ПК 1), которая не полностью использует матрицу. Сконфигурированные ячейки перестают сигнализировать о том, что они находятся в допускающем конфигурирование состоянии. В группу еще не сконфигурированных ячеек загружают вторую, не зависящую от первой, программу конфигурирования (ПК 2). Третья программа конфигурирования (ПК 3) не может быть загружена в связи с тем, что ей необходимы ячейки с первой и/или второй программой конфигурирования, каковые ячейки,однако, не находятся в допускающем реконфигурирование состоянии, поскольку они уже задействованы. Выполнение этой программы конфигурирования ПК 3 приходится приостанавливать до тех пор, пока не освободятся необходимые ячейки, т.е. пока не будут завершены программы ПК 1 и ПК 2. Во время выполнения программ ПК 1 и ПК 2 приходит дополнительный запрос на загрузку четвертой (ПК 4) и пятой (ПК 5) программ конфигурирования, и все они не могут быть загружены, поскольку используют ячейки, занятые программами ПК 1 и ПК 2. Программы ПК 3 и ПК 4 частично используют одни и те же ячейки, а программа ПК 5 не использует ни одной из ячеек с программами ПК 3 и ПК 4. Для правильной дозагрузки программ ПК 3-ПК 5 необходимо выполнить следующие требования: 1. Программы ПК 3-ПК 5 следует загружать таким образом, чтобы по возможности сохранить временную последовательность в соответствии с запросами загрузки. 2. С целью обеспечить параллельное выполнение как можно большего количества операций следует загружать максимально возможное число не зависящих друг от друга, т.е. не использующих общие ячейки, программ конфигурирования. 3. Программы конфигурирования не должны взаимно блокировать друг друга, т.е. не должно возникать ситуаций, когда программа ПК 3 частично загружена, но ее дальнейшая загрузка невозможна, поскольку другие ячейки блокированы частично загруженной программой ПК 4, тогда как продолжение загрузки программы ПК 4 также невозможно в связи с тем,что необходимые ей ячейки в свою очередь блокированы программой ПК 3. В результате возникает типичная ситуация взаимоблокировки (так называемые "смертельные объятия"). 4. Компилятор, генерирующий указанные программы конфигурирования, не имеет возможности распознавать временное взаимодей 3 ствие этих программ и разрешать его таким образом, чтобы не возникало никаких конфликтных ситуаций. При этом необходимо достичь максимально рационального соотношения между затратами на реализуемую схему и оптимальным результатом, т.е. задача изобретения состоит в том, чтобы по возможности с минимальными затратами получить гибкую, обеспечивающую возможность параллельной работы и исключающую взаимоблокировку конфигурацию, которая могла бы работать с небольшими затратами машинного времени на вычисления. При этом необходимо решить следующие основные проблемы:- если загружать только программу ПК 3,то способ будет исключать взаимоблокировку,но не будет оптимальным, поскольку можно было бы загрузить также и программу ПК 5;- если загружать программу ПК 3, не загружать программу ПК 4, а программу ПК 5 тем не менее загружать, то программу ПК 4 необходимо предварительно помечать таким образом,чтобы при следующей операции загрузки она имела наивысший приоритет, что означает усложнение управления данными. Исключение взаимоблокировки обеспечивает способ, рассмотренный ниже. Предлагаемое в изобретении усовершенствование,задача изобретения В основу настоящего изобретения была положена задача разработать устройство, называемое ниже таблицей-конфигуратором (ТК),имеющее иерархическую структуру и возможность многократно присутствовать на любом уровне, причем количество ТК уменьшается от низшего уровня иерархии к высшему, в результате чего на наивысшем уровне иерархии присутствует строго одна ТК. Каждая ТК параллельно конфигурирует и контролирует независимо от других таблиц несколько конфигурируемых элементов (КЭЛ). ТК более высоких иерархических уровней могут временно сохранять (буферизовать) программы конфигурирования для ТК более низких уровней. В случае,когда нескольким расположенным на более низких уровнях ТК требуется одна и та же программа конфигурирования, последняя временно сохраняется в ТК более высокого уровня и вызывается отдельными ТК, при этом ТК более высокого уровня вызывает соответствующую программу конфигурирования только один раз из общей конфигурационной памяти, благодаря чему создается эффект кэширования. Помимо конфигурируемых микросхем настоящее изобретение благодаря указанному эффекту кэширования может быть использовано для кэшей команд и данных в микропроцессорах, потоковых процессорах и т.п. с несколькими арифметическо -логическими устройствами (АЛУ). При этом в зависимости от конкретного применения может отпасть необходимость в использовании 4 некоторых описанных ниже устройств (например в памяти типа FILMO от англ. "First In, Linear Multiple Out"), однако в самой иерархической структуре в принципе ничего не меняется. Поэтому указанное применение является частным случаем и не рассматривается более подробно. Существенное преимущество предлагаемого способа по сравнению с обычными методами кэширования заключается в том, что кэширование данных и/или кодов происходит селективно, т.е. на основании точно согласованных с используемым алгоритмом методов. Равным образом настоящее изобретение позволяет полностью исключить взаимоблокировку при реконфигурировании структур с большим количеством ячеек. Описание изобретения Вместо практиковавшейся до настоящего времени интеграции в микросхему центрального и общего устройства, которое обрабатывало все запросы на конфигурирование, согласно изобретению используется несколько иерархически расположенных (образующих древовидную структуру) активных устройств, способных взять на себя выполнение этой задачи. При этом запрос с самого нижнего уровня(от листьев иерархического дерева) перенаправляется дальше на расположенный выше него следующий уровень только в том случае, если этот запрос не смог быть обработан. Указанные шаги повторяются на всех существующих уровнях до достижения самого верхнего уровня. Самый верхний уровень связан с расположенной на более высоком уровне внутренней или внешней конфигурационной памятью, в которой содержатся все конфигурационные данные, которые когда-либо требовались для выполнения данной программы. Древовидная структура конфигурационных устройств обеспечивает использование,своего рода кэширование, конфигурационных данных. Доступ к программам конфигурирования осуществляется в основном на локальном уровне. В самом неблагоприятном случае программу конфигурирования приходится загружать из конфигурационной памяти более высокого уровня, если соответствующих данных нет ни в одной из иерархически организованных ТК. Взаимоблокировку предотвращает введение жесткой временной последовательности при загрузке конфигураций и сведение этих конфигураций в таблицу/список. Информация о состоянии ячеек (КЭЛ) перед загрузкой сохраняется в виде резервной копии, благодаря чему она остается неизменной в течение обработки всего списка конфигураций. Основы таблицы-конфигуратора Таблица-конфигуратор (ТК) представляет собой активное устройство, срабатывающее на синхронизирующие сигналы, т.е. на запускающие сигналы или так называемые триггерные сигналы. Триггерные сигналы формируются 5 двух- или многомерной матрицей, выполненной из электронных модулей, обычно арифметических или логических устройств, генераторов адресов, арифметическо-логических устройств и т.п., называемых ниже конфигурируемыми элементами или ячейками (КЭЛ). При появлении триггерного сигнала в ТК инициируется выполнение определенной операции. Задача ТК заключается при этом в том, чтобы управлять несколькими КЭЛ и определять их арифметические и/или логические операции. В частности,КЭЛ необходимо конфигурировать и реконфигурировать. Эту задачу берет на себя ТК, управляющая несколькими возможными программами конфигурирования (ПК), каждая из которых в свою очередь содержит множество отдельных конфигурационных слов (КС), и конфигурирующая несколько КЭЛ на основании пусковых условий с помощью одной или нескольких программ конфигурирования. При этом в КЭЛ поступает в каждом случае одно или несколько конфигурационных слов, содержащих адрес конфигурируемого КЭЛ. ПК должна быть в этом случае полностью и без искажений отображена на множество КЭЛ, причем по несколько КЭЛ могут быть объединены в группы,каждая из которых конфигурируется различными, но выполняемыми в полном объеме программами конфигурирования. При этом все КЭЛ одной группы закоммутированы таким образом, чтобы после установления необходимости в реконфигурировании все сгруппированные КЭЛ получили сообщение в виде общего сигнала реконфигурирования ("Реконфиг") о том, что каждый КЭЛ должен закончить обработку данных и перейти в состояние, допускающее реконфигурирование. Основы исключающего взаимоблокировку реконфигурирования У реконфигурируемых в процессе работы систем возникает проблема, состоящая в том,что система может перейти в состояние, при котором две части системы будут соответственно ожидать ответа друг от друга, в результате чего возникнет ситуация взаимоблокировки. Этой проблемы можно было бы избежать,либо загружая в систему новую конфигурацию целиком, либо вообще не загружая ее или используя своего рода метод блокировки по времени (тайм-аут). В результате возникает ряд трудностей- действия в случае невозможности загрузки конфигурации,- управление последовательностью загрузки конфигураций,- потеря производительности, поскольку не учитываются конфигурации, которые могли бы при известных обстоятельствах быть загружены в КЭЛ. 6 Описанный ниже способ позволяет решить указанные проблемы. При этом за отправную точку взята известная система с потоковым процессором. КЭЛ посылает триггерный сигнал в ТК. Эта ТК устанавливает источник триггерного сигнала и выбирает с помощью просмотровой таблицы загружаемую конфигурацию (ПК). Поступающие триггерные сигналы блокируются, и никакие дальнейшие триггерные сигналы до полной отработки текущей программы конфигурирования не принимаются. Программа конфигурирования включает несколько команд,передаваемых в определенное количество КЭЛ. Однако в конфигурируемой во время прогона системе не гарантируется выполнение каждой конфигурационной команды (КС). Причина сбоя может состоять, например, в том, что адресуемый конфигурируемый элемент (КЭЛ) еще не закончил выполнение своей задачи и поэтому не может принимать никаких новых конфигурационных данных. Во избежание снижения производительности все те конфигурационные команды, которые не могут быть выполнены [поскольку соответствующие КЭЛ не находились в состоянии, допускающем реконфигурирование,и отклонили запрос на конфигурирование (сигнал "НЕПРИНЯТИЕ")], записываются в соответствии с очередью "первым пришел - первым обслужен" (FIFO) за последней конфигурационной командой, находящейся в специальной памяти (типа FILMO, более подробно описана ниже). После этого тем же путем выполняется следующая конфигурационная команда. Этот процесс повторяется до тех пор, пока не будет достигнут конец соответствующей программы конфигурирования. После этого ТК снова переходит в то состояние, в котором она может принимать триггерные сигналы, с целью, при необходимости,продолжить загрузку конфигураций. В этом состоянии управляемая таймером ТК через регулярные промежутки времени обрабатывает содержимое памяти типа FILMO. Установление приоритетов при загрузке конфигураций происходит благодаря тому, что ТК перед непосредственной обработкой загружаемой конфигурации вначале осуществляет прогон содержимого памяти типа FILMO. Структура этой памяти типа FILMO, аналогичная структуре типа FIFO, позволяет автоматически присваивать тем конфигурационным командам, которые не смогли быть выполнены во время запросов, поступивших с предыдущими триггерными сигналами, более высокий приоритет по сравнению с вновь поступившими отрабатываемыми конфигурационными командами (КС). При обработке данных памяти типаFILMO перед или во время отправки конфигурационной команды происходит проверка каждого конфигурируемого элемента, которому адресована конфигурационная команда, нахо 7 дится ли он в "допускающем реконфигурирование" состоянии. При нахождении в таком "допускающем реконфигурирование" состоянии(что подтверждается сигналом "ПРИНЯТИЕ") происходит передача данных и их удаление из памяти типа FILMO. В "не допускающем реконфигурирование" состоянии (сигнал "НЕПРИНЯТИЕ") данные остаются в памяти типаFILMO и обрабатываются на следующем цикле прогона. ТК переходит к обработке следующего входного сообщения в памяти типа FILMO. Этот процесс повторяется до тех пор, пока не будет обработано все содержимое памяти типаFILMO. После этого происходит отработка собственно программы конфигурирования, запущенной по поступившему триггерному сигналу. При этом структура памяти типа FILMO соответствует структуре очереди типа FIFO, т.е. сначала обрабатываются входные сообщения(записи), поступившие самыми первыми. С целью обработки содержимого памяти типаFILMO и при отсутствии загрузки новых программ конфигурирования предусмотрен управляемый таймером прогон содержимого памяти типа FILMO через регулярные промежутки времени. Остальные, не задействованные конфигурируемые элементы (КЭЛ) продолжают параллельно работать во время этой фазы и не подвергаются при этом никакому функциональному воздействию. В результате может возникнуть ситуация, при которой, когда ТК обрабатывает содержимое памяти типа FILMO, один или несколько конфигурируемых элементов (КЭЛ) перейдут в состояние, "допускающее реконфигурирование". Поскольку ТК при обработке данных может при этом находиться в любом месте памяти типа FILMO, возможно возникновение следующей ситуации: ТК пытается отработать первую команду,которая адресована конфигурируемому элементу (КЭЛ), который не находится в состоянии,"допускающем реконфигурирование". Таким образом, ТК переходит к следующей конфигурационной команде (КС). В это же время один или несколько конфигурируемых элементов переходят в "допускающее реконфигурирование" состояние, в том числе и тот конфигурируемый элемент, который мог бы быть указан в первой конфигурационной команде. ТК обрабатывает вторую конфигурационную команду(КС), которая использует тот же конфигурируемый элемент (КЭЛ), что и первая конфигурационная команда, но которая поступила от другой программы конфигурирования. К этому моменту времени указанный конфигурируемый элемент (КЭЛ) находится в "допускающем реконфигурирование" состоянии, и команда может быть успешно выполнена. В результате невозможно обеспечить фактическую приоритетность загрузки той конфигурации, которая должна была быть загружена 8 первой. В данном случае могут существовать две частично готовые конфигурации, каждой из которых для полной загрузки соответственно требуются конфигурируемые элементы, занятые другой конфигурацией. При этом наступает ситуация взаимоблокировки (тупиковая ситуация),наглядно показанная на фиг. 18, где требуется настроить конфигурацию А и конфигурацию Б. ТК уже загрузила заштрихованную часть конфигурации А и конфигурации Б. Конфигурации А для завершения ее загрузки дополнительно необходима еще показанная светлой двойной штриховкой область конфигурации Б, а конфигурации Б для завершения ее загрузки необходима еще показанная темной двойной штриховкой область конфигурации А. Поскольку обе конфигурации загружены еще не полностью, а тем самым не могут и работать, ни для одной из обеих конфигураций не наступает того состояния завершения, при котором одну из обеих этих конфигураций можно было бы удалить. Обе конфигурации ждут освобождения дополнительно необходимых им конфигурируемых элементов. В предлагаемом способе взаимоблокировка предотвращается благодаря тому, что ТК перед обработкой содержимого памяти типаFILMO определяет состояния всех конфигурируемых элементов и после этого до завершения процесса не допускает больше никаких изменений, соответственно игнорирует возникающие изменения. Иными словами, либо сохраняются состояния всех конфигурируемых элементов,существовавшие до обработки содержимого памяти типа FILMO, либо предотвращается изменение состояний во время обработки содержимого памяти типа FILMO. С технической точки зрения для этой цели можно использовать в каждом конфигурируемом элементе регистр, в котором сохраняется информация о состоянии,предшествовавшем обработке содержимого памяти типа FILMO. ТК работает только на основе зарегистрированных состояний, а не на основе текущих состояний конфигурируемых элементов. Тем самым создаются предпосылки к тому,чтобы каждая подлежащая обработке команда(КЭЛ), находящиеся в одинаковом состоянии. Данный шаг не исключает перехода одного или нескольких конфигурируемых элементов во время обработки содержимого памяти типаFILMO в "допускающее реконфигурирование" состояние. Просто ТК выявит это произошедшее во время обработки данных изменение не сразу, а лишь с началом следующего цикла/прогона. Конфигурационные последовательности Для конфигурирования определенных алгоритмов обязательно необходимым условием является точное соблюдение той последовательности, в которой происходит запись конфигурационных слов (КС) в КЭЛ. Например, перед 9 подключением КЭЛ к шинной системе целесообразно вначале соответствующим образом сконфигурировать эту шинную систему, чтобы КЭЛ не был подключен к шине, которая используется другой программой. Иными словами,КЭЛ конфигурируют лишь после того, как предварительно были сконфигурированы соответствующие шинные соединения. В предлагаемом в изобретении способе соблюдение жесткой процедуры достигается следующим образом: Организованные в виде конфигурационных слов (КС) команды, выполнение которых имеет решающее значение для использования последующих КС при конфигурировании, маркируются особым образом (и ниже обозначены как КСР). Если процесс конфигурирования при использовании подобного КСР дает сбой, то все последующие КС соответствующих программ конфигурирования (ПК) записываются в память типа FILMO, и в этом цикле не выполняются. Равным образом и при прогоне содержимого памяти типа FILMO не выполняются в текущем цикле никакие КС, которые расположены последовательно за тем КСР, в процессе отработки которого произошел сбой. Метод кэширования ТК-структура имеет иерархическую организацию, т.е. в одной микросхеме существует несколько уровней ТК. В предпочтительном варианте их расположение соответствует древовидной структуре (дерево ТК). При этом с корневой ТК связана внешняя конфигурационная память (ВКП), в которой содержатся все программы конфигурирования (ПК), а с листьями дерева связаны конфигурируемые элементы(КЭЛ), вызывающие отдельные программы конфигурирования. С ТК средних уровней связаны соответствующие конфигурируемые элементы, которые находятся с ними на одном иерархическом уровне. С каждой ТК связана своя локальная внутренняя память. Данные из этой памяти частично стираются либо при отсутствии места для сохранения вновь поступивших программ конфигурирования, либо по определенному запросу в виде специальной ТКкоманды (команды удаления REMOVE). При этом удаление ПК происходит попрограммно на основе определенной стратегии, в результате чего в крайнем случае удаляются только те ПК,которые больше не требуются, или программы,явно указанные в команде удаления REMOVE. Кроме того, ПК удаляются по отдельности ровно в таком количестве, чтобы освободить в памяти столько места, сколько необходимо для записи в эту память вновь загружаемых ПК. Благодаря этому в памяти остается максимально возможное количество ПК для оптимизации эффекта кэширования. Преимущество этого заключается в том,что любая ТК, подчиненная какой-либо таблице-конфигуратору ТКх, т.е. находящейся выше 10 нее на дереве таблиц-конфигураторов, запрашивает хранящуюся в таблице ТКх программу конфигурирования не от внешней конфигурационной памяти (ВКП), а получает ее непосредственно из таблицы-конфигуратора ТКх. В результате образуется кэш-структура, охватывающая несколько уровней. Сложность передачи данных по дереву ТК и прежде всего необходимая ширина полосы пропускания ВКП существенно уменьшаются. Иными словами, в каждой ТК временно сохраняются программы конфигурирования таблицы-конфигуратора, находящейся на следующем более низком уровне. Это означает, что в ТК более низких уровней необходимые ПК поступают непосредственно из таблицконфигураторов, находящихся на следующем более высоком относительно них уровне, и нет необходимости обращаться к ВКП. Только в том случае, когда требуемая ПК еще отсутствует в одной из ТК более высоких уровней, эту ПК приходится загружать, обращаясь к ВКП. Тем самым обеспечивается наиболее эффективная иерархическая кэш-структура для ПК. На основе этой структуры можно разрабатывать также различные подходы к удалению данных, которые, однако, должны определяться эмпирическим путем в зависимости от их применения. Некоторыми из таких возможностей являются- удаление самых старых записей,- удаление наименьших записей,- удаление наибольших записей,- удаление наиболее редко вызываемых записей. Основа ТК-иерархий Для достижения кэш-эффекта таблицыконфигураторы объединяют в иерархию с древовидной структурой. Отдельные узлы (ТК) соединены шинной системой (меж-ТК-шина,т.е. шина, обеспечивающая взаимодействие между отдельными ТК), которой каждый из верхних узлов (ТК) соединен с несколькими нижними узлами (ТК). При этом нижние узлы (ТК) запрашивают данные у верхних узлов (ТК), после чего верхние узлы посылают данные нижним узлам. Нижние узлы обмениваются друг с другом информацией о состоянии с использованием для этой цели сетей между узлами более высоких уровней, которые должны соответствующим образом дешифровать адреса. Иерархия таблиц-конфигураторов и адресация Иерархии таблиц-конфигураторов организованы таким образом, что для адресации отдельных ТК можно использовать двоичное дерево. Это означает, что младшим двоичным разрядом адреса обозначаются отдельные листья дерева, а каждый последующий двоичный разряд адреса используется соответственно для выбора следующего более высокого иерархического уровня. В результате каждая ТК имеет однозначно определенный адрес. В приведенной ниже таблице показано распределение отдельных разрядов адреса по соответствующим уровням: 3 уровень 0: листья промежуточный уровень 1 промежуточный уровень 2 промежуточный уровень 3 означает используемые разряды адреса,"-" означает не используемые разряды адреса. При необходимости назначить какой-либо группе таблиц-конфигураторов таблицуконфигуратор более высокого уровня несколько разрядов адреса этой группы соответственно объединяют вместе. В приведенной ниже таблице показано распределение отдельных разрядов адреса по соответствующим уровням, при этом на уровне 0 находится группа из 8 ТК (разряд адреса 20): 5 Разрядность адресов уровень 0: ветви промежуточный уровень 1 промежуточный уровень 2 промежуточный уровень 3 означает используемые разряды адреса,"-" означает не используемые разряды адреса. Двоичное дерево может иметь одно- и двухмерную структуру, при этом для каждого измерения строится свое двоичное дерево. При адресации определенной ТК (АДРЕСАТА) инициирующая ТК (ИНИЦИАТОР) указывает либо точный целевой адрес, либо выполняет относительную адресацию АДРЕСАТА. Обработка относительного адреса происходит следующим образом. Пример поля относительного адреса при двухмерной адресации: 15 ТК более высокого уровня Бит 15 задают при необходимости выбора ТК следующего более высокого иерархического уровня. Бит 14 означает широковещательный режим, т.е. режим, при котором выбираются все ТК. Адреса X/Y указывают адрес АДРЕСАТА,исходя из адреса ИНИЦИАТОРА. Адреса представляют собой целые числа с определенным знаком (+/-). АДРЕСАТ определяется путем прибавления адресов X/Y поля адреса к фактическому разряду адреса. Адреса каждого уровня имеют определенную длину(разрядность адресов). Сумматоры соответствуют этой разрядности. Положительное или отрицательное переполнение при суммировании означает, что адре 12 суемая ТК не расположена на следующем за текущим узлом нижнем уровне, и поэтому адресный запрос передается далее в ТК, находящуюся на более высоком уровне (в узел следующего более высокого уровня). Отсутствие положительного или отрицательного переполнения указывает на то, что АДРЕСАТ находится на следующем под данным узлом уровне. По вычисленному на текущем уровне разряду адреса (см. таблицы) выбирается расположенная непосредственно под данным узлом ТК. Из последней в каждом случае на основании соответственно вычисленного разряда адреса выбирается ТК (узел) следующего более низкого уровня. Назначение приоритетов доступа в иерархиях таблиц-конфигураторов Доступом к меж-ТК-шине управляет арбитр. При этом все узлы нижнего уровня имеют одинаковый приоритет. Узел верхнего уровня обладает более высоким приоритетом. Благодаря этому запросы на доступ, передаваемые узлом более высокого уровня узлам более низких уровней или уже прошедшие по нескольким уровням, считая от ИНИЦИАТОРА, имеют более высокий приоритет по сравнению с другими запросами на доступ. Основная структура таблицы-конфигуратора Ниже представлена обзорная информация по ТК, которая дает общее представление об отдельных блоках/модулях. Впоследствии эти блоки/модули рассмотрены более подробно. Ядром ТК является управляющий конечный автомат (КАТК), который управляет выполнением всех операций по отработке программ конфигурирования (ПК). КАТК подчинены так называемый "сборщик мусора" (СМ),который управляет удалением ПК из памяти(ТК-ЗУ), память типа FILMO, которая выполняет функции по управлению еще подлежащими отработке КС, и загрузочный конечный автомат(ЗКА), который управляет загрузкой ПК. Память (ТК-ЗУ) выполнена в виде обычной допускающей запись/считывание оперативной памяти, которая может быть реализована на базе всех технически возможных запоминающих устройства и которая используется для локального хранения программ конфигурирования для соответствующей ТК и ТК нижних уровней. В особых случаях эта память (ТК-ЗУ) может быть выполнена также в виде постоянного запоминающего устройства (ПЗУ), стираемого программируемого постоянного запоминающего устройства (СППЗУ), электрически стираемого программируемого постоянного запоминающего устройства (ЭСППЗУ), флэш-памяти и т.п., что позволяет снабдить микросхему функцией хранения, аналогичной специализированной ИС или программируемому логическому устройству (см. уровень техники). 13 Для генерации ТК-ЗУ-адресов используются четыре следующих указателя, которые выполнены в виде загружаемых счетчиков: 1. указатель свободной ячейки памяти(УСП), который указывает на первую свободную ячейку в памяти, расположенную за последней ПК в ТК-ЗУ; 2. указатель мусора (УМУ), который указывает сборщику мусора на запись, подлежащую удалению из ТК-ЗУ; 3. указатель перемещения (УПЕ), который указывает на то место в ТК-ЗУ, откуда достоверное, не подлежащее удалению КС, т.е. запись соответствующей программы конфигурирования, необходимо скопировать/переместить в место записи, определяемое указателем мусора; 4. указатель программы (УПР), который указывает на КС, выполняемое в текущей момент памятью ТК-ЗУ. Интерфейс вывода передает КС далее соответствующим КЭЛ. КЭЛ, если они находятся в допускающем реконфигурирование состоянии,квитируют (сигнал "ПРИНЯТИЕ") получение КС. Не квитированное КС (сигнал "НЕПРИНЯТИЕ") временно сохраняется в памяти (типаFILMO), которая по своей структуре аналогична памяти типа FIFO, с тем, чтобы позже без использования указателя программы быть записанным в тот КЭЛ, куда оно было адресовано. Запрос на выполнение ПК поступает в КАТК в виде триггерных сигналов. Эти триггерные сигналы проходят через маску, которая представляет собой фильтр, отфильтровывающий (отбраковывающий) нежелательные триггерные сигналы. Маска может быть выполнена согласно уровню техники в виде вентиля И, логически объединяющего триггерный сигнал с разрешающим сигналом путем выполнения над ними логической операции И. Работающий по принципу приоритетности арбитр кругового обслуживания (АРБ-ОЦКО) преобразует триггерные сигналы в двоичные сигналы. Такой работающий по принципу приоритетности арбитр кругового обслуживания объединяет в себе преимущество принципа разрешения конфликтов на основе равноправия или кругового, соответственно карусельного обслуживания с распознаванием следующего разрешающего сигнала за один такт, т.е. с преимуществом арбитра, разрешающего конфликты на основе приоритетов. Прошедшие через маску триггерные сигналы поступают в виде адреса в первую просмотровую таблицу (ПТ 1), т.е. в запоминающее устройство, которое присваивает поступающему в виде адреса триггерному сигналу идентификатор (ID) соответствующей ПК и выдает его на информационные шины. Во второй просмотровой таблице (ПТ 2) идентификатор (ID) программы конфигурирования присваивается адресу ячейки памяти программы конфигурирования в памяти ТК-ЗУ. Вторая просмотровая таблица используется не 14 только для распределения триггерных сигналов; более того, команды, использующие идентификатор в качестве параметра, также используют ПТ 2 для присвоения, соответственно назначения адресов. Информация о распределении триггерных сигналов по соответствующим идентификаторам заносится по описанной ниже команде ссылки REFERENCE в ПТ 1. Управление просмотровой таблицей ПТ 2, т.е. распределение идентификаторов по адресам в памяти ТК-ЗУ,происходит автоматически с помощью КАТК и СМ. Для пояснения принципа, на основе которого работает ТК, ниже приведен возможный список основных команд: 1. Команда начала BEGIN ID Команда начала BEGIN ID указывает на начало ПК. Параметр ID указывает на однозначно определенный идентификатор программы конфигурирования. 2. Команда останова STOP Команда останова STOP указывает на конец ПК. В этом месте таблица-конфигуратор(ТК) заканчивает выполнение программы конфигурирования. Сборщик мусора (СМ) заканчивает удаление записей этой программы конфигурирования. 3. Команда выполнения EXECUTE ID По этой команде осуществляется переход к началу (BEGIN ID) соответствующей программы конфигурирования. Если эта программа отсутствует в памяти ТК, она запрашивается в таблице-конфигураторе более высокого уровня,соответственно загружается из общей памяти. 4. Команда загрузки LOAD ID По этой команде запрашивается идентификатор ID программы конфигурирования ПК в ТК следующего более высокого уровня. 5. Команда удаления REMOVE ID По этой команде осуществляется вызов сборщика мусора (СМ) для удаления из памяти ТК программы конфигурирования с соответствующим идентификатором, начиная с командыBEGIN ID и заканчивая командой STOP, и для перемещения следующих программ конфигурирования настолько, чтобы в памяти не возникал пропуск в результате удаления программы конфигурирования. 6. Команда помещения в стек PUSHFORCED ADDRESS DATA EXIT По этой команде осуществляется запись конфигурационных данных DATA в адресный регистр ADDRESS. В принудительном режиме FORCED запись данных производится даже в том случае, когда в соответствующем регистре-адресате не установлен флаг состояния готовности к реконфигурированию. Сигнал выхода ЕХIТиспользуется для указания на то,что речь идет о КСР, прерывающем в случае 15 поступления сигнала "НЕПРИНЯТИЕ" дальнейшее выполнение последующих КСР. 7. Команда установки маски MASK SRTRIGGER По этой команде маска для триггерных сигналов либо устанавливается при поступлении триггерного сигнала TRIGGER, либо отменяется при поступлении триггерного сигналаTRIGGER в зависимости от параметра SRUNMASKED TRIGGER По этой команде временно приостанавливается выполнение программы конфигурирования с переходом в режим ожидания триггерного сигнала TRIGGER. При задании параметра"без маски" UNMASKED срабатывание на ожидаемый триггерный сигнал происходит независимо от состояния маски триггерных сигналов. 9. Команда триггерного сигнала TRIGGERTRIGGER СТ По этой команде двоичное значение триггерного сигнала передается в адресуемую с помощью параметра("таблицаконфигуратор ") таблицу-конфигуратор более высокого уровня. 10. Команда установления связи GETBUS/GETCTS По этой команде устанавливается связь с меж-ТК-шиной. 11. Команда прекращения связи LOOSEBUS/LOOSECTS По этой команде прекращается связь с меж-ТК-шиной. 12. Команда ссылки REFERENCE TRIGGER ID По этой команде в просмотровую таблицу ПТ 1 по адресу триггерного сигнала TRIGGER записывается значение идентификатора ID, за счет чего триггерному сигналу ставится в соответствие определенная ПК. Команды выполнения (EXECUTE), загрузки (LOAD), удаления (REMOVE), помещения в стек (PUSH), установки маски (MASK), ожидания (WAIT), триггерного сигнала (TRIGGER),ссылки (REFERENCE) являются допустимыми только в пределах операторных скобок BEGINSTOP. Вне этих операторных скобок указанные команды не выполняются. Структура программы конфигурированияSTOP; Косвенная адресация (использование ссылок) Используемый в таблицах-конфигураторах принцип кэширования позволяет временно сохранять какую-либо программу конфигурирова 003407 16 ния в одной таблице-конфигураторе, при этом указанная программа конфигурирования используется несколькими различными таблицами-конфигураторами более низкого уровня или конфигурируемыми элементами. При обращении устройств/модулей более низких уровней к имеющемуся у микросхемы интерфейсу внешнего устройства (например запоминающего устройства с произвольной выборкой (ЗУПВ), периферийного устройства) возникает необходимость хранить в памяти различные адреса или разделы информации, относящейся к этому интерфейсу внешнего устройства. В результате отдельные необходимые программы конфигурирования стали бы принципиально отличаться по своему содержанию. При этом кэширование стало бы невозможным. Решить эту проблему позволяет использование косвенных ссылок. С этой целью применяют специальные программы конфигурирования (ниже обозначаемые как ПККА), которые содержат и устанавливают необходимые внешние параметры. При необходимости по триггерным сигналам вызываются другие различные ПК, расположенные на различных иерархических уровнях. Лишь программы ПККА не подлежат кэшированию, тогда как вызываемые ПК являются вполне унифицированными, и поэтому их можно кэшировать. Размер ПККА целесообразно сократить до абсолютного минимума,а именно, оставить в них только внешние и различающиеся параметры и предусмотреть возможность вызова единой ПК. Программа конфигурирования с косвенной адресацией (ПККА) имеет следующую структуру: ххх; допустимые команды, при этом они должны управлять только периферийными устройствами,TRIGGER ID; запросы на запуск, окончание или загрузку процессов, выполняемых с использованием периферийных устройствWAITFORBOOT Эта команда допустима только для первого адреса ТК-ЗУ. Во время самозагрузки в ТК-ЗУ вначале полностью записывается используемая для самозагрузки программа конфигурирования Загр-ПК, но без начальной последовательности самозагрузки этой программы BEGIN 0. На этой позиции (по адресу 1) расположена команда ожидания самозагрузки WAITFORBOOT, 17 которая автоматически устанавливается по команде сброса RESET. Лишь после того, как Загр-ПК будет полностью записана в ТК-ЗУ,команда WAITFORBOOT перезаписывается командой BEGIN 0, и КАТК начинает выполнение программы Загр-ПК. Команда WAITFORBOOT не должна появляться в какой-либо машинной программе. 2. Команда самозагрузки BOOT CT-ID Команда самозагрузки BOOT CT-ID определяет, в какую ТК (англ. СТ от "ConfigurationTable") должна быть записана следующая программа Загр-ПК. После команды BOOT CTID не следует начальной команды BEGIN, и программу Загр-ПК завершает не команда останова STOP, а следующая команда самозагрузкиBOOT CT-ID. Команда останова STOP заканчивает процесс самозагрузки. Команда BOOT CT-ID не должна появляться в какой-либо машинной программе. Процесс самозагрузки После команды сброса RESET таблицаконфигуратор самого верхнего иерархического уровня (корневая ТК) загружает программу Загр-ПК в ТК нижних иерархических уровней. Для этого предусмотрен переход к определенному адресу самозагрузки во внешней конфигурационной памяти (ВКП), которая связана с корневой ТК. Корневая ТК осуществляет этот переход с достижением последовательности самозагрузки, имеющей следующую структуру:STOP; В процессе самозагрузки в ТК-ЗУ, начиная с адреса 2 определяемой параметром CT-ID таблицы-конфигуратора, сначала полностью записывается программа Загр-ПК. Начальная последовательность этой программы Загр-ПК (BEGIN 0) по адресу 1 не записывается. На этой позиции расположена команда ожидания самозагрузкиWAITFORBOOT, которая устанавливается автоматически по команде сброса RESET. Лишь после записи программы Загр-ПК в ТК-ЗУ в полном объеме и по достижении корневой таблицейконфигуратором следующей команды самозагрузкиBOOT CT-ID команда останова STOP будет записана в ТК-ЗУ в конец программы Загр-ПК, а команда WAITFORBOOT будет перезаписана командой BEGIN 0. После этого КАТК начинает выполнять программу Загр-ПК. Загрузка программы конфигурирования Помимо программы Загр-ПК существуют три следующих основных механизма вызова программы конфигурирования: 1. выполнение команды загрузки идентификатора LOAD ID управляющим конечным автоматом (КАТК); 18 2. выполнение команды EXECUTE ID управляющим конечным автоматом в случае,когда программа конфигурирования с соответствующим идентификатором отсутствует в ТКЗУ; 3. появление триггерного сигнала, который с помощью просмотровой таблицы ПТ 1 преобразуется (транслируется) в идентификатор ID,соответствующая ПК которого отсутствует в ТК-ЗУ. Процесс во всех трех случаях выполняется следующим образом: Идентификатор затребованной ПК поступает в просмотровую таблицу ПТ 2 в виде адреса. Просмотровая таблица ПТ 2 проверяет наличие достоверного адреса в ТК-ЗУ. В случае его отсутствия, т.е. если в таблице ПТ 2 значение идентификатора ID равно 0, то в КАТК отсылается команда загрузки идентификатора LOADID. После этого КАТК запрашивает соответствующую идентификатору ID программу конфигурирования в ТК более высокого иерархического уровня. Этот запрос поступает в ТК более высокого уровня в виде триггерного сигнала,который соответствующим образом обрабатывается ею. Указанная ТК более высокого уровня передает запрошенную ПК в пославшую запрос ТК. Данные, начиная с адреса, на который указывает указатель свободной ячейки памяти(УСП), записываются в ТК-ЗУ, при этом значение указателя УСП увеличивается на единицу после каждого обращения для выполнения операции записи. По достижении указателем УСП верхней границы ТК-ЗУ вызывается сборщик мусора(СМ) для удаления из ТК-ЗУ самой нижней ПК и для уплотнения информации в ТК-ЗУ. УСП при этом обновляется. Этот процесс продолжается до тех пор, пока загружаемая ПК не будет полностью загружена в ТК-ЗУ. Таблица переходов в конфигурационной памяти В связанной с корневой ТК конфигурационной памяти содержатся все программы конфигурирования, которые необходимо загружать для соответствующего приложения (прикладной программы). Во внешней конфигурационной памяти (ВКП) по определенному адресу самозагрузки находится оператор перехода к ПК самозагрузки. В еще одной определенной области памяти (ПТ-ВКП) произвольно выбираемой, но фиксированной в пределах приложения длины находятся операторы перехода к отдельным ПК. При этом идентификатор ID соответствующей программы конфигурирования используется в качестве адреса во внешней конфигурационной памяти, в котором записан начальный адрес соответствующей программы конфигурирования, что позволяет косвенно адресовать программы конфигурирования: 19 Изменение ПК в конфигурационной памяти Ниже рассмотрен случай, когда необходимо изменить программу ПК с идентификаторомID A. Сначала хост-машина записывает новую ПК для идентификатора ID A в свободное место в ВКП. Идентификатор ID А вместе с новым адресом ПК в конфигурационной памяти записывается устройством более высокого уровня (хост-машиной) в предусмотренный для этого регистр корневой ТК. Корневая ТК посылает всем ТК более низких уровней команду удаления REMOVE А. После этого все ТК по достижении команды останова STOP или во время нерабочих (холостых) циклов, т.е. когда не выполняется ни одна ПК, относящаяся к этому идентификатору программа конфигурирования удаляется из ТК-ЗУ и в просмотровую таблицу ПТ 2 для адреса А вносится маркер"нетадреса", означающий, что для идентификатора ID А в просмотровой таблице ПТ 2 нет достоверной адресной записи. При следующем запросе идентификатора ID А отсутствие адресной записи ("нетадреса") на месте адреса А в ПТ 2 указывает на то, что каждая таблицаконфигуратор вновь должна запросить ПК А в ВКТ. Память типа FILMO ПК включает в основном команду PUSH,по которой новые конфигурационные слова записываются по определенному адресу. Если запись конфигурационного слова типа КС невозможна, поскольку адресуемый конфигурируемый элемент (КЭЛ) не готов принять новую программу конфигурирования (сигнал "НЕПРИНЯТИЕ"), то конфигурационное слово вместо адресуемого конфигурируемого элемента(КЭЛ) записывается в буферную память, называемую в дальнейшем памятью типа FILMO. Последующие команды выполняются обычным образом, пока снова не появится конфигурационное слово, которое невозможно записать в конфигурируемый элемент и которое в этом случае записывается в память типа FILMO. Если невозможна запись конфигурационного слова типа КСР, поскольку адресуемый конфигурируемый элемент (КЭЛ) не готов принять новую программу конфигурирования (сигнал "НЕПРИНЯТИЕ"), то конфигурационное слово вместо адресуемого конфигурируемого элемента (КЭЛ) записывается в память, обозначенную в дальнейшем памятью типа FILMО. Все последующие команды до конца программы конфигурирования записываются не в конфигурируемый элемент, а непосредственно в память типа FILMO. Прогон всего содержимого памяти типаFILMO осуществляется в холостые циклы и перед каждым выполнением новой ПК. При этом,начиная с хранящегося дольше всех слова данных, каждое считанное из памяти типа FILMO слово пересылается в соответствии с известной 20 очередью типа FIFO своему адресуемому элементу, при этом указанный адресуемый элемент должен быть готов принять это конфигурационное слово. В том случае, когда эти слова данных можно записывать с самого начала (т.е. когда адресуемые конфигурируемые элементы (КЭЛ) готовы их принимать), запись из памяти типаFILMO удаляется по типу очереди FIFO. Если конфигурационное слово не может быть записано, оно пропускается и не удаляется из памяти типа FILMO. В отличие от очереди типа FIFO считывание данных после пропущенного конфигурационного слова продолжается. Те конфигурационные слова, которые могут быть записаны после пропущенного конфигурационного слова, в зависимости от исполнения памяти типа FILMO: 1. либо маркируются как записанные и не удаляются из этой памяти типа FILMO, при этом конфигурационные слова, которые маркированы как записанные, при последующих прогонах больше не считываются, соответственно тут же удаляются в случае, если перед ними больше не имеется пропущенное конфигурационное слово,2. либо удаляются из памяти типа FILMO,причем конфигурационные слова перед удаленным конфигурационным словом и за ним сохраняются, при этом для удаления необходимо переместить последующие слова вперед (вверх) или предыдущие слова назад (вниз), причем порядок расположения конфигурационных слов непременно сохраняется. При выполнении новой ПК конфигурационные слова (КС), которые не смогли быть записаны из ТК-ЗУ в адресуемые элементыFILMO, т.е. эти КС записываются в конец (исходя из направления считывания) этой памяти типа FILMO. В случае заполнения памяти типаFILMO, т.е. при отсутствии свободного места для записи конфигурационных слов, выполнение ПК приостанавливается. Прогон содержимого памяти типа FILMO выполняется до тех пор, пока не сможет быть записано достаточное количество конфигурационных слов и пока не освободится соответствующее количество мест под новые записи, после чего может быть продолжено выполнение ПК. Память типа FILMO представляет собой память, аналогичную памяти типа FIFO, прогон содержимого которой всегда осуществляется линейно, начиная с самой старой записи, однако в отличие от памяти обратного магазинного типа, т.е. памяти типа FIFO, в данном случае предусмотрен пропуск записей ("First In, LinearMultiple Out", "первым пришел - многократно линейно обслужен"). Назначение конечного автомата, управляющего таблицами-конфигураторами (КАТК) Такой конечный автомат (КАТК) управляет таблицами-конфигураторами. При этом он 21 выполняет команды программ конфигурирования и срабатывает в ответ на поступающие триггерные сигналы. Он осуществляет управление памятью типа FILMO, в частности осуществляет считывание данных из этой памяти при холостых циклах и перед выполнением программы конфигурирования. Он срабатывает на генерируемые ПТ-структурой сигналы "недопустимый TRG" (недопустимые триггерные сигналы, см. фиг. 1, 0102) и "загрузка ID"ID" генерируется при наличии в ПТ 2 записи"кэш-промах" (0105) или в случае, когда ПК/ПККА, на которую ссылается идентификатор, маркирована как удаленная (0107). Конечный автомат срабатывает на управляющие сигналы от ТК более высокого уровня. Пример обработки команд представлен на фиг. 2-7. Управляющие сигналы, направляемые в ТК более высокого уровня:- недопустимый TRG (0102): указывает таблице-конфигуратору на появление неизвестного триггерного сигнала TRG;- загрузка ID (0105/0107): посылает в ТК более высокого уровня запрос на загрузку идентификатора ID;- триггерный сигнал TRG СТ (0108): посылает триггерный сигнал TRG в находящуюся на более высоком уровне или в адресуемую ТК СТ. Управляющие сигналы, поступающие от ТК более высокого уровня:- удаление ID (см. фиг. 15, 1513): требует от ТК удалить идентификатор ID;- записьвУСП data (см. фиг. 2, 0205): посылает данные data в ТК. Данные записываются в конец распределенной памяти. Функция сборщика мусора (СМ) У памяти ТК-ЗУ имеются две следующие проблемы. 1. Если команда выполнения EXECUTE или загрузки LOAD, соответственно триггерный сигнал ссылается на идентификатор, ПК которого отсутствует в ТК-ЗУ, то эту ПК приходится загружать дополнительно. Однако при определенных условиях в ТК-ЗУ может не хватать места для загрузки запрошенной ПК. 2. При поступлении команды удаленияREMOVE ID соответствующую ПК необходимо удалить из ТК-ЗУ. При этом, если только эта программа не расположена в конце ТК-ЗУ,образуется пропуск. При загрузке новой ПК этот пропуск при определенных условиях не заполняется снова полностью или же оказывается слишком маленьким для новой ПК. Такая ситуация приводит к фрагментации ТК-ЗУ. Задача сборщика мусора состоит в том,чтобы удалять программы конфигурирования из ТК-ЗУ, освобождая место под новые записи, и после удаления записей таким образом перерас 003407 22 пределять ТК-ЗУ, чтобы все оставшиеся ПК располагались в памяти последовательно единым блоком, а освободившиеся блоки памяти были расположены в виде единого блока в конце ТК-ЗУ. Тем самым достигается оптимальная дозагрузка новых ПК без потери места в памяти. Обработка триггерных сигналов Каждая ТК имеет вывод для нескольких относящихся к ее соответствующему иерархическому уровню триггерных сигналов, коммутируемых на одну общую шину. Поступающие триггерные сигналы обрабатываются с помощью маски, которая пропускает для дальнейшей передачи только разрешенные триггерные сигналы. Разрешенные триггерные сигналы поступают в синхронизированном по тактовой частоте режиме на временное хранение в регистр выборок (дискретных значений). Арбитр выбирает один из сохраненных в этом регистре триггерных сигналов и преобразует этот сигнал в двоичный вектор. Выбранный триггерный сигнал удаляется из регистра выборок. Двоичный вектор поступает далее в первую просмотровую таблицу (ПТ 1), которая переводит (транслирует) этот вектор в идентификатор (ID) вызываемой программы конфигурирования (ПК). Вторая просмотровая таблица (ПТ 2) транслирует этот идентификатор в адрес программы конфигурирования в памяти ТК (ТК-ЗУ). Управляющий ТК конечный автомат (КАТК) устанавливает свой указатель программы (УПР) на этот адрес и начинает выполнение программы конфигурирования. Необходимым условием для этого является наличие для каждого разрешенного триггерного сигнала, прошедшего через маску, соответствующей записи в ПТ 1. При ее отсутствии далее в КАТК выдается сигнал ошибки, соответственно сообщение об ошибке (недопустимый триггерный сигнал), при этом каждый безадресный идентификатор рассматривается как отсутствующая запись (ID ="нетадреса") . Маркер "нетадреса" является маркером, выбираемым в зависимости от варианта реализации системы. При отсутствии соответствующей записи в ПТ 2, т.е. в случае, если программа конфигурирования, на которую ссылается идентификатор,не находится в ТК-ЗУ, в КАТК выдается запрос на загрузку (сигнал загрузки ID). Посылка триггерных сигналов в ТК более высоких уровней Для взаимодействия с ТК более высокого уровня, наряду с уже описанным интерфейсом,который служит для загрузки ПК, предусмотрен еще один интерфейс, который служит для обмена произвольно задаваемыми командами, но в первую очередь векторами триггерных сигналов. При этом ТК посылает:- либо команду широковещания (BROADCAST) всем другим ТК, 23- либо команду адресации (ADDRESSED) любой адресуемой ТК. Команда "вектор триггерного сигнала" представляет собой двоичное значение, которое ссылается на запись в просмотровой таблице ПТ 2 таблицы-конфигуратора, являющейся получателем данных. Передача векторов триггерных сигналов необходима, например, для запуска ПК в еще одной ТК в рамках ПККА, например, с целью управления внешним (периферийным) устройством или памятью. Для дальнейшей передачи векторов триггерных сигналов в ТК более высокого уровня существуют два следующих механизма: 1. В ПТ 1 добавляется 1 бит, указывающий,рассматривается ли содержимое памяти в качестве идентификатора программы конфигурирования или в качестве двоичного значения триггерного сигнала. Если имеет место триггерный сигнал, то содержащиеся в ПТ 1 данные передаются в виде триггерного сигнала непосредственно в ТК более высокого уровня. 2. Команда TRIGGER может указывать двоичное значение триггерного сигнала, непосредственно передаваемого в ТК более высокого уровня. (В другом варианте вместо такого двоичного значения триггерного сигнала можно также передавать непосредственно идентификаторы). Для запуска векторами триггерных сигналов какой-либо ПК не в своей ТК необходимо обеспечить синхронизацию с целью исключить взаимоблокировку. При такой синхронизации должно учитываться, что только одна ПК в определенной группе ТК запускает другие ПК в других ТК этой группы. Одновременный запуск нескольких ПК может привести к взаимоблокировке таблиц-конфигураторов аналогично уже описанной взаимоблокировке на уровне КЭЛ. Основной принцип подобного метода синхронизации состоит в следующем: ПК имеет следующую структуру: Команда GETCTS в пределах программы конфигурирования таблицы-конфигуратора (ИНИЦИАТОРА) указывает на то, что в последующем сигналы будут пересылаться в другие ТК (АДРЕСАТЫ). По команде TRIGGER ID, СТ идентификатор запускаемой ПК передается в ТК с однозначным указанием идентификатора соответствующей таблицы-конфигуратора (ID CT). При этом такой триггерный сигнал сначала передается в ТК непосредственно более высокого уровня, которая в соответствии с указанием СТ снова пересы 003407 24 лает триггерный сигнал в подчиненную ТК в пределах своего ТК-пространства или направляет его в ТК более высокого по отношению к ней уровня (см. раздел "Иерархии таблиц-конфигураторов"). При получении команды АДРЕСАТ квитирует ее получение. При прохождении команды через ТК значение показателя приоритета этой команды увеличивается каждый раз на единицу. При "столкновении" в пределах одной ТК запроса на дальнейшую передачу команды с другим запросом команда с более низким приоритетом отклоняется. В результате а) внутри оверлейной системы обеспечивается прохождение в определенный момент времени лишь одной команды и, следовательно,запуск лишь одной ПК, что обеспечивает требуемое отсутствие взаимоблокировки,б) обеспечивается отклонение прошедшей на данный момент наименьший путь команды,что может повысить эффективность системы. После отклонения определенной команды все предыдущие команды в рамках последовательности команд GETCTS/LOOSECTS также отклоняются, т.е. ИНИЦИАТОР посылает всем АДРЕСАТАМ сигнал отмены DISMISS, и выполнение программы конфигурирования по истечении некоторого времени ожидания запускается вновь по команде GETCTS. Квитирующие сигналы для всех триггерных сигналов в пределах последовательности команд GETCTSLOOSECTS передаются в инициирующую ТК. При поступлении каждого квитирующего сигнала происходит переход к обработке следующей команды. По достижении команды LOOSECTS ИНИЦИАТОР посылает всем АДРЕСАТАМ сигнал перехода GO. По этому сигналу ТКадресаты запускают выполнение ПК с переданными с помощью триггерных сигналов идентификаторами. АДРЕСАТЫ после поступления триггерного сигнала переходят в состояние, в котором они ожидают поступления сигнала перехода GO или сигнала отмены DISMISS. Учитывая более эффективные возможности реализации, ниже рассмотрен несколько модифицированный подход, состоящий в следующем. Между ТК одной группы одного иерархического уровня расположена шинная система(меж-ТК-шина). Эта шинная система соединяет все ТК указанной группы и ТК уровня, расположенного непосредственно над этой группой. По команде GETBUS, которая функционально аналогична команде GETCTS, арбитраж шинной системы осуществляется одной ТК. Команды по шинной системе передаются далее в ТК этой же группы. Если адресуемая по соответствующему номеру ТК (СТ) не находится в этой группе, то ТК более высокого уровня авто 25 матически осуществляет арбитраж своей шины более высокого уровня, и команда проходит дальше. Подвергаемые арбитражу шины остаются подчиненными ИНИЦИАТОРУ и поэтому заблокированными для всех других ТК до тех пор, пока либо не поступит команда отклонения, либо по команде LOOSEBUS не освободится доступ к шине. Команда LOOSEBUS сравнима с командой LOOSECTS. Перед выполнением команды LOOSEBUS во все задействованные ТК посылается сигнал перехода GO. Посылка этого сигнала осуществляется либо по команде LOOSEBUS, либо по специальной предваряющей ее команде. Команды, прежде всего триггерные сигналы, также обрабатываются в соответствии с уже описанным выше основным способом. Запрос отклоняется в том случае, когда арбитраж шинной системы невозможен. При арбитраже все ТК одного уровня имеют соответственно одинаковые приоритеты,а ТК более высокого уровня имеет более высокий приоритет. Команда при ее передаче по меж-ТК-шине остается действующей до тех пор, пока адресуемая ТК либо не подтвердит ее прием (сигнал"ПРИНЯТИЕ"), либо не отклонит ее (сигнал"НЕПРИНЯТИЕ"). Работающий по принципу приоритетности арбитр кругового обслуживания Работающий по принципу приоритетности арбитр кругового обслуживания (арбитр одноциклового кругового обслуживания АРБ-ОЦКО(англ. "Single Cycle Round Robin Arbiter синхронизируется тактовыми импульсами, т.е. он в зависимости от варианта его исполнения выдает результат по каждому положительному или по каждому отрицательному фронту тактового импульса (ФТ 1). На поступающие входные сигналы (АРБ-ВХ) накладывается маска (АРБМАСКА), которой управляет сам арбитр в соответствии с описанным ниже способом. Выходные сигналы после наложения маски поступают в известный из уровня техники арбитр разрешения конфликтов на основе приоритетов (АРБПРИО). Арбитр синхронно с тактовой частотой выдает на каждом соответствующем фронте тактового импульса (ФТ 1) определенный результат (АРБ-ВЫХ), т.е. двоичное значение сигнала с наивысшим приоритетом согласно наложенной маске (АРБ-МАСКА). Этому результату соответствует сигнал ("ДОСТОВЕРНОСТЬ"), который указывает на достоверность или недостоверность соответствующего двоичного значения. В зависимости от конкретного исполнения арбитра разрешения конфликтов на основе приоритетов при наличии сигнала 0 и при отсутствии сигнала можно генерировать одно и то же двоичное значение: в этом случае сигнал "ДОСТОВЕРНОСТЬ" указывает, что результат является недостоверным, поскольку сигнал отсутствует. Этот сигнал 26 1. выдается как полученный арбитром результат и 2. коммутируется на дешифратор, который дешифрует двоичные значения способом, проиллюстрированным в приведенной ниже таблице на примере трехразрядного двоичного числа(метод кодирования, основанный на таком принципе, можно адаптировать к двоичному числу любой разрядности): Двоичное число Дешифрованное состояние сброса и в случае недостоверности двоичного числа С дешифратором функционально связан регистр (АРБ-РЕГ), в который переписываются дешифрованный дешифратором значения (АРБДЕШ) по тому фронту тактового импульса(ФТ 2), который является инверсией фронта ФТ 1. Дешифрованное значение АРБ-ДЕШ подается обратно на операцию наложения маски(АРБ-МАСКА), разрешая передачу отдельных входных сигналов (АРБ-ВХ). Арбитр выполняет операции в следующем порядке: 1. После поступления команды сброса RESET на все входные сигналы АРБ-ВХ накладывается маска АРБ-МАСКА, поскольку дешифратор АРБ-ДЕШ "деблокирует" все сигналы. 2. Установленный входной сигнал АРБ-ВХ с наивысшим приоритетом (например, в приведенной выше таблице сигнал 7 (в двоичном представлении 111) обладает наивысшим приоритетом, а сигнал 0 (в двоичном представлении 000) обладает самым низким приоритетом) выдается в виде двоичного числа. 3. Дешифрованное значение АРБ-ДЕШ блокирует этот сигнал, а также все другие, возможно обладающие еще более высоким приоритетом, но не установленные входные сигналы. 4. Выполнение последующих шагов 5 и 6 повторяется до тех пор, пока процесс не дойдет до сигнала 0 (в двоичном представлении 000) или пока после наложения маски АРБ-МАСКА не останется больше никаких сигналов. После этого дешифрованное значение АРБ-ДЕШ (см. таблицу дешифрования) снова разрешает наложение маски АРБ-МАСКА на все сигналы в виде дешифрованных значений АРБ-ДЕШ, и процесс начинается с шага 2. 5. Следующий установленный входной сигнал АРБ-ВХ, обладающий теперь наивысшим приоритетом, выдается в виде двоичного числа. 27 6. Дешифрованное значение АРБ-ДЕШ блокирует этот сигнал, а также все другие, возможно обладающие еще более высоким приоритетом, но не установленные входные сигналы(дальнейшее продолжение с шага 4). Тем самым обеспечивается равноправная обработка всех входных сигналов, а также дешифрование и выдача в виде двоичного числа(АРБ-ВЫХ) одного из входных сигналов (АРБВХ) с каждым тактом. У регистра АРБ-РЕГ может быть предусмотрен разрешающий вход (EN), допускающий изменение содержимого этого регистра по фронту ФТ 2 только при поступлении соответствующего сигнала. Благодаря этому двоичный вектор выдается не на каждом такте, а в зависимости от деблокирования по соответствующему сигналу, поступающему на разрешающий вход,и по фронту ФТ 2. Этот разрешающий вход необходим для синхронизации в тех случаях, когда последующая схема не в состоянии обработать данные за один такт, а ей на такую обработку требуется несколько тактов, и лишь после этого она может принять следующий двоичный вектор. При определенных условиях может оказаться целесообразным, чтобы арбитр рассматривал ряд сигналов как обладающие более высоким приоритетом, тогда как большинство сигналов будут иметь одинаковый приоритет. Такой подход необходим, например, в рассмотренном выше способе дальнейшей передачи сигналов между ТК. Для присвоения сигналу более высокого приоритета обладающий наивысшим приоритетом порт арбитра разрешения конфликтов на основе приоритетов АРБ-ПРИО не маскируется, т.е. этот порт подсоединяется в обход маски (АРБ-МАСКА). Тем самым обеспечивается приоритетная обработка сигнала. Организация таблицы-конфигуратора на базе микроконтроллера В отличие от рассмотренных выше вариантов ТК также может быть реализована на базе микроконтроллера. Очевидно, что такие основные функции,как управление с помощью триггерных сигналов, просмотровые таблицы ПТ 1 и ПТ 2, а также связь между таблицами-конфигураторами и запись конфигурационных слов в КЭЛ могут без особых проблем выполняться и микроконтроллером. При этом лишь с организацией эффективно работающей памяти типа FILMО связана определенная проблема, которая проявляется прежде всего в достижимом быстродействии. Поэтому структура памяти типа FILMO рассматривается отдельно более подробно. Структура памяти типа FILMO Память типа FILMO выполнена не в виде отдельного запоминающего устройства, а обычная память программ расширена с добавлением к ней функций памяти типа FILMO. С этой целью каждому КС присваивается дополнительный 28 бит (FILMO-БИТ), который указывает на то, было ли соответствующее КС записано в КЭЛ. Если битFILMO-БИТ установлен, то соответствующее КС не выполняется. При записи КС в память этотFILMO-БИТ сбрасывается в исходное значение. Все ПК в одной ТК связаны друг с другом связанным списком (FILMO-СПИСОК) в той последовательности, в какой они вызывались триггерным сигналом или командой загрузки LOAD ID. ПК остается в этом FILMO-СПИСКЕ до ее полного выполнения, после чего она удаляется из списка. Обход связанного FILMO-СПИСКА происходит в соответствии с очередью FILMO, и поэтому указанный список представляет собой непосредственную замену памяти типа FILMO. (При этом следует отметить, что, в отличие от первоначальной очереди типа FILMO, ни одна из ПК не может присутствовать в этом списке дважды. При вызове еще стоящей в FILMO-СПИСКЕ ПК ее выполнение приходится откладывать до тех пор, пока она не будет удалена из этого FILMO-СПИСКА.) Ячейка памяти типа FILMO имеет следующую структуру: Команды Микроконтроллер поддерживает следующие команды, которые непосредственно влияют на содержимое памяти типа FILMO:PUSHSF запись КС в КЭЛ и установление FILMO-БИТА в случае принятия этого КС (сигнал "ПРИНЯТИЕ");(обратный переход) из подпрограммы в случае, если КЭЛ не принял (сигнал"НЕПРИНЯТИЕ") это КС. Эта команда используется тогда, когда следующие КС в ПК зависят от конфигурации этого КС (сигнал"ПРИНЯТИЕ"); в результате возврата из ПК их использование для конфигурирования задерживается до успешного выполнения (сигнал "ПРИНЯТИЕ") командыPUSHNR запись КС в КЭЛ осуществляется только в том случае,если перед этим в ПК не было ни одного сигнала "НЕПРИНЯТИЕ". Аналогично команде PUSHRET эта команда служит для управления зависимостями в конфигурационной последовательности конфигурационных слов. 29 Сборщик мусора В соответствии с приведенным выше описанием для удаления ненужных более ПК используется сборщик мусора (CM). CM начинает работать либо в том случае, когда в памяти не хватает места для загрузки новой ПК и необходимо удалить идентификаторы, либо при поступлении явного указания на удаление ПК по команде удаления REMOVE с указанием идентификатора удаляемой ПК. С целью в максимально возможной степени упростить работу СМ все ПК объединены друг с другом в связанный список. СМ проходит по всему списку и удаляет ненужные более ПК путем перезаписи на их место других ПК и соответствующего согласования записей в списке. При этом все остающиеся ПК сдвигаются в памяти таким образом, чтобы закрыть соответствующие пропуски, образующиеся в памяти в результате удаления ПК, с образованием в конце памяти более значительной взаимосвязанной свободной области. Структура программы конфигурирования (ПК) Возможная основная структура программы конфигурирования представлена ниже в таблице:ret (возврат); В начале ПК с пропуском следующего заголовка осуществляется переход к запуску последовательностей команд. За этим следует двукратно связанный список для СМ, в который объединены все ПК. Параметр "длина" указывает длину ПК. Эта информация может использоваться для известных из уровня техники команд перемещения блока BLOCKMOVE, применяемых при необходимости переместить ПК в памяти (удаление ненужных данных, загрузка и т.д.). В последующий двукратно связанный список организована память типа FILMO, при этом в нем взаимно связаны только те ПК, которые содержат такие конфигурационные слова, которые еще не были записаны в конфигурируемые элементы (КЭЛ). Затем следует статистика по кэшированию, в которой содержится, например,информация о количестве вызовов программ конфигурирования (при каждом вызове соответствующее значение увеличивается на единицу),о длительности их хранения (измеряемой по количеству циклов работы СМ при просмотре программ конфигурирования, при этом после 30 каждого такого цикла работы СМ соответствующее значение увеличивается на единицу) и т.д. Эти статистические данные СМ может анализировать, например, при необходимости удалить определенную ПК по причине недостатка места в памяти. Подобные статистические данные обеспечивают достижение значительных преимуществ при кэшировании. Так, например,в зависимости от используемого алгоритма кэширования можно в соответствии с требованиями прикладной программы запрограммировать микроконтроллер таким образом, чтобы при необходимости освободить место в памяти удалять из кэша: 1. самую старую/самую новую ПК,2. наименьшую/наибольшую ПК (см. параметр "длина"),3. наиболее часто/наиболее редко вызываемую ПК. При этом можно, как очевидно,хранить и другую целесообразную информацию о состоянии. Подобное выборочное кэширование при использовании известных на сегодняшний день кэшей невозможно. Так, в частности,перепрограммируемые алгоритмы кэширования не поддерживаются известными на сегодняшний день кэшами. В конце следует ПКстатистика, в которой содержится, например,информация о количестве еще не использованных (сигнал "НЕПРИНЯТИЕ") или уже использованных (сигнал "ПРИНЯТИЕ") в процессе конфигурирования КС. Одновременно можно хранить в памяти адрес первого КС, еще подлежащего использованию при конфигурировании. Преимущество этого состоит в возможности перейти при прогоне содержимого памяти типаFILMО непосредственно к этому КС без необходимости прогонять всю ПК, что позволяет значительно повысить быстродействие. В заключение, в отношении ПК следует отметить, что связанные списки предпочтительно строятся на основе ввода предыдущих/последующих идентификаторов, чтобы тем самым СМ мог без проблем перемещать абсолютные адреса ячеек памяти. В ПК следует использовать вместо абсолютных переходов только относительные переходы во избежание проблем с загрузкой программы конфигурирования и с циклами работы СМ, поскольку абсолютные адреса при этом изменяются. Следует еще отметить, что в соответствии с рассмотренным выше принципом и при использовании микроконтроллера перед выполнением новой ПК (на основании триггерного сигнала или команды, источником которых в том числе может служить другая ТК) происходит прогон содержимого памяти типа FILMO, а перед прогоном содержимого памяти типа FILMO информация о состоянии КЭЛ (допускающем или не допускающем реконфигурирование) сохраняется в виде резервной копии. 31 Чертежи Ниже на примере одного из вариантов выполнения более подробно рассмотрен принцип управления конфигурационными данными в соответствии с вышеописанным способом со ссылкой на прилагаемые чертежи, на которых показано на фиг. 1 - схема, иллюстрирующая процесс генерации адресов в просмотровых таблицах; на фиг. 2-7 - схемы, иллюстрирующие процесс выполнения (отработки) команд и работу конечных автоматов; на фиг. 8 - структура АРБ-ОЦКО; на фиг. 9 - структура ПТ 1 и ПТ 2; на фиг. 10 - структура арифметического устройства указателей и памяти ТК-ЗУ; на фиг. 11 - структура памяти типа FILMO; на фиг. 12 а - схема иерархической структуры расположения таблиц-конфигураторов; на фиг. 12 б - схема передачи триггерного сигнала между таблицами-конфигураторами; на фиг. 12 в, г - схемы, иллюстрирующие процессы передачи триггерного сигнала между таблицами-конфигураторами; на фиг. 13 - схема, иллюстрирующая процесс вызова одной ПК несколькими ПККА; на фиг. 14 - структура ПТ 1 корневой ТК; на фиг. 15 - схема, иллюстрирующая осуществляемый хост-машиной процесс управления корневой ТК; на фиг. 16 - схема, поясняющая концепцию ПТ и ВКТ; на фиг. 17 - схема, иллюстрирующая процесс управления ТК среднего иерархического уровня, соответственно корневой ТК; на фиг. 18 - схема, поясняющая проблему взаимоблокировки при конфигурированиИ ДВУХМЕРНОЙ матрицы (см. выше); на фиг. 19 - схема, поясняющая концепцию памяти типа FILMO; на фиг. 20 - схемы, поясняющие основной принцип связи между таблицами-конфигураторами (меж-ТК-связи); на фиг. 21 - пример реализации меж-ТКсвязи с использованием команды GETCTS; на фиг. 22 - пример реализации меж-ТКсвязи с использованием команды GETBUS; на фиг. 23 - структура меж-ТК-шины; на фиг. 24 - схема, поясняющая принцип адресации в пределах иерархий таблицконфигураторов; на фиг. 25 - двуХмерная древовидная структура таблицы-конфигуратора; на фиг. 26 - схема, поясняющая процесс создания связанного списка для СМ; на фиг. 27 - схема, поясняющая процесс создания связанного списка для памяти типаFILMO; на фиг. 28 - схема, поясняющая принцип работы памяти типа FILMO в программе конфигурирования, и 32 на фиг. 29 - схема, иллюстрирующая процесс сохранения состояний перед выполнением ПК или прогоном содержимого памяти типаFILMO. Описание чертежей На фиг. 1 показана схема, иллюстрирующая процесс генерации адресов ТК-ЗУ в пределах ТК. При этом поступающий двоичный вектор (0101) триггерного сигнала транслируется в ПТ 1 в достоверный идентификатор ID программы конфигурирования (ПК) или программы конфигурирования с косвенной адресацией(ПККА). При отсутствии достоверного идентификатора генерируется сигнал "недопустимый триггерный сигнал" (0102), который указывает на то, что поступивший триггерный сигнал не известен в ПТ 1. Этот сигнал может быть передан далее в качестве сообщения об ошибке в ТК более высокого уровня или проигнорирован. Информация, полученная в результате трансляции "триггерного сигнала" в "идентификатор",вносится в ПТ 1 с помощью команды ссылкиREFERENCE. Достоверный идентификатор (0103) передается далее в ПТ 2. Идентификаторы, указываемые внутри команд, т.е. операндом (0104),поступают непосредственно в ПТ 2. В ПТ 2 поступивший идентификатор транслируется в адрес ПК/ПККА в памяти ТК-ЗУ. Если ПК/ПККА не хранится в ТК-ЗУ (отсутствует в кэше), то генерируется сигнал "отсутствие" (0105). Если транслированный адрес ПК/ПККА помечен маркером "нетадреса", свидетельствующим об отсутствии адреса, то выдается сигнал"нетзаписи" указывают на то, что трансляция во внутренний адрес ТК-ЗУ невозможна. На основании этого сигнала загрузочный конечный автомат (ЗКА) подгружает ПК/ПККА с соответствующим идентификатором из ТК следующего более высокого уровня. При наличии же достоверного адреса он поступает далее в арифметическое устройство указателей генератора адресов (0106). В ПТ 1 поступивший двоичный вектор триггерного сигнала транслируется либо в идентификатор,либо в следующий вектор триггерного сигнала,причем в этом случае выдается вектор триггерного сигнала (0108). На фиг. 2 показана схема, иллюстрирующая процесс загрузки ПК/ПККА. Сначала идентификатор (0201) загружаемой ПК/ПККА пересылается в ТК следующего более высокого уровня. После этого в то место ПТ 2, куда должен быть записан затребованный идентификатор, вносится значение указателя свободной ячейки памяти (УСП). Этот УСП указывает на место записи, находящееся в ТК-ЗУ за записью,которая является последней из использованных для ПК/ПККА. Место такой записи является 33 первым местом, в котором сохраняется загружаемая ПК/ПККА. Конечный автомат ожидает поступления слова данных от ТК следующего более высокого уровня. Как только такое слово поступит, оно записывается в место, на которое ссылается УСП. При этом значение УСП увеличивается на единицу. Если УСП указывает на место записи за концом записей в ТК-ЗУ, то для освобождения места из ТК-ЗУ удаляется первая запись(0202), что сопровождается обновлением счетчика УСП. Если из ТК более высокого уровня в качестве слова данных была передана команда останова STOP, то процесс загрузки прерывается (0203), в остальных же случаях он продолжается с переходом в режим ожидания нового слова данных (0204). На фиг. 3 а показана команда маскированияMASK. Операнд этой команды записывается в регистр маски. Регистр маски расположен на входе триггерных сигналов перед ПТ 1 и отфильтровывает путем наложения маски недостоверные триггерные сигналы. Согласно фиг. 3 б по команде триггерного сигнала TRIGGER операнд команды передается в качестве вектора триггерного сигнала в другие ТК. Согласно фиг. 3 в по команде ссылки REFERENCE информация, полученная в результате трансляции триггерного сигнала в соответствующий идентификатор ПК/ПККА, записывается в ПТ 1. На фиг. 4 а показана команда ожиданияWAIT. Операнд этой команды записывается в регистр маски ожидания. Все триггерные сигналы, за исключением ожидаемого (-ых) и поэтому разрешенного (-ых) в регистре маски ожидания сигнала (-ов), игнорируются. Лишь после появления триггерного сигнала происходит возврат к выполнению программы. На фиг. 4 б показана команда помещения в стек PUSH. Конфигурационное слово посылается адресуемому конфигурируемому элементу(КЭЛ). Если КЭЛ не принимает конфигурационного слова, поскольку находится, например, в состоянии, "не допускающем конфигурирование", то конфигурационное слово записывается в память типа FILMO (0401). На фиг. 5 показана схема, иллюстрирующая ход выполнения команды удаления REMOVE. Существуют два следующих варианта ее вызова: 1. Из ТК-ЗУ удаляется первая находящаяся в этой памяти ПК/ПККА. Указателю мусора(УМУ) присваивается адрес 0 в ТК-ЗУ (0501). 2. Из ТК-ЗУ удаляется конкретная ПК/ПККА, определяемая по ее идентификатору. Указателю мусора (УМУ) присваивается первый адрес удаляемой ПК/ПККА в ТК-ЗУ (0502). Указатель перемещения (УПЕ) загружается со значением УМУ. УМУ и УПЕ ссылаются на команду BEGIN ID в ТК-ЗУ даже в том 34 случае, когда первая ПК/ПККА подлежит удалению из ТК-ЗУ. Соответствующий идентификатор маркируется в ПТ 2 как недостоверный. Значение УПЕ увеличивается до тех пор, пока не будет достигнута команда BEGIN ID следующей находящейся в памяти ПК/ПККА или же значение УПЕ равно значению указателя свободных ячеек памяти (УСП), т.е. это означает, что удаляемая ПК/ПККА является последней в ТК-ЗУ (0504). В этом случае УСП загружается со значением УМУ, в результате чего все занятые стираемой ПК/ПККА ячейки памяти маркируются как свободные, и на этом выполнение связанных с командой удаления REMOVE операций завершается. В противном случае (достижение команды начала BEGIN ID (0506 данные, на которые ссылается УПЕ, копируются в ту ячейку памяти,на которую ссылается УМУ. Значения УПЕ и УМУ увеличиваются. Этот процесс продолжается до тех пор, пока УПЕ не достигнет либо конца ТК-ЗУ, либо состояния УСП (0507). Если во время этого процесса УПЕ сошлется на ячейку памяти, в которой находится команда BEGINID, то на место записи соответствующего идентификатора в ПТ 2 перезаписывается указываемое УПЕ значение (0508), чтобы при поиске (просмотре) была выдана правильная ячейка памяти. На фиг. 6 показана схема, поясняющая работу памяти типа FILMO. Эта память типаFILMO имеет три указателя: 1. УЗапис: указатель записи FILMO-ЗУПВ; 2. УЧтен: указатель чтения FILMO-ЗУПВ; 3. УЗаполн: указатель заполнения, представляющий собой указатель состояния, который характеризует "степень заполнения"FILMO-ЗУПВ и предотвращает антипереполнение (выход за нижнюю границу указателя стека), соответственно переполнение (выход за верхнюю границу указателя стека). Одноразрядный регистр начала памяти"НачалоF" указывает, происходит ли текущее обращение в режиме чтения к началу памятиFILMO-ЗУПВ ("истинное" состояние), т.е. действительно ли между указателем чтения и началом записей в FILMO-ЗУПВ нет никаких не удаленных записей, или же указатель чтения находится в середине FILMO-ЗУПВ ("ложное" состояние), т.е. между указателем чтения и началом записей в FILMO-ЗУПВ имеются используемые записи. Кроме того, предусмотрено два регистра для хранения состояний указателей УЧтен и УЗаполн. При появлении первой неудаленной записи необходимо сохранять содержимое обоих этих регистров, поскольку при последующем обращении в режиме чтения считывание необходимо будет начинать с места расположения этой записи. С другой стороны,однако, необходимо продолжать изменять зна 35 чения указателя записи и указателя чтения во время текущего процесса чтения с целью получения следующих адресов, по которым осуществляется чтение, соответственно с целью определения конца FILMO-ЗУПВ. Организация памяти типа FILMO в виде структуры, схожей со структурой памяти типа FIFO, т.е. в виде так называемой кольцевой памяти, не позволяет определять начало и конец памяти на основании адреса 0 или максимального адреса. Из этого исходного состояния осуществляется переход к одному из двух следующих режимов. 1. Режим чтения (0601) Значения указателей УЗаполн и УЧтен сохраняются в регистрах. После этого начинается цикл отработки: Регистр начала памяти "НачалоF" находится в состоянии "истинно". Если значение УЗаполн = 0, то значения указателей УЧтен и УЗаполн снова считываются из их регистров (0602), а конечный автомат возвращается в исходное состояние. В остальных случаях (0603) проверяется,не содержит ли запись в памяти типа FILMO, на которую указывает УЧтен, пустой команды, т.е. не идет ли речь о маркированной как удаленная записи в середине памяти типа FILMO. При принятии отрицательного решения (0604) предпринимается попытка ввести данные этой записи в конфигурируемый элемент (КЭЛ). Если сделать этого не удается (сигнал "НЕПРИНЯТИЕ", 0605), поскольку КЭЛ находится в не допускающем реконфигурацию состоянии, то регистр "НачалоF" устанавливается в состояние "ложно", значение УЗполн уменьшается, а значение УЧтен увеличивается на одну единицу. При этом конечный автомат переходит в начало цикла отработки (0606). Если же данные соответствующей записи удается записать в КЭЛ (0607) или если запись представляет собой пустую команду, то проверяется регистр "НачалоF", который может находиться в двух следующих состояниях: Регистр "НачалоF" находится в состоянии"истинно" ("НачалоF" = = истинно (0608: Перед этим регистром нет никаких неудаленных записей. Значение УЗаполн увеличивается на одну единицу, а значение УЧтен сохраняется в соответствующем регистре с целью зафиксировать новое начало записей в памяти типаFILMO. Значение УЗаполн сохраняется с целью зафиксировать текущий объем данных; значение УЧтен увеличивается на единицу. Регистр "НачалоF" находится в состоянии"ложно" (НачалоF = = ложно (0609: Значение УЗаполн увеличивается на единицу, а текущая запись в FILMO-ЗУПВ перезаписывается пустой командой, т.е. эта запись стирается. Значение УЧтен увеличивается на единицу. В обоих случаях конечный автомат переходит в начало цикла отработки. 2. Режим записи (0610) 36 Сначала степень заполнения FILMO-ЗУПВ путем проверки УЗаполн на максимальное значение. При наличии максимального значения(0611) происходит переход в режим чтения с целью освободить место в памяти. В остальных случаях слово данных записывается в FILMO-ЗУПВ, а значения УЗапис и УЗаполн увеличиваются на единицу. На фиг. 7 показана схема, поясняющая работу главного конечного автомата, который выходит из исходного состояния (холостого режима) при наступлении следующих событий: 1. От ТК более высокого уровня поступает команда удаления REMOVE (0701) Эта команда REMOVE выполняется, и конечный автомат возвращается в холостой режим. 2. Поступает триггерный сигнал для генерирования триггерного сигнала, передаваемого между ТК (0702) Выдается триггерный сигнал, а конечный автомат переходит к команде останова STOP и затем возвращается в холостой режим. 3. Поступает триггерный сигнал для выполнения ПК/ПККА с соответствующим идентификатором ID (0703): Указатель программы (УПР) загружается с адресом, сгенерированным просмотровой таблицей ПТ 2. Если этот адрес недостоверен, т.е. если отсутствует запись для загружаемой ПК/ПККА, то последняя загружается (0704), а значение УПР задается вновь. После этого начинается цикл выполнения,заключающийся в следующем. Значение УПР увеличивается на единицу (при первом выполнении цикла в результате этого пропускается команда BEGIN ID), появление других триггерных сигналов блокируется и запрещается подача сигнала реконфигурирования "Реконфиг". Команды выполняются, и происходит переход в начало цикла (0707). Команда остановаSTOP выполняется отдельно (0705). После этого вновь разрешается подача триггерных сигналов и сигнала реконфигурации "Реконфиг", а конечный автомат переходит в холостой режим. Команда выполнения EXECUTE также выполняется отдельно (0706). Указанный в команде EXECUTE ID идентификатор записывается в регистр идентификаторов (РЕГ-ИД). УПР загружается вновь, и начинается выполнение той ПК/ПККА, на которую указывает идентификатор (0708). После сброса таблицы-конфигуратора в ТК-ЗУ загружается основная конфигурация, и происходит переход к непосредственному выполнению этой основной конфигурации (0709). На фиг. 8 показана структура АРБ-ОЦКО. Подвергаемые арбитрированию сигналы поступают через информационный вход (входные данные) на маскирование в блок (0801), который в соответствии с известной таблицей раз 37 решает, соответственно блокирует последующую передачу взаимосвязанной части сигналов. Обычный известный из уровня техники арбитр(0802) разрешения конфликтов на основе приоритетов подвергает арбитрированию один сигнал из всего количества разрешенных к дальнейшей передаче сигналов и выдает вектор его двоичного значения (выходной двоичный вектор) вместе с меткой "достоверный/недостоверный" (выходная метка достоверности) (что также известно из уровня техники) в качестве выходного сигнала АРБ-ОЦКО. Этот сигнал декодируется в соответствии с известной таблицей (0803) и поступает в регистр для тактовой синхронизации (0804). Указанный регистр переключает маску информационного входа. При этом управление этим регистром осуществляется либо тактовым импульсом, либо следующим сигналом ("разрешение", EN), по которому запрашивается следующий достоверный двоичный вектор. При наличии сигнала сброса или при наличии метки, указывающей на недостоверность (вывод метки достоверности), регистр переключается таким образом, чтобы маска информационного входа пропускала все сигналы. Структура маски показана под позицией 0805. Под позицией 0806 маска изображена еще раз, при этом в соответствии с принципом ОЦКО входные информационные сигналы 01(входные данные 0 входные данные 1) имеют одинаковый приоритет, а входные информационные сигналы mn (входные данные mвходные данные n) имеют более высокий приоритет. На фиг. 9 показана структура просмотровой таблицы (ПТ). Двоичный вектор (входной двоичный вектор) подвергаемого арбитрированию триггерного сигнала поступает на адресный вход ПТ 1 (0901). ПТ 1 транслирует этот двоичный вектор либо в достоверный триггерный сигнал с целью его дальнейшей передачи в другую ТК, либо в достоверный идентификатор. Оба они выдаются по шине (0910). Сигнал, выдаваемый по шине (0911), указывает, идет ли речь о триггерном сигнале или об идентификаторе. Если при поступлении команды ссылкиREFERENCE окажется, что в ПТ 1 не содержится никакой информации по трансляции поступившего двойного вектора, то с помощью записи определенного бита или сравнения с определенным маркером (например с маркером "пустая операция") генерируется сигнал "недопустимый триггерный сигнал" (0914). Триггерный сигнал по обозначенной позицией 0912 шине поступает во внешние ТК, а идентификаторы в последующем обрабатываются мультиплексором (0902). Мультиплексор(0902) коммутируется либо информационным выходом ПТ 1, указывающим достоверный идентификатор, либо регистром идентификатора (0903) ТК на адресный вход ПТ 2 (0904). ПТ 2(0904) имеет структуру, аналогичную кэшу, т.е. состоящая из младших разрядов часть (0906) с информационного выхода мультиплексора(0902) коммутируется на адресный вход ПТ 2(0904), а состоящая из старших разрядов часть(0907) коммутируется на информационный вход ПТ 2 (0904). Данные с информационного выхода ПТ 2 (0904) сравниваются компаратором (0905) со старшими разрядами (0907). Преимущество такого способа заключается в том, что ПТ 2(0904) не должна иметь такой размер, который необходим для трансляции всех идентификаторов, благодаря чему ее размер можно значительно уменьшить. Аналогично обычному кэшу транслируется лишь часть идентификаторов,при этом в ПТ 2 на основании старших разрядов(0907) можно установить, соответствует ли выбранный идентификатор идентификатору, указанному ПТ 1. Такой подход соответствует известному из уровня техники методу кэширования/тегирования. Со вторым информационным входом ПТ 2(0908), который в зависимости от выполняемой команды выдает значение указателя свободных ячеек памяти (УСП, команда загрузки LOAD),значение указателя мусора (УМУ, команда удаления REMOVE) или метку/маркер "недостоверный""нетадреса", команда удаления REMOVE) для сохранения в ПТ 2. Оба указателя ссылаются на ячейки памяти в ТК-ЗУ, а маркер "нетадреса" указывает на отсутствие записи, соответствующей требуемому идентификатору, т.е. указывает на то, что запись была удалена. Вся эта информация определяется на информационном выходе, где компаратор (0909) сравнивает данные с маркером отсутствия адреса "нетадреса". Далее в конечный автомат поступает следующая информация:- двоичный вектор, характеризуемый входной меткой достоверности (ср. фиг. 8);- указание на то, является ли результатом трансляции в ПТ 1 триггерный сигнал или идентификатор (0911, "выходной триггерный сигнал/идентификатор"). Триггерные сигналы по шине (0912) подаются далее в другие ТК, а идентификаторы обрабатываются в собственной ТК и передаются далее в ПТ 2;(0905) и указывающий, хранится ли соответствующий идентификатор в ПТ 2 (0904) ("выходная информация о совпадении/несовпадении");(0909) и определяющий, указывает ли соответствующий идентификатор на достоверный адрес в ТК-ЗУ ("выходной сигнал "нетзаписи"). Адрес, сгенерированный ПТ 2 (0904), поступает далее в ТК-ЗУ ("выходной адрес ТКЗУ"). По команде ссылки REFERENCE в ПТ 1 загружается информация, полученная в результате 39 трансляции поступившего двоичного вектора в триггерный сигнал или в идентификатор. Операнды команды по шине (0913) передаются в ПТ 1. По той же шине происходит загрузка регистра идентификаторов (0909). На фиг. 10 показана структура арифметического устройства указателей, обеспечивающего работу указателя мусора (УМУ), указателя программы (УПР), указателя перемещения(УПЕ) и указателя свободных ячеек памяти(УСП). Каждый указатель состоит из отдельно управляемого загружаемого реверсивного счетчика. В каждый такой счетчик при необходимости может быть загружено показание любого другого счетчика, равно как и значение, выдаваемое ПТ 2 (1007). Компаратор определяет, равно ли: 1. значение УПР значению УПЕ; 2. значение УПЕ значению УСП; 3. значение УСП максимальному положению в ТК-ЗУ. Результаты этого сравнения используются для управления конечными автоматами. Через мультиплексор (1001) значение одного из указателей подается на адресный вход ТК-ЗУ. Кроме того, в ТК-ЗУ через мультиплексор (1002) поступают данные либо из ТК более высокого уровня (1005), либо из регистра(1003). Через мультиплексор (1004) данные либо от ТК более высокого уровня, либо от ТК-ЗУ передаются далее в конечный автомат и в память типа FILMO (1006). При этом при появлении от ТК более высокого уровня команды удаления REMOVE она напрямую через мультиплексор (1004) передается в конечный автомат, а в остальных случаях в конечный автомат поступают команды из ТК-ЗУ. Регистр (1003) служит для сохранения тех команд и их подачи по цепи обратной связи на вход ТК-ЗУ, которые в цикле работы сборщика мусора перемещаются с одного адреса на другой. На фиг. 11 показана структура памяти типаFILMO из ТК-ЗУ (1101) и либо записываются через мультиплексор (1102) в FILMO-ЗУПВ(1103), либо посылаются через мультиплексор(1104) в конфигурируемые элементы (1116). При стирании данных из FILMO-ЗУПВ (1103) в него через мультиплексор (1102) записывается маркер "пустая команда". Наличие этого маркера "пустая команда" на информационном выходе распознается компаратором (1105), и запись в конфигурируемые элементы блокируется. Через мультиплексор (1106) на адресный вход FILMOЗУПВ (1103) подается значение либо указателя записи (1107), либо указателя чтения (1108). Значение указателя чтения сохраняется в регистре (1109), что позволяет вернуться к исходному состоянию (ср. фиг. 6). Значение счетчика степени заполненияFILMO-ЗУПВ (1103) пустым (1112) или полностью заполненным (1113). Назначение мультиплексора (1115) состоит в выборе, посылать ли в конфигурируемые элементы (1116) управляющие сигналы от конечного автомата (из ТК-ЗУ(1101 или от памяти типа FILMO. На фиг. 12 а показана схема иерархической структуры таблиц-конфигураторов. Данные во все ТК поступают от корневой ТК (1201) и из функционально связанной с ней внешней конфигурационной памяти (ВКП, 1204). Для каждого уровня реализации в микросхеме существует одна или несколько ТК. Каждая ТК отвечает за управление своим уровнем и расположенными на более низком уровне ТК. Все ветви дерева необязательно должны иметь одинаковый размер (глубину). Так, например, для управления периферийными устройствами(1202) микросхемы можно предусмотреть меньшее количество уровней, чем для управления рабочими модулями (1203). Пересылка данных происходит по типу древовидной структуры. Каждая ТК работает в качестве кэша для всех расположенных под ней ТК. На фиг. 12 б показана схема, иллюстрирующая поток триггерных сигналов между ТК. Если поток данных имеет древовидную структуру, то структура потока триггерных сигналов однозначно не определена. Любая ТК может послать триггерный сигнал любой другой ТК. Обычно обмен триггерными сигналами происходит только в направлении от листьев (1203) к корневой ТК (1201). Однако при определенных условиях передача этих сигналов может происходить и в обратном направлении. На фиг. 12 в показан вектор триггерного сигнала, передаваемого в широковещательном режиме от ТК (1205) всем другим ТК. На фиг. 12 г показан вектор триггерного сигнала, который ТК (1206) посылает во все ТК,расположенные на более высоком уровне. ТК(1207) посылает вектор триггерного сигнала во все ТК, расположенные на более низком уровне. ТК (1208) передает непосредственно адресованный вектор триггерного сигнала в определенную ТК, не связанную непосредственно с ТК(1207). На фиг. 13 показана схема, иллюстрирующая процесс, в котором две независимые ПККАn и m вызывают общую, кэшированную в ТК более высокого уровня ПК х. На этой схеме показано, что эта ПК кэшируется всей ветвью и доступна также для соседней ветви (1301) через общую ТК. На фиг. 14 показана видоизмененная по сравнению с фиг. 9 ПТ-система, используемая в корневых ТК и ТК средних иерархических уровней. Основное отличие от описанных ранее ТК состоит в том, что вместо отдельных триггерных сигналов данная ТК должна управлять 41 векторами идентификаторов и/или триггерных сигналов. При этом для подтверждения достоверности векторов для каждого вектора предусмотрен квитирующий сигнал (RDY), который поступает в арбитр (1401). С помощью мультиплексоров (1402, 1403) выбирается либо один из векторов триггерных сигналов, либо один из векторов идентификаторов (1405). Векторы триггерных сигналов поступают непосредственно на адресный вход ПТ 1 (1406), которая в остальном имеет показанную на фиг. 9 схему соединений. Регистр идентификаторов (1407) также имеет показанную на фиг. 9 схему соединений. В отличие от фиг. 9 мультиплексор (1408) имеет три входа (ср. 0902). При этом указанным мультиплексором помимо конечного автомата дополнительно управляет арбитр (1401). Через дополнительный вход векторы идентификаторов напрямую направляются мультиплексором(1403) дальше в ПТ 2. Для этой цели предусмотрена шина (1409). (В принципе и у ТК по фиг. 9 идентификаторы могут непосредственно подаваться мультиплексором (1408) в ПТ 2. В этом случае КЭЛ могут напрямую без трансляции посылать идентификаторы в ПТ 2.) "Выходной триггерный сигнал/идентификатор" формируется аналогично фиг. 9. Входной сигнал с меткой достоверности ("входная метка достоверности"),который в варианте по фиг. 9 переходит далее в выходной сигнал с меткой достоверности ("выходная метка достоверности"), в данном случае отсутствует. Вместо него в зависимости от арбитрирования арбитром (1401) формируется"выходной достоверный триггерный сигнал" для векторов триггерных сигналов и "выходной достоверный идентификатор" для векторов идентификаторов, что позволяет сообщить конечному автомату, как должна происходить обработка данных. Шина (1409) через шину (1410) проходит к следующему модулю, который существует только в корневой ТК и описан ниже со ссылкой на фиг. 15. Для корневой ТК в дополнение к обычным функциям обычной ТК необходим интерфейс для взаимодействия с внешней конфигурационной памятью (ВКП), а также соответствующий генератор адресов и устройства для управления запросами по обращению к этой ВКП. Обычная ТК транслирует в ПТ 1 поступающие векторы триггерных сигналов в определенный идентификатор, а в ПТ 2 транслирует идентификатор в адрес ячейки ТК-ЗУ (см. фиг. 16 а). Корневая ТК при обращениях к ВКП транслирует идентификатор в пределах этой ВКП в адрес в ВКП, с которого начинается та ПК/ПККА, на которую ссылается данный идентификатор. С этой целью в ВКП задана определенная область, объем которой соответствует возможному количеству идентификаторов (если, например, один идентификатор имеет 10 разрядную длину, то в результате возможно су 003407 42 ществование 210 = 1024 идентификаторов, т.е. в ВКП резервируется место под 1024 записей). В рассмотренных ниже примерах эта область памяти расположена в нижнем конце ВКП и названа как ПТ-ВКП для того, чтобы подчеркнуть сходство с просмотровой таблицей ПТ 2. Трансляция триггерного сигнала в определенный идентификатор происходит при этом в ПТ 1 в соответствии с уже известными ТК (1601). Для пояснения на фиг. 16 поясняется процесс обращения к ВКП. Согласно фиг. 15 идентификатор поступает по показанной на фиг. 14 шине (1410) в мультиплексор (1501). Мультиплексор (1501) записывает этот идентификатор в загружаемый счетчик (1502). Выход счетчика (1502) через мультиплексор (1503) соединен с адресной шиной (1504) ВКП. По информационной шине(1505) полученный в результате трансляции идентификатора адрес ячейки памяти через мультиплексор/демультиплексор (1506) поступает в мультиплексор (1501), который загружает этот адрес ячейки памяти в счетчик (1502). После этого загрузочный конечный автомат (см. фиг. 17) считывает слова данных соответствующих ПК/ПККА из ВКП и записывает их в ТК-ЗУ, при этом значение счетчика (1502) после каждой операции считывания увеличивается. Этот процесс продолжается до тех пор, пока не будет считана команда останова STOP. Через интерфейс 1507 хост-машина более высокого уровня записывает ПК/ПККА через мультиплексоры (1503/1506) в ВКТ. При этом управляющий конечный автомат (КАТК) осуществляет арбитраж, решая, предоставлять доступ к ВКТ хост-машине или корневой ТК. После сброса установок микросхемы в начальное состояние необходимо произвести загрузку основной конфигурации (используемая для самозагрузки программа конфигурирования Загр-ПК). С этой целью вводится постоянный адрес ячейки памяти (АДР-ЗАГР), указывающий на первую ячейку памяти Загр-ПК. В качестве адреса самозагрузки (АДР-ЗАГР) целесообразно использовать ячейку памяти 0h, если идентификаторы начинаются с 1, в противном случае можно использовать ячейку памяти 2ID или какую-нибудь другую ячейку. В данном примере используется ячейка памяти 2ID. Для загрузки Загр-ПК корневая ТК осуществляет в ячейке памяти, соответствующей адресу АДР-ЗАГР, поиск в том случае, если какаялибо Загр-ПК загружена. Корневая ТК записывает данные в счетчик (1502) с целью загрузить из него Загр-ПК до появления команды остановаSTOP. Устройство контроля в корневой ТК берет на себя функции по синхронизации хостмашины с микросхемой. Этот процесс происходит следующим образом. Адреса со значением меньше 2ID контролируются блоком (1508), т.е. при обращении по 43 этим адресам со стороны хост-машины в управляющий конечный автомат (КАТК) посылается сигнал ACC-ID. Аналогичным образом адрес АДР-ЗАГР контролируется блоком (1509), который передает в управляющий конечный автомат(КАТК) сигнал АСС-ВООТ. Управляющий конечный автомат (КАТК) срабатывает на эти сигналы следующим образом:- если хост-машина осуществляет запись по адресу АДР-ЗАГР, то инициируется загрузка программы Загр-ПК;- если хост-машина осуществляет запись слова данных 0 (1512) по адресу АДР-ЗАГР, то это фиксируется компаратором (1510) с приостановкой работы микросхемы;- если хост-машина осуществляет запись по адресу, значение которого меньше 2, то этот адрес загружается в регистр удаленных идентификаторов (1511). Поскольку этот адрес соответствует идентификатору (см. ПТ-ВКП), то идентификатор измененной ПК/ПККА попадает в этот регистр удаленных идентификаторов(1511). Всем ТК передается (1513) подлежащая немедленному выполнению команда удаленияREMOVE ID. После этого ТК удаляют из своих ТК-ЗУ, соответственно ПТ 2 те ПК/ПККА,которые соответствуют этому идентификатору. При последующем вызове таких ПК/ПККА таблицы-конфигураторы должны автоматически загружать новые ПК/ПККА из ВКП. На фиг. 17 показана схема, поясняющая работу корневой ТК при загрузке ПК/ПККА из ВКП. При отсутствии идентификатора во внутреннем ТК-ЗУ (ср. фиг. 1, 1701) этот идентификатор записывается (1703) в счетчик (1502). В ответ на обращение к ВКП по адресу, имеющемуся в счетчике (1502), выдается базовый адрес ПК/ПККА. Этот адрес записывается (1704) в счетчик (1502). Далее в соответствии с процессом, описанным со ссылкой на фиг. 2, осуществляется загрузка (1702). При этом данные считываются не из ТК более высокого уровня, а из ВКП (1705) и не только записываются в собственное ТК-ЗУ, но и пересылаются в ТК более низкого уровня (1706). В ТК среднего иерархического уровня трансляция триггерных сигналов осуществляется аналогично фиг. 1, за исключением того, что обработка векторов триггерных сигналов и векторов идентификаторов выполняется в соответствии с фиг. 14. ПК/ПККА загружаются аналогично фиг. 2, за исключением того, что слова данных не только записываются (0210) в собственное ТК-ЗУ, но и пересылаются в ТК более низкого уровня. На фиг. 19 поясняется принцип очереди(1901) в режиме чтения и записи прогон ее содержимого всегда выполняется от начала до конца (1902). При записи и стирании записей от начала памяти типа FILMO указатель чтения 44 перемещается на первую неудаленную запись(1904). При записи записей в середину памяти типа FILMO (1905) указатель чтения остается неизменным (1906), а записи помечаются маркером "пустая операция" (1907). При записи данных в память типа FILMO (1908) они вводятся с конца, за последней записью (1909). Указатель чтения (1910) остается при этом неизменным. Очевидно, что ТК можно реализовать только с использованием одного запоминающего устройства, включающего ПТ 1, ПТ 2 и ТКЗУ. Однако управление такой ТК будет более сложным. При этом структура ТК аналогична структуре корневой ТК, у которой в ВКТ уже интегрированы ПТ 2 и ТК-ЗУ. Для пояснения предлагаемого способа нет необходимости в описании таких ТК. Если ТК используется в качестве системы с кэшированием данных, то триггерные сигналы для записи данных вводятся в ТК-ЗУ. При этом данные записываются в ТК-ЗУ конфигурируемым элементом. Необходимые для этого изменения являются очевидными, а память типаFILMO можно полностью исключить. При кэшировании данных возникает проблема связности данных. Этой проблемы можно избежать,использовав предложенный в DE 4221278 А 1 способ для маркирования данных и их достоверности на отдельных иерархических уровнях. При запросе данных для выполнения цикла их чтения-изменения-записи (ЧИЗ-цикла) данные на всех иерархических уровнях маркируются как "недостоверные" с помощью дополнительной записи, вводимой в ТК-ЗУ/ВКП. С этой целью можно ввести запись, которая содержит однозначно определенный идентификатор использующих эти данные ПК/ПККА. Ни одна из ПК/ПККА с другим идентификатором не сможет использовать эти данные до тех пор, пока использующая эти данные ПК/ПККА не перезапишет указанные данные (ср. известный метод перезаписи) и не удалит свой идентификатор. Сказанное выше поясняется на примере,представленном на фиг. 20. Согласно фиг. 20 а ТК (2007) запрашивает данные у ТК следующего более высокого уровня, которая в свою очередь запрашивает данные у корневой ТК (2004), при этом вместе с запросом данных передается идентификатор запрашивающей ПК/ПККА (2001). Запрошенные данные (2002) пересылаются в ТК (2007). Все остальные, последующие запросы на доступ отклоняются (2003). Согласно фиг. 20 б данные перезаписываются (2005), в другие, последующие запросы на доступ снова принимаются (2006). Согласно фиг. 20 в данные запрашиваются у ТК среднего иерархического уровня, которая имеет эти данные и пересылает их в ТК (2007). Идентификатор для блокирования данных посылается (2001) во все ТК иерархии. 45 При перезаписи данных согласно фиг. 20 г данные записываются во все ТК иерархии, а соответствующий идентификатор удаляется. На фиг. 21 показана схема, поясняющая связь ТК-ИНИЦИАТОРА (2101) с ТКАДРЕСАТОМ (2102) через несколько промежуточных ТК (2104, 2105, 2106), а также прямую связь без промежуточных уровней с ТКАДРЕСАТОМ (2103) в соответствии с методом,предусматривающим использование командGETCTS/LOOSECTS. ТК (2101) устанавливает связь с ТК (2103). После успешного установления связи ТК (2101) получает от ТК (2103) сигнал "РАЗРЕШЕНИЕ",подтверждающий установление связи. После этого ТК (2101) через ТК (2104), ТК (2105), ТК(2106) устанавливает связь с ТК (2102). Связь с ТК (2102) подтверждается (сигнал "РАЗРЕШЕНИЕ") лишь после того, как запрос поступит в ТК (2102). Если связь установить невозможно, поскольку одна из шин занята, в ТК (2101) посылается сигнал отклонения запроса "НЕПРИНЯТИЕ", и ТК (2101) прекращает этот процесс. Это означает, что прерывается и связь с ТК (2103), а в ТК 2103 передается сигнал "НЕПРИНЯТИЕ". Если же ТК (2102) подтверждает установление связи сигналом "РАЗРЕШЕНИЕ", то ТК(2101) посылает в ТК (2103) и ТК (2102) команду перехода GO с целью одновременно подтвердить таблицам-конфигураторам (2103) и(2102) успешное установление связи по шине и синхронизацию. Указанный протокол позволяет передавать данные и команды синхронно и без взаимоблокировки, поскольку команда переходаGO обеспечивает корректный прием команд всеми АДРЕСАТАМИ. На фиг. 22 показана схема, поясняющая связь между таблицами-конфигураторами (межТК-связь) в соответствии с методом, предусматривающим использование командGETBUS/LOOSEBUS. Если в варианте по фиг. 21 соответствующие ТК более высокого уровня выполняют функцию управления и присвоения приоритетов, то в данном случае функции управления берут на себя меж-ТК-шины (2201). Связь с ТК (2103) устанавливается при запросе ТК-ИНИЦИАТОРОМ (2101) его локальной меж-ТК-шины (2202). Запросы подтверждаются в том случае, если шина свободна(сигнал "ПРИНЯТИЕ"), или отклоняются, если шина занята (сигнал "НЕПРИНЯТИЕ"). После этого ТК-ИНИЦИАТОР передает на шину адрес ТК (2102). В соответствии со схемой адресации контроллер шины определяет, что указанный адрес находится вне адресов локальной шины, и устанавливает через ТК более высокого уровня(2104) связь с ее локальной шиной (2203). Поскольку адрес ТК (2102) находится среди адресов этой шины, через ТК (2106) устанавливается связь с локальной шиной (2204) ТК (2102). Благодаря тому, что по завершении этого процесса 46 ТК (2101) становится единственным устройством, управляющим обменом данных по всем необходимым для передачи таких данных шинам (т.е. является так называемым "хозяином шины"), обеспечивается беспрепятственная и исключающая взаимоблокировку связь, поскольку для всех других ТК каналы связи заблокированы. При этом ТК (2102) и (2103) также не могут использовать эти шины, поскольку они как АДРЕСАТЫ могут только принимать команды, а посылать данные они могут только по запросу ИНИЦИАТОРА (2101). Сразу же по окончании связи шины освобождаются по сигналу от ТК (2101). Если ТК (2101) в процессе установления связи по шинной системе "натолкнется" на занятую шину, то в эту ТК (2101) посылается сигнал "НЕПРИНЯТИЕ", и ТК (2101) снова освобождает шинную систему и пытается установить связь в более поздний момент времени. При одновременном запросе несколькими ТК одной и той же шины приоритет отдается ТК более высокого уровня (2205). Тем самым удается избежать возникновения ситуации, при которой процесс установления связи по шине,прошедший уже через несколько уровней, будет прерван другим процессом установления связи по шине, происходящим еще на сравнительно низком локальном уровне. Расширенный протокол позволяет в случае поступления сигнала "НЕПРИНЯТИЕ" освобождать только те шины, которые необходимы для имеющего более высокий приоритет процесса установления связи по шине. В результате может быть достигнуто значительное повышение быстродействия, поскольку в более поздний момент времени не придется снова устанавливать связь по всем шинам. Структура меж-ТК-шины, используемой для связи согласно фиг. 22, показана на фиг. 23. ТК (2301-2304) через свои интерфейсы (23082311) вместе с ТК (2305) более высокого уровня(2312). Подключение к меж-ТК-шине происходит через арбитр кругового обслуживания, который присваивает интерфейсам (2308-2311) одинаковый приоритет, а интерфейсу (2307) более высокий приоритет и который управляет мультиплексором для межсоединения шин(2306). С этим арбитром функционально связан конечный автомат, который обрабатывает управляющие сигналы (например сигналы установления/прекращения связи, сигналы "ПРИНЯТИЕ", "НЕПРИНЯТИЕ" и т.д.). На фиг. 24 показана схема распределения адресов в одномерном дереве ТК. Каждая таблица-конфигуратор обозначена прямоугольником, внутри которого указан адрес ТК. При этом значком "-" помечены нерелевантные двоичные разряды адреса, которые не подвергаются обработке, релевантные двоичные разряды адреса указаны в виде двоичных значений 0 или 1, а 47 значком обозначен тот разряд адреса, который может принимать любое из значений. Очевидно, что аналогичная схема равным образом применима и к многомерным деревьям, при этом указанные адреса будут в каждом случае соответствовать одной из осей. Иными словами,для каждой оси существует соответствующая отдельная система адресов. На фиг. 24 а показана схема адресации, осуществляемой из ТК 0001. При этом указан относительный адрес -1. Путем вычисления -1+1 = 00("относительное перемещение" + "адрес ТКИНИЦИАТОРА на текущем уровне") можно вычислить ТК 0000, которая закоммутирована на ту же локальную шину. Согласно фиг. 246 ТК 0010 обращается по относительному адресу +10. Вычисление 10+0 = 10 ("относительное перемещение" + "адрес ТКИНИЦИАТОРА на текущем уровне") дает перенос 1, поскольку поле адресов локальной шины самого нижнего уровня имеет длину ровно один бит. В результате выбирается шина следующего более высокого уровня. Вычисление ее адреса 10+10 = 100 ("относительное перемещение" +"адрес ТК-ИНИЦИАТОРА на текущем уровне") снова дает перенос, поскольку ее поле адресов является 2-разрядным, что ровно на один разряд больше поля адресов шины самого нижнего уровня. На следующем более высоком уровне при вычислении 10 + 010 = 0100 не возникает переноса, в результате чего 3-ий (слева) бит адресуется по маршруту 1 следующего более низкого уровня, 2-ой (слева) бит адресуется по маршруту 10 следующего за предыдущим еще более низкого уровня и, наконец, последним битом выбирается ТК-АДРЕСАТ. На фиг. 24 в показан известный способ прохождения 2-х уровней в положительном(прямом) направлении, а на фиг. 24 г показан способ прохождения 3-х уровней в отрицательном (обратном) направлении с отрицательным переносом. На фиг. 25 показана структура двухмерного дерева ТК. На самом нижнем уровне (2502) находятся ТК (2501) с двухмерным расположением. Адрес соответствующей ТК в таком двухмерном дереве указан в виде х/у. Над уровнем (2502) расположен следующий более высокий уровень (2504). Каждая из его таблицконфигураторов (2503) управляет своей группой из четырех ТК уровня (2502). Адресное пространство таблиц-конфигураторов на уровне(2504) на один разряд больше, при этом значок обозначает адресные разряды уровня (2502),не имеющие значения для выбора ТК на уровне(2504). Выше над уровнем (2504) расположена корневая ТК (2505). Ее адрес в свою очередь еще на один разряд больше, а значок имеет при этом то же значение. На фиг. 26 показана схема, поясняющая процесс создания связанного списка для сборщика мусора при реализации на базе микрокон 003407 48 троллера. При этом все ПК связаны друг с другом через записи-заголовки ("предыдущий мусор/следующий мусор"). При просмотре списка сборщиком мусора "возраст" ПК протоколируется для кэш-статистики (2602) путем увеличения записи на (+1). Сборщик мусора проверяет запись в ПК-статистике (2601), которая указывает на то, находится ли еще эта ПК в списке памяти типа FILMO. В этом случае ПК не подлежит удалению сборщиком мусора, поскольку она еще содержит не использованные для конфигурирования конфигурационные слова. В другом варианте такую проверку можно также осуществлять по записям в памяти типа FILMO,контролируя следующую FILMO-запись и предыдущую FILMO-запись. На фиг. 27 показана схема, поясняющая процесс создания связанного списка для памяти типа FILMO. При этом в данном случае схема сцепления отдельных элементов может полностью отличаться от схемы, предусмотренной в связанном списке для сборщика мусора (фиг. 26). ПК объединены друг с другом в связанный список предыдущими и следующими FILMOзаписями. Записи в ПК-статистике (2701) указывают в каждом случае на первое еще не использованное при конфигурировании КС в соответствующей ПК. Прогон содержимого памяти типа FILMO осуществляется таким образом,чтобы с первым идентификатором происходил запуск ПК. После выполнения не использованное при конфигурировании слово записывается в положение, находящееся после ПК-статистики(2701). При выполнении ПК в полном объеме эта ПК удаляется из связанного списка памяти типа FILMO, но остается в памяти. После этого осуществляется переход по списку памяти типаFILMO к следующей ПК, обрабатываемой аналогичным образом. На фиг. 28 показана схема, поясняющая структуру ПК при микроконтроллерном управлении. В начале стоит команда перехода jmp, по которой осуществляется пропуск заголовка(2801) ПК. Каждому КС соответствует свой двоичный разряд в буферной памяти FILMO(FILMO-БИТ, 2802). 1 (2803) означает, что КС было принято конфигурируемыми элементами(сигнал "ПРИНЯТИЕ") и при следующем прогоне больше не выполняется. 0 (2804) указывает на получение сигнала "НЕПРИНЯТИЕ" и на необходимость выполнить это КС вновь при следующем прогоне. В информации, содержащейся в ПК-статистике (2701), наличие которой является необязательным, содержится указание на первое маркированное 0 конфигурационное слово. При получении сигнала "НЕПРИНЯТИЕ" в ответ на команду PUSHRET (2805) отработка ПК в этом месте прерывается и начинается вновь при следующем прогоне либо с первого КС, либо с того места, на которое указывает запись в ПК-статистике (2701). В остальных 49 случаях происходит надлежащий выход из программы в ее конце на позиции 2806. На фиг. 29 показана схема, иллюстрирующая процесс сохранения информации о состоянии КЭЛ перед прогоном содержимого памяти типа FILMO или перед запуском ПК. Эта информация о состоянии поступает из КЭЛ (2901) в регистр (2902). Перед прогоном содержимого памяти типа FILMO или перед запуском ПК таблица-конфигуратор посылает в регистр(2902) разрешающий сигнал (2903). После этого информация о состоянии извлекается из регистра и передается далее в ТК (2904). ТК (2904) остается неизменной до посылки следующего разрешающего сигнала (2903). Определение понятий ПРИНЯТИЕ: сигнал, указывающий, что адресуемый КЭЛ находится в допускающем конфигурирование состоянии и принимает КС. Групповые команды (в частности команда перемещения блока BLOCK-MOVE): команды,по которым происходит перемещение группы данных (блока) в памяти или между памятью, и периферийными устройствами. При этом указывается исходный адрес перемещаемых данных, адрес получателя данных и размер блока данных. Широковещание: передача информации множеству получателей данных. Получатель (адресат) данных: устройство(-а),осуществляющее(-ие) последующую обработку результатов, полученных в КЭЛ. Источник данных: устройство(-а), предоставляющее(-ие) конфигурируемым элементам данные в виде операндов. Слово данных: слово данных состоит из имеющей произвольную длину последовательности бит. Эта последовательность бит представляет собой элементарную единицу информации, обрабатываемую вычислительным устройством. В виде такого слова данных могут быть закодированы как команды для процессоров или аналогичных микросхем, так и данные в чистом виде. Взаимоблокировка: состояние, в котором из-за взаимной блокировки невозможна никакая обработка данных. ПП: потоковый процессор, описанный вDE 4416881. ДПВМ: динамически конфигурируемые ПВМ, известные из уровня техники. Элементы: собирательный термин для всех видов имеющих законченное исполнение блоков и модулей, которые могут быть использованы в электронной микросхеме в качестве единого целого. Таким образом, такими элементами являются следующие:- конфигурируемые ячейки любого вида,- кластеры,- блоки ЗУПВ,- логические схемы,- арифметико-логические устройства, 003407- регистры,- мультиплексоры,- штырьковые входные-выходные выводы чипа. Событие: событие может быть обработано аппаратным элементом каким-либо соответствующим прикладной задаче методом и может инициировать в ответ на такую обработку выполнение обусловленного им действия. Таким образом, в качестве примера таких событий можно назвать следующие:- тактовый импульс вычислительного устройства или компьютера,- внутреннее или внешнее прерывание,- триггерный сигнал, поступающий от других элементов в пределах микросхемы,- сравнение потока данных и/или потока команд с определенным значением,- события по вводу-выводу,- антипереполнение, переполнение, обновление и т.д. счетчика,- обработка сравнения.FIFO: память типа FIFO (память обратного магазинного типа), известна из уровня техники.FIFO, из которой данные считываются линейно. Ограничение указателя чтения началом памяти отсутствует. ПВМ и ППВМ: программируемый (пользователем) логический элемент, известен из уровня техники. Фрагментация: разбиение памяти на множество часто небольших и поэтому бесполезных областей. Сборщик мусора: устройство для управления памятью, предотвращающее ее фрагментацию. Н-уровень: уровень логической 1, зависит от используемой технологии. Хост-машина: ведущее вычислительное устройство более высокого уровня по отношению к микросхеме или блоку. Холостой цикл или холостой режим: цикл,в котором конечный автомат не выполняет никаких операций, соответствует исходному состоянию конечного автомата. Меж-ТК-шина: система шин между ТК одного уровня и ТК (или группой ТК) более высокого уровня. ИНИЦИАТОР: ТК, инициирующая доступ к меж-ТК-шине. Указатель: указатель адреса, соответственно слова данных. Конфигурируемый элемент (КЭЛ): конфигурируемый элемент представляет собой элемент (блок) логического модуля, которому с помощью конфигурационного слова можно задавать специальную функцию. Таким образом,конфигурируемыми элементами являются ячейки ЗУПВ всех типов, мультиплексоры, арифметико-логические устройства, регистры и все 51 типы описаний по организации внешних и внутренних сетей и т.д. Конфигурируемая ячейка (КЭЛ): см. "Логические ячейки". Конфигурирование: задание определенной функции и объединение в сеть какого-либо логического элемента, (ПВМ)-ячейки или КЭЛ(см. "Реконфигурирование"). Конфигурационные данные: произвольное количество конфигурационных слов. Программа конфигурирования (ПК): несколько объединенных в единый алгоритм конфигурационных слов. Конфигурационная память: в конфигурационной памяти хранится одно или несколько конфигурационных слов. Конфигурационное слово (КС): конфигурационное слово состоит из имеющей произвольную длину последовательности бит. Эта последовательность бит представляет собой достоверную настройку конфигурируемого элемента, в результате которой образуется работоспособный блок (устройство). Загрузочная логическая схема (загрузочная логика): блок для конфигурирования и реконфигурирования КЭЛ. Выполнена в виде микроконтроллера, специально адаптированного под выполнение своей задачи. Логические ячейки: конфигурируемые ячейки, используемые в ПП, ППВМ, ДПВМ и выполняющие простые логические и арифметические операции в соответствии со своей конфигурацией. Просмотровая таблица: известный из уровня техники метод трансляции данных. ПТ 1: просмотровая таблица, по которой триггерный сигнал транслируется в идентификатор и которая определяет, соотносится ли этот триггерный сигнал с достоверным идентификатором. ПТ 2: просмотровая таблица, по которой идентификатор транслируется в адрес соответствующей ПК в локальной памяти и которая определяет наличие этой ПК в локальной памяти.L-уровень: уровень логического 0, зависит от используемой технологии. Маска: комбинация бит, указывающая среди определенного количества сигналов на достоверные сигналы. Установление приоритетов: установление определенной последовательности обработки. Сигнал "Реконфиг": указывает на допускающее реконфигурирование состояние КЭЛ. Триггерный сигнал "Реконфиг": перевод КЭЛ в допускающее реконфигурирование состояние. Сигнал "НЕПРИНЯТИЕ": сигнал, указывающий, что адресуемый КЭЛ находится в не допускающем конфигурирование состоянии и не принимает посланное КС.REMOVE ID: 1. Команда в программе конфигурирования для удаления той программы конфигурирования, на которую ссылается идентификатор. 2. Команда ТК более высокого уровня, посылаемая через отдельный интерфейс или с помощью квитирующего сигнала в ТК более низкого уровня для удаления ПК, на которую ссылается идентификатор.RESET (СБРОС): возврат микросхемы или всей компьютерной системы в определенное исходное состояние. Корневая ТК: ТК самого верхнего иерархического уровня с прямым доступом к внешней конфигурационной памяти. Арбитр кругового обслуживания: арбитр,работающий по замкнутому циклу и присваивающий каждому последнему из подвергаемых арбитражу сигналу наименьший приоритет. Синхронизирующие сигналы: сигналы состояния, генерируемые конфигурируемым элементом или арифметическо-логическим устройством и направляемые далее в следующие конфигурируемые элементы или арифметическологические устройства для управления и синхронизации обработки данных. Синхронизирующий сигнал можно также передавать с временной задержкой (с сохранением) назад в один и тот же конфигурируемый элемент или арифметико-логическое устройство. АДРЕСАТ: ТК, являющаяся конечным объектом доступа к меж-ТК-шине. Триггерный сигнал: синоним понятия"синхронизирующий сигнал". Реконфигурирование: повторное конфигурирование произвольного количества КЭЛ, при этом произвольное количество оставшихся КЭЛ продолжают выполнять свои собственные функции (ср. "Конфигурирование"). Связанный список: составляемая указателем структура данных, известная из уровня техники. Ячейки: синоним понятия "конфигурируемые элементы". Конечный автомат: логическая схема, способная переходить в различные состояния. Переходы между этими состояниями зависят от различных входных параметров. Указанные конечные автоматы используются для управления сложными функциями и соответствуют уровню техники. ФОРМУЛА ИЗОБРЕТЕНИЯ 1. Способ исключающего взаимоблокировку автоматического конфигурирования и реконфигурирования микросхем с двух- или многомерной структурой расположения программируемых ячеек (например программируемых пользователем вентильных матриц(ППВМ), динамически программируемых вентильных матриц (ДПВМ), потоковых процессоров (ПП) и т.п.), отличающийся тем, что устрой 53 ством управления конфигурированием и реконфигурированием управляют определенным количеством подчиненных конфигурируемых элементов, причем указанное количество представляет собой часть от общего количества конфигурируемых элементов или соответствует этому общему количеству конфигурируемых элементов, а управление осуществляется следующим образом: 1.1. запросы на реконфигурирование от подчиненных конфигурируемых элементов посылают в указанное устройство, которое 1.2. обрабатывает эти запросы, при этом а) информацию о текущем состоянии конфигурируемых элементов сохраняют в виде резервной копии,б) по мере возможности в конфигурируемые элементы из буферной памяти (FILMO) загружают еще подлежащие загрузке конфигурационные данные, затребованные в существующих более ранних запросах,в) запрос на реконфигурирование транслируют в память указанного устройства в адрес подлежащих загрузке конфигурационных данных в случае, если указанные данные имеются в памяти устройства,г) если указанных конфигурационных данных нет в памяти устройства, то эти конфигурационные данные вместе с соответствующим идентификатором запрашивают у устройства более высокого уровня и загружают, и которое 1.3. отрабатывает конфигурационные данные последовательности команд, при этом а) если конфигурируемые элементы могут принять данные, то конфигурационные данные загружают в конфигурируемые элементы,б) конфигурационные данные тех конфигурируемых элементов, которые не могут принять данные, загружают в их временной очередности в буферную память (FILMO), и 1.4. после отработки конфигурационных данных в полном объеме снова разрешают прием вновь поступающих запросов, причем до появления нового запроса в конфигурируемые элементы из буферной памяти (FILMO) загружают еще подлежащие загрузке конфигурационные данные, затребованные в существующих более ранних запросах. 2. Способ по п.1, отличающийся тем, что не принятые конфигурируемыми элементами конфигурационные данные записывают в конец буферной памяти (FILMO). 3. Способ по п.1 или 2, отличающийся тем,что конфигурационные данные, предназначенные для записи в конфигурируемые элементы,считывают от начала до конца буферной памяти, при этом содержимое этой буферной памяти всегда просматривают полностью. 4. Способ по любому из пп.1-3, отличающийся тем, что конфигурационные данные, записываемые в конфигурируемые элементы из начала буферной памяти, удаляют из буферной 54 памяти, т.е. указатель чтения устанавливают позади записанных данных. 5. Способ по любому из пп.1-4, отличающийся тем, что конфигурационные данные, записываемые в конфигурируемые элементы из середины буферной памяти,а) либо маркируют в буферной памяти как удаленные и, следовательно, игнорируются при чтении во время следующего просмотра,б) либо удаляют из буферной памяти(FILMO) путем перемещения еще существующих конфигурационных данных, начиная от той ячейки памяти, информацию в которой стирают до начала или конца буферной памяти (FILMO),таким образом, занимают этими существующими конфигурационными данными ячейку памяти, из которой стерта информация, а указатели соответственно совмещают с началом или концом памяти. 6. Способ по любому из пп.1-5, отличающийся тем, что конечный автомат (сборщик мусора) управляет памятью (ТК-ЗУ) устройства таким образом, чтобы в ней не возникало никаких пропусков, перемещают пропуски в памяти с имеющимися конфигурационными данными от начала пропуска до конца памяти (ТК-ЗУ) таким образом, чтобы имеющиеся конфигурационные данные занимали ту ячейку памяти, из которой стерта информация, указатели совмещают с концом памяти, а информацию по трансляции идентификаторов соответственно совмещают с передвинутыми ячейками памяти. 7. Способ по любому из пп.1-6, отличающийся тем, что поступающие в устройство запросы транслируют в однозначно определенный идентификатор (ID) программы конфигурирования, который указывает на определенную ячейку памяти (ТК-ЗУ). 8. Способ по любому из пп.1-7, отличающийся тем, что конфигурационные данные инициируют загрузку следующих конфигурационных данных (команда выполнения EXECUTE). 9. Способ по любому из пп.1-8, отличающийся тем, что устройства расположены иерархически в виде древовидной структуры. 10. Способ по любому из пп.1-9, отличающийся тем, что устройство самого высокого уровня в древовидной структуре и вычислительное устройство более высокого уровня совместно используют общую память, и это вычислительное устройство более высокого уровня управляет процессами в микросхеме путем взаимодействия с устройством самого высокого уровня. 11. Способ по любому из пп.1-10, отличающийся тем, что устройства среднего и высшего иерархических уровней наряду с обычными запросами (триггерные сигналы) срабатывают также на запросы от идентификаторов, при этом происходит трансляция идентификатора в адрес ячейки памяти программы конфигурирования, на которую ссылается этот идентифика 55 тор, и отпадает необходимость в трансляции триггерного сигнала в идентификатор. 12. Способ по любому из пп.1-11, отличающийся тем, что конфигурационные данные по запросу к другому устройству инициируют(триггерные сигналы) выполнение следующих конфигурационных данных в других устройствах, при этом запросы посылают: а) в широковещательном режиме всем другим устройствам,б) только в устройство непосредственно предшествующего более высокого уровня,в) только в устройство (-а) непосредственно предшествующего более низкого уровня,г) в конкретно адресуемое устройство. 13. Способ по п.1, отличающийся тем, что определенные конфигурационные данные тех конфигурируемых элементов, которые не могут принять данные, загружают в буферную память(FILMO), и все последующие конфигурационные данные одной последовательности команд также загружают в буферную память. 14. Способ по п.1, отличающийся тем, что определенные конфигурационные данные конфигурируемых элементов загружают в конфигурируемые элементы только в том случае, если в указанные конфигурируемые элементы смогли быть загружены все предыдущие конфигурационные данные одной последовательности команд. 15. Способ по пп.1, 13 и 14, отличающийся тем, что при использовании способа по п.13 и/или 14 обеспечивают соблюдение жестко заданной последовательности конфигурирования в пределах последовательности команд. 16. Способ по п.1, отличающийся тем, что поступающий от подчиненных элементов запрос на реконфигурирование транслируют в однозначно определенный идентификатор соответствующей последовательности команд. 17. Способ по пп.1 и 16, отличающийся тем, что не имеющий ссылки запрос на реконфигурирование распознают при трансляции в идентификатор, маркируют, как не имеющий ссылки, и обрабатывают. 56 18. Способ по пп.1 и 16, отличающийся тем, что трансляция идентификатора осуществляется с помощью просмотровой таблицы. 19. Способ по п.1, отличающийся тем, что поступающий от подчиненных элементов запрос на реконфигурирование уже имеет однозначно определенный идентификатор. 20. Способ по пп.1 и 16-19, отличающийся тем, что однозначно определенный идентификатор транслируют в адрес соответствующей последовательности команд в памяти. 21. Способ по пп.1 и 20, отличающийся тем, что при отсутствии достоверного адреса соответствующую последовательность команд загружают в память и формируют адресную ссылку. 22. Способ по пп.1 и 20, отличающийся тем, что трансляцию идентификатора в адрес осуществляют с помощью просмотровой таблицы. 23. Способ по любому из пп.1-22, отличающийся тем, что буферная память выполнена не в виде отдельной памяти и точно согласована с последовательностью команд, при этом не использованные для конфигурирования конфигурационные слова маркируют как таковые, в результате чего при повторном вызове последовательности команд вновь обрабатывают только эти маркированные конфигурационные слова. 24. Способ по пп.1 и 23, отличающийся тем, что последовательности команд объединяют указателем в связанный список таким образом, что при загрузке не использованных прежде для конфигурирования конфигурационных слов в конфигурируемые элементы соблюдают временную очередность. 25. Способ по пп.1 и 23, отличающийся тем, что последовательности команд полностью объединяют указателем в связанный список, в результате чего сборщик мусора проходит на основании этого связанного списка по всем последовательностям команд, перезаписывают удаляемую последовательность команд следующей и удаляют ее из этого связанного списка.

МПК / Метки

МПК: G06F 15/78

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

Код ссылки

<a href="https://eas.patents.su/30-3407-sposob-isklyuchayushhego-vzaimoblokirovku-konfigurirovaniya-potokovyh-processorov-i-mikroshem-s-dvuh-ili-mnogomernojj-strukturojj-raspolozheniya-programmiruemyh-yacheek-ppvm-dpvm-i.html" rel="bookmark" title="База патентов Евразийского Союза">Способ исключающего взаимоблокировку конфигурирования потоковых процессоров и микросхем с двух- или многомерной структурой расположения программируемых ячеек (ппвм, дпвм и т.п.)</a>

Похожие патенты