Цитата(Shivers @ Sep 21 2014, 15:16)
Заблуждаетесь. Если речь идет о dual rail схемах (а вариантов может быть много - читайте мой прошлый пост в этой теме), то имеет место 1) увеличение площади в 4-6 раз, и 2) замедление работы от десятков процентов, до нескольких раз - в зависимости от того, как сделана индикация. Объясню подробнее.
1) По площади. На каждый элемент логики требуется вставить парный + двувходовой тестер. Это в среднем троекратное увеличение площади. Далее, как вы хотите строить схему индикации (СD)? Если на С-элементах, то более-менее реально использовать 3-х входовые и иметь увеличение площади 3.5-4х, а если делать сжатие на стандартных элементах (на библиотеках 65нм и ниже обычно число входов не более 3-х), то площадь увеличивается уже в 5-6 раз. Очень много зависит от разрядности шин и слоев логики внутри схемы.
Я как-бы стандартных библиотек в высокопроизводительной части схемы не использую. Вся вычислительная система построена на dual-rail domino, потому четырех-фазный протокол туда встроен по умолчанию. Схемы индикации CD сделаны на основании внутренних сигналов сумматора и не вносят дополнительной задержки в вычисления. Теперь совсем немного о площади. CMOS 32 bit префиксный сумматор на тактовую частоту больше 3GHz у меня сделать не получилось. Может опыта было мало, может руки кривые, но максимум, чего удалось достичь - это 2.5GHz с деревом Когга-Стоуна. При этом внутри сумматора во время спайс-моделирования были видны множественные паразитные переключения. Попытки регулирования мощности отдельных узлов к успеху не привели, поскольку в зависимости от входных данных значения напряжений в разных точках дерева требовались в разное время. Таким образом паразитный свитчинг увеличивал потребление сумматора в 1.5-2 раза по сравнению с расчетным потреблением. Такое вот г... получалось. Теперь картина для префиксного сумматора с деревом моего изобретения, выполненного на dual-rail domino. Паразитный свитчинг внутри отсутствует как факт. Потребление четко совпадает с расчетным. Время пречарджа составляет ~30ps, задержка для самых медленных данных - 150ps, самых быстрых <100ps, средняя задержка - 120-130ps. Итого, имеем более чем в 2 раза быстрый сумматор, занимающий в 1.5 раза больше площади, чем single-rail CMOS. Лейаут не выложу, уж извините
При необходимости, можно было бы разогнать сумматор и до 10GHz, но дальше я уже не вписывался в тепловой пакет. На основании вот этого опыта могу сказать, что задача проектирования супер-быстрых схем иначе как на dual-rail domino не решается. Может быть их можно построить, но потом на них не реально подать питание. Еще можно обсудить требуемую площадь москапов для single-rail и dual-rail с учетом двойного потребления мощности single-rail схем из-за паразитного свитчинга.
Цитата(Shivers @ Sep 21 2014, 15:16)
2) По скорости. Здесь определяющей является как раз размерность логики в слоях. Единственное, где dual rail имеет преимущество перед синхронной схемой, это преобразование инверторов, которое заменяется на перекрестье проводов. Да и то это преимущества является мнимым, поскольку инверторы в синхронных схемах, в большинстве своем, не являются элементом логики, а служат больше для выравнивания transition в нагруженных цепях. Т.е. по большому счету, инверторы лучше оставлять, чем заменять на перекрестья. Все остальное - сплошное замедление схемы по сравнению с синхронной. Посудите сами - входы индикации, это выходы логики. Т.е. dual rail априори медленнее синхронной схемы. А с ростом разрядности логики в слоях это замедление становится сопоставимо с периодом в синхронной схеме. И напоследок самый важный аргумент. Dual rail использует 2-х фазную передачу данных (4-х фазная в западной терминологии). Отсюда следует, что dual rail работает минимум в два раза медленнее синхронной схемы, поскольку фазу данных сменяет фаза спейсера.
Как я уже писал в предыдущем посте, у каждого вида асинхронных схем есть свое применение. Dual rail с полной индикацией не годится для high perfomance. Можно делать квази схемы и они с некоторой натяжкой могут потягаться с синхронными. Но в целом во всем мире для производительности используют bundled delay схемы (пайплайны сазерленда).
Когда первый раз знакомишься с асинхронными схемами, их возможности захватывают. И только когда влезаешь в эту тематику с головой, многие неочевидные с первого взгляда вещи сильно отрезвляют.
В соей системе я использовал совсем даже не пайплайн Сазерденда. В случае классического пайплайна Сазерденда мне не понравилось количество регистров, которые пришлось вставить по ходу. По факту у меня мой собственный пайплайн с немного хитрым управлением, выполненным на асинхронных one-hot burst-mode стейт машинах. На пост-лейаут симуляции увидел, что немного ошибся с задержками в стейт-машинах, а потому пречарджи немного "торчат", уменьшая эффективную скорость вычисления. Переделывать уже не хочется, поскольку в требуемую производительность вписались, а переделывать в кастоме все надо руками.
По моей оценке, процессор на dual-rail domino уровня Intel Core i7 в кастоме занимал бы немного больше, или столько же площади в кремнии, но при этом мог бы потреблять сильно меньше мощности. Единственное почему асинхронные системы не получили очень широкого распространения - это неготовность production тулзов. Кастом - это очень хорошо, но действительно большой проект силами небольшой группы людей не выпилить.
Еще плохо, что специалистов в асинхронном дизайне практически нет. К вам, господин
Shivers, последнее утверждение не относится
Все, с кем я говорил, имеют за плечами теоретические знания, но практического опыта работы нет. У людей стойкие стереотипы, что асинхронная схема сложнее, хуже верифицируется и медленнее синхронного аналога. Исходя из моего опыта, правильным является только первое утверждение.