Перейти к содержанию
    

Проектирование асинхронных стейт-машин

Доброго времени суток,

 

Собственно - $subj. Изучаю вопрос проектирования чипа с использованием асинхронных пайплайнов. I.E. Sutherland, ‘‘Micropipelines’’ неплохо описывает концепцию и дает понимание о том, как работают вычислители при таком подходе, однако как делать управляющие стейт-машины в этой работе не рассматривается. Подход, предложенный в ASYNCHRONOUS FINITE STATE MACHINE DESIGN: A LOST ART? Christopher Carroll, University of Minnesota-Duluth мне не понравился. Другие книги, которые я просмотрел по теме, учат вариациям на тему той-же методологии, однако кардинально ничего не улучшают. В результате асинхронные стейт-машины представляют собой диких паучков из нандов и норов с обратными связями, крайне тяжело модифицируются, плохо верифицируются, короче - обладают целым рядом недостатков, делающих их реальное применение неоправданно дорогим и сложным.

 

Есть ли у кого мысли как упростить этот процесс и сделать его более простым и контролируемым?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

имхо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Жаль, придется использовать существующую методологию. Асинхронные схемы обладают просто громадными преимуществами по сравнению с синхронными схемами, однако поддержка их проектирования со стороны существующего софта отсутствует как факт.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел еще одну книгу по дизайну асинхронных систем: PRINCIPLES OF ASYNCHRONOUS CIRCUIT DESIGN – A Systems Perspective. Написана STEVE FURBER в 2001 году. Очень интересный труд, всем советую.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Асинхронные схемы обладают просто громадными преимуществами по сравнению с синхронными схемами...

Уточните, если не трудно, это на нескольких примерах.

 

Если книга уже найдена, то прикрепите ее в приложении, она будет интересна многим.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть книга Asynchronous Circuit Design.Chris J. Myers Copyright 2001 by John Wiley & Sons, Inc и И.Б.Бурдонов, А.С.Косачев, В.В.Кулямин.

АСИНХРОННЫЕ АВТОМАТЫ: КЛАССИФИКАЦИЯ И ТЕСТИРОВАНИЕ. Труды Института системного программирования РАН. No. 4. 2003. стр. 7-84.

 

если нужны выложу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если нужны выложу

 

Выкладывайте все с небольшой аннотацией или своим мнением.

Интересует, в частности, адаптация этих методов к ПЛИС.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уточните, если не трудно, это на нескольких примерах.

 

Если книга уже найдена, то прикрепите ее в приложении, она будет интересна многим.

 

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

 

Если используется completion detector, то асинхронная схема оказывается значительно быстрее синхронного аналога. Спайс говорит, что мой пайплайн из 4 последовательных MAC юнитов работает на частоте порядка 3.5GHz на 55nm. Если же подходить к вопросу с синхронными мерками, то пришлось бы посчитать частоту по worst case delay, что ограничило бы рабочую частоту на уровне 2.7GHz.

 

Если использовать dual-rail data encoding, то в системе полностью отсутствует паразитный свитчинг. В качестве эксперимента я оценивал потребляемую мощность 32 рязрядного сумматора с префиксным деревом деревом Когга-Стоуна в dual-rail и single-rail реализации. Так вот потребляемая мощность dual-rail реализации была в 2 раза ниже, чем потребляемая мощность single-rail реализации. Правда, в начале она занимала в 2 раза больше места, но эту проблему удалось "полечить" переходом на домино реализацию :)

 

Асинхронные пайплайны очень удачно сочетаются с домино реализациями. В моем случае я управляю precharge и evaluate транзисторами раздельно, таким образом получилось выкинуть "лишние" латчи и бополнительно сэкономить порядка 15% места.

 

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

 

 

Выкладывайте все с небольшой аннотацией или своим мнением.

Интересует, в частности, адаптация этих методов к ПЛИС.

В ПЛИС все асинхронные методики не работают. Если попытаться создать простейший асинхронный автомат, то альтеровский Квартус начинает визжать об обнаружении комбинаторного лупа и останавливает компиляцию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Документы не читал, поэтому аннотаций дать не могу. Вторую книгу выложу позже, там 41 МБ

____________________.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

А что если остаться в рамках методологии синтеза синхронных FSM, но сделать асинхронным его тактирование. То есть для длинных по времени микрокоманд удлинять время такта, а для коротких уменьшать. При этом менять длительность такта дискретно, или как-то иначе, в зависимости от типа текущей микрокоманды.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

тем более существующие инструменты это дело более-менее нормально поддерживают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По асинхронным схемам (и особенно по преобразованию синхронных в асинхронные) есть серия патентов фирмы Achronix. Это контора, которая сейчас и Интелом сотрудничает. Когда выходила первая серия их ПЛИС, так там характеристики по быстродействию, температурному диапазону и напряжению были такие сумасшедшие, что косвенно это указывало на асинхронную реализацию ядра, что и коррелировало с патентами. Так что можно их еще почитать.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго времени суток,

 

Собственно - $subj.

Отвечу сразу на вопрос. Есть два хороших проверенных тула, с ними работают, их используют. Первый и основной, это Petrify. Позволяет синтезировать асинхронный автомат из графа. Ограничение на число вершин - в районе 50. Что особенно ценно, Petrify позволяет сразу делать мэппинг в базисе standard cells. Второй тул, Workcraft - графический интерфейс для рисования и что важно - моделирования сетей Петри. Хорош еще тем, что автоматически генерит входной файл для Petrify.

 

Далее, что касается Сазерленда и микропайплайнов. Сазерленд предложил десинхронизацию, т.е. переделку синхронных схем путем убирания клока и заменой его на хендшейки. Это почти не имеет отношения к сетям сетям Петри и построению асинхронных автоматов из графов. Строго говоря, пайплайны по типа Сазерлендовских сейчас называют BD - Bundled delay. Построение полностью асинхронных автоматов (не переделка синхронных схем) - это отдельная методика, имеющая в своей основе теорию графов, теорию автоматов и сети Петри, а в качестве объединяющей надстройки эксплуатирует идеи Варшавского. Есть еще отдельное направление, развившееся в америке -NCL. Схемы Варшавского обычно называют SI - speed independend, а NCL - DI - delay insensitive. Впрочем, у Варшавского тоже были DI схемы, ими потом стал заниматься Стародубцев - можете погуглить. Так что, все асинхронные схемы условно можно разделить на три направления: BD, SI и DI. Схемы Dual rail и Burst Mode - это подклассы SI. Сравнивать эти схемы смысла нет, они все имеют свои плюсы и минусы. И каждая имеет свою область применения, где другие будут работать хуже.

 

Специалистов в РФ по этой тематике - считайте что и не осталось, хотя львиная доля теории разработана в СССР в 70-80х, под руководством В.И. Варшавского.

 

Вопрос - а с какой целью интересуетесь? Праздный интерес, или серьезные разработки?

 

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

 

Есть ли у кого мысли как упростить этот процесс и сделать его более простым и контролируемым?

По поводу верификации. Если речь идет только об FSM, с числом вершин в графе не более 50, то проверку делает Petrify и еще ряд менее известных тулов. Это самая точная верификация, она покажет что схема полумодулярна.

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

В ПЛИС асинхронные автоматы вообще не получится проверить. Я в начале лета поднимал тему - не нашлось ни одной ПЛИС/ПАЛ, где можно было бы хорошо уложить все эти тысячи мелких обратных связей. Но, можете поискать еще. Если найдете что то подходящее, напишите обязательно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

книжки переехали сюда?

/pub/BOOKS/IC_Design/_Asynchronous_Circuit_/

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...