Однотактная синхронизация против двухтактной
В сентябре 1979 г. в лаборатории спец-ЭВМ кафедры вычислительной техники КПИ под руководством Ю.С.Каневского приступили к системной отладке самого скоростного в стране опытного образца процессора БПФ, собранного из 2000 микросхем серии К155. Отладка шла, в целом, успешно. Но процессор упорно отказывался работать стабильно. Как ни меняли конструкцию системы синхронизации, как не варьировали период и скважность синхросерии - данные нет-нет, да проскакивали лишний уровень регистров. Было принято кардинальное решение - заменить все асинхронные регистры ТМ5 на синхронные ИР1. Т.е. заменить двухтактную синхронизацию на однотактную. Второе решение - никогда больше в лаборатории Ю.С.Каневского не применять двухтактную синхронизацию… А отлаженный и испытанный процессор еще несколько лет надежно работал где-то на Дальнем Востоке.
Проектирование микросхем и в частности, систем на кристалле (СНК) характеризуется тем, что ошибка в проекте обходится слишком дорого, а ее локализация в микросхеме и выяснение ее причин очень затруднительны. Поэтому основным правилом проектирования является то, что поведение ВУ в кристалле должно быть предсказуемым. В вычислительной технике используются, в основном, два принципа синхронизации вычислительных устройств (ВУ): двухтактной и однотактной синхронизации. Эти принципы обеспечивают различный уровень предсказуемости поведения ВУ и их необходимо рассмотреть подробнее. В вычислительном устройстве можно выделить группы регистров и триггеров, которые образуют уровни, причем при их соответствующем тактировании информация передается от одного уровня к другому, претерпевая по пути обработку в логических схемах. При двухтактной синхронизации соседние уровни регистров и триггеров синхронизируются различными синхросигналами (рис. 1).
Благодаря двухтактной синхронизации, триггеры могут быть выполнены по простейшей электрической схеме, т.е. как асинхронные, принимающие данные по уровню синхросерии. Для правиль ной работы ВУ прием данных в соседних уровнях триггеров должен выполняться в разных активных фазах синхросигналов CLK1 и CLK2. При перекрытии этих фаз (пример перекрытия выделен цветом на рис. 1) возможна ситуация неправильного приема данного и даже прохождения данного через несколько уровней триггеров без запоминания. Поэтому фазы синхросерий выполняют с защитным временным промежутком между ними. Задержки в линиях соединений могут превосходить задержки в логических схемах и триггерах. Эти задержки трудно выполнить нормированными в заданных пределах, а при реализации в ПЛИС – это почти невозможно. Поэтому принцип двухтактной синхронизации применяется только тогда, когда защитный промежуток между фазами достаточно велик. А это приводит к существенному уменьшению быстродействия ВУ по сравнению с максимально возможным. Если в ВУ применяются RS – триггеры и другие асинхронные триггеры, например, защелки, то такое ВУ необходимо отнести к схеме с двухтактной синхронизацией. Даже если в такой схеме используется один синхросигнал, то второй синхросигнал присутствует неявно. Например, его могут получать инвертированием первого синхросигнала. При разработке проектов для ПЛИС двухтактная синхронизация практически никогда не применяется, так как трудно получить проект с гарантированной работоспособностью. Но, например, в блоке распределенной памяти, выполненном на LUT, такая синхронизация использована: по фронту синхросигнала записываются адрес и данное в защелки, а по его спаду – данное переписывается в триггер – защелку памяти. Но LUT разрабатывался с таким расчетом, чтоб его поведение было предсказуемым при любой прошивке ПЛИС, и чтобы пользователь воспринимал эту память как синхронную. Кстати, в первых ПЛИС эта память была асинхронной и необходимо было вводить дополнительные временные ограничения на сигналы, чтобы она работала корректно. В некоторых ВУ используется асинхронный способ вычислений на логическом уровне, благодаря чему понижается энергопотребление до минимума. Но разработка таких ВУ не поддерживается стандартными САПР и тем более - САПР для ПЛИС. Двухтактная синхронизация относится к асинхронному управлению. Другим случаем такого управления является асинхронная начальная установка или сброс триггеров ВУ. Если сигнал сброса не согласован по времени с синхросигналом или если в схеме используются несколько сигналов сброса, то она может функционировать некорректно. Например, после сброса, состояние управляющего автомата, следующее за начальным, может быть случайным, если задержка между сигналом сброса и фронтом синхросерии слишком мала. Для избежания этого в ПЛИС организована шина глобального сброса, подводящая сигнал сброса-установки ко всем триггерам почти одновременно. При однотактной синхронизации все триггеры ВУ выполнены как синхронные и тактируются фронтом одного синхросигнала (рис. 2). При этом условием правильности функционирования ВУ является неравенство критической задержки: max(TTi+TDi,j + TПj ± ?TCi,j) < TC, (1) i,j где TTi – задержка от фронта синхросигнала до выхода i-го триггера, TDi,j – задержка сигнала в логических схемах и линиях связи между i –м и j – м триггером, TПj – время предустановки сигнала на входе j-го триггера относительно фронта синхросигнала, ?TCi,j - относительная задержка между синхросигналами, приходящими на эти триггеры, называемая перекосом фазы (clock skew), TC – заданный период синхросигнала, при условии, что время удержания сигнала на входе триггера ТУ удовлетворяет заданным ограничениям. В современных микросхемах сеть передачи синхросигнала от источника до всех триггеров выполняется с особой тщательностью и она обеспечивает минимальный перекос фаз, находящийся в пределах допустимого. Благодаря этому, формула (1) упрощается до следующей формулы: max(TTi+TDi,j + TПj ) < TC . (2) i,j Временной анализ проектов микросхем Предсказание правильности поведения ВУ с однотактной синхронизацией во всех САПР микросхем основано, прежде всего, на временном анализе задержек схемы ВУ, который выполняет программа временного анализа. Эта программа по известным задержкам между всеми элементами проекта ВУ, включая задержки в проводниках, выполняет проверку условия (2). Также вычисляются задержки от входных выводов микросхемы до входов триггеров и от выходов триггеров до выходных выводов микросхем. Задержки определяются как маршруты между вершинами графа схемы ВУ, дуги которого нагружены соответствующими задержками вентилей или проводников. Во многих ВУ используются сложные логические схемы, которые можно представить многовершинными двудольными графами с большим числом ребер. В этом случае количество маршрутов, по которым определяются задержки, представленных ребрами в двудольном графе, может достигать многих миллионов. Из-за перебора всех маршрутов временной анализ ВУ может длиться довольно долго. Если в ВУ существует перекос фаз, то временной анализ усложняется, так как он выполняется по более сложной формуле (1). Во многих САПР автоматический учет перекоса фаз не выполняется или проводится только для отдельно выбранных маршрутов. Если ВУ состоит из нескольких связанных между собой модулей, в пределах которых действуют разные синхросерии, то дополнительно проверяется условие (1), в котором ?TCi,j - относительная задержка между фронтами двух синхросерий, а задержки определяются по маршрутам сигналов между парами блоков. Часто, операнд записывается в триггер i и хранится в нем несколько тактов, в течение которых сигнал операнда распространяется через логическую схему до триггера j, в который операнд записывается также через несколько тактов. Очевидно, что такой маршрут желательно удалить из временного анализа или анализировать отдельно, так как через него практически никогда не проходит критическая задержка. Такие маршруты выделяют в виде множества многотактовых маршрутов (multicycle paths), называемых также ложными маршрутами (false paths). В результате временного анализа подтверждается, что схема ВУ работает с однотактной синхронизацией, что в ней отсутствуют критические перекосы фаз, а также фиксируются критический путь и его задержка, которые характеризуют быстродействие ВУ. Это быстродействие обычно выражается величиной минимального тактового периода TCmin, определяемого левой частью формулы (1) или максимальной тактовой частотой fmax = 1/TCmin. Стадия размещения вентилей логической схемы по площади кристалла и трассировки межсоединений является ответственным этапом проектирования микросхемы и прошивки ПЛИС, так как от нее зависят все основные характеристики СНК. В то же время, это одна из самых трудоемких стадий. Она сводится к серии последовательных приближений к эффективному варианту размещения в плоскости микросхемы графа соединения вентилей (рис. 27). Одним из критериев оптимизации размещения и трассировки является минимум задержки критического пути. На основе временного анализа выполняется автоматическая оптимизация быстродействия схемы ВУ путем сокращения длины найденных критических путей. Поэтому для ускорения и улучшения оптимизации желательно минимизировать количество проверяемых маршрутов, например, отмечая многоцикловые маршруты и выделяя критические маршруты, требующие оптимизации. Конвейеризация вычислений, которая сводится к "расщеплению" сложных логических схем промежуточными конвейерными регистрами, существенно (от десятков до тысяч раз) сокращает число проверяемых маршрутов. Поэтому в конвейерных ВУ достигается прирост производительности не только благодаря укорачиванию маршрутов, но и за счет улучшения работы программы, оптимизирующей проект ВУ. Исходя из вышеизложенных особенностей проектирования микросхем, разработчики фирм – производителей микросхем предлагают следующие рекомендации : Þ Применять только однотактную синхронизацию и желательно, только один синхросигнал. Þ Если в ВУ используется несколько синхросигналов, в том числе один сигнал, но со срабатыванием по фронту и спаду, то минимизировать их число, а их распространение ограничить отдельными модулями – по одному синхросигналу на модуль; синхросигналы генерировать в одном, предназначенном для этого модуле. Þ Не допускать существенных перекосов фаз. Þ Минимизировать количество проверяемых маршрутов, в частности, выделением множества многоцикловых маршрутов и конвейеризацией ВУ. Þ Отделять быстродействующие блоки от медленных блоков и оптимизировать их раздельно. Þ Обеспечить запоминание в регистрах модулей ВУ выходных сигналов, а еще лучше – и входных сигналов. Благодаря этому, не только ускоряется временной анализ, повышается максимальная тактовая частота, но и упрощается стыковка модулей между собой, упрощаются условия повторного использования модулей (вычислительных заготовок). Þ Реализовать преимущественно синхронные начальные установку или сброс триггеров, особенно в схемах управления. Þ При реализации в ПЛИС желательно все триггеры выполнить с асинхронным сбросом или установкой по одному сигналу. |
< a href = "mailto:%20kvantn@ukrpack.net"> E-mail: aser@comsys.ntu-kpi.kiev.ua