Перекос часов (иногда называемый временным перекосом ) — явление в синхронных цифровых системах (например, компьютерных системах), при котором один и тот же исходный тактовый сигнал поступает на разные компоненты в разное время из-за задержки распространения сигнала в затворе или, в более продвинутой полупроводниковой технологии , задержки распространения сигнала по проводам . Мгновенная разница между показаниями любых двух часов называется их перекосом.
Работа большинства цифровых схем синхронизируется периодическим сигналом, известным как « часы », который диктует последовательность и темп работы устройств в схеме. Эти часы распределяются из одного источника по всем элементам памяти схемы, которые, например, могут быть регистрами или триггерами . В схеме, использующей регистры, запускаемые фронтом, когда фронт или тик тактового сигнала поступает в регистр, регистр передает вход регистра на выход регистра, и эти новые выходные значения проходят через комбинационную логику , чтобы предоставить значения на входах регистра для следующего тика тактового сигнала.
В идеале входные данные для каждого элемента памяти достигают своего конечного значения вовремя для следующего такта часов, так что поведение всей схемы может быть точно предсказано. Максимальная скорость, с которой может работать система, должна учитывать дисперсию, которая возникает между различными элементами схемы из-за различий в физическом составе, температуре и длине пути.
В синхронной схеме два регистра, или триггера, называются «последовательно смежными», если их соединяет логический путь. При наличии двух последовательно смежных регистров R i и R j с временем прибытия тактовых импульсов на исходный и целевой тактовые выводы регистра, равным T C i и T C j соответственно, перекос тактовых импульсов можно определить как: T skew i, j = T C i − T C j .
Перекос часов может быть вызван многими различными факторами, такими как длина межсоединения проводов, колебания температуры, колебания промежуточных устройств, емкостная связь , несовершенство материалов и различия во входной емкости на входах часов устройств, использующих часы. По мере увеличения тактовой частоты схемы синхронизация становится более критичной, и для правильной работы схемы допустимы меньшие колебания.
Существует два типа перекоса часов: отрицательный перекос и положительный перекос . Положительный перекос возникает, когда регистр-получатель получает такт часов позже, чем регистр-передатчик. Отрицательный перекос — это противоположность: регистр-передатчик получает тик часов позже, чем регистр-получатель. Нулевой перекос часов относится к поступлению тика часов одновременно в регистр-передатчик и регистр-получатель. [1]
Существует два типа нарушений, которые могут быть вызваны перекосом часов. Одна проблема возникает, когда часы достигают первого регистра, а тактовый сигнал ко второму регистру движется медленнее, чем выход первого регистра во второй регистр — выход первого регистра достигает входа второго регистра быстрее и, следовательно, синхронизируется, заменяя начальные данные во втором регистре или, возможно, разрушая целостность защелкнутых данных. Это называется нарушением удержания , потому что предыдущие данные не удерживаются достаточно долго в триггере назначения, чтобы быть правильно синхронизированными. Другая проблема возникает, если триггер назначения получает такт часов раньше, чем триггер источника — у сигнала данных гораздо меньше времени, чтобы достичь триггера назначения до следующего такта часов. Если этого не происходит, происходит нарушение настройки , так называемое, потому что новые данные не были установлены и стабильны до прибытия следующего такта часов. Нарушение удержания более серьезно, чем нарушение настройки, потому что его нельзя исправить путем увеличения периода часов. Положительный и отрицательный перекос не могут отрицательно влиять на ограничения времени установки и удержания соответственно (см. неравенства ниже).
Когда сигнал широко тактирует схему, сигналы/переходы состояний, которые он инициирует, должны быть стабилизированы до того, как он подаст сигнал о другом наборе переходов состояний, и это ограничивает верхнюю частоту тактового сигнала. Таким образом, перекос уменьшает тактовую частоту, на которой схема будет работать правильно. Для каждого исходного регистра и регистра назначения, соединенных путем, должны соблюдаться следующие неравенства установки и удержания:
где
Положительный перекос часов хорош для исправления нарушений настройки, но может вызвать нарушения удержания. Отрицательный перекос часов может защитить от нарушения удержания, но может вызвать нарушение настройки.
В приведенных выше неравенствах один параметр, J , используется для учета джиттера . Этот параметр должен быть верхней границей для разницы в джиттере по всем парам исходный регистр/регистр назначения. Однако, если известна структура сети распределения тактовых импульсов, разные пары исходный регистр/регистр назначения могут иметь разные параметры джиттера, и для ограничения удержания может использоваться разное значение джиттера в отличие от значения для ограничения настройки. Например, если исходный регистр и регистр назначения получают свои тактовые сигналы из общего соседнего буфера тактовых импульсов , граница джиттера для этого ограничения удержания может быть очень мала, поскольку любое изменение этого тактового сигнала будет одинаково влиять на два регистра. Для того же примера граница джиттера для ограничения настройки должна быть больше, чем для ограничения удержания, поскольку джиттер может меняться от такта к такту. Если исходный регистр получает свой тактовый сигнал из листового буфера сети распределения тактовых сигналов, который находится далеко от листового буфера, питающего целевой регистр, то предельный уровень джиттера должен быть больше, чтобы учесть различные пути тактовых сигналов к двум регистрам, которые могут иметь различные источники шума, связанные с ними.
Рисунки 1 и 2 иллюстрируют ситуацию, когда преднамеренный перекос часов может принести пользу синхронной схеме. [2] В схеме с нулевым перекосом на рисунке 1 длинный путь идет от триггера FF1 к триггеру FF2, а короткий путь, такой как путь регистра сдвига, от FF2 к FF3. Путь FF2 -> FF3 опасно близок к нарушению удержания: если даже небольшая дополнительная задержка часов происходит в FF3, это может уничтожить данные на входе D FF3 до того, как часы прибудут, чтобы синхронизировать их на выход Q FF3. Это может произойти, даже если FF2 и FF3 были физически близки друг к другу, если их входы часов случайно пришли из разных листовых буферов сети распределения часов.
На рисунке 2 показано, как можно исправить проблему с помощью преднамеренного перекоса часов. Небольшая дополнительная задержка вставляется перед входом часов FF2, что затем безопасно позиционирует путь FF2 -> FF3 вдали от нарушения удержания. В качестве дополнительного преимущества эта же дополнительная задержка часов ослабляет ограничение настройки для пути FF1 -> FF2. Путь FF1 -> FF2 может работать правильно с периодом часов, который меньше того, что требуется для случая нулевого перекоса часов, на величину, равную задержке добавленного буфера задержки часов.
Распространенное заблуждение о преднамеренном смещении часов состоит в том, что оно обязательно более опасно, чем нулевой смещение часов, или что оно требует более точного контроля задержек в сети распределения часов. Однако именно схема нулевого сдвига на рисунке 1 ближе к неисправности — небольшое количество положительного сдвига часов для пары FF2 -> FF3 вызовет нарушение удержания, тогда как схема преднамеренного сдвига на рисунке 2 более терпима к непреднамеренным изменениям задержки в распределении часов.
Если время прибытия часов в отдельные регистры рассматривать как переменные, которые необходимо скорректировать, чтобы минимизировать период часов, удовлетворяя неравенствам установки и удержания для всех путей через схему, то результатом будет задача линейного программирования . [3] В этой линейной программе нулевой перекос часов является просто допустимой точкой - решение линейной программы обычно дает период часов, который меньше того, что достигается при нулевом перекосе. Кроме того, запасы безопасности, большие или равные случаю нулевого перекоса, можно гарантировать, установив соответствующим образом время установки и удержания и границу джиттера в линейной программе.
Благодаря простой форме этой линейной программы доступен легко программируемый алгоритм для нахождения решения. [2] Большинство систем автоматизированного проектирования для проектирования СБИС и ПЛИС содержат средства для оптимизации перекосов тактовой частоты.
В дополнение к перекосу тактовой частоты из-за статических различий в задержке тактовой частоты от источника тактовой частоты до каждого тактируемого регистра, ни один тактовый сигнал не является идеально периодическим, так что период тактовой частоты или время цикла тактовой частоты изменяется даже в одном компоненте, и это изменение известно как дрожание тактовой частоты . В определенной точке в распределительной сети тактовой частоты дрожание является единственным фактором, вносящим вклад в неопределенность синхронизации тактовой частоты.
В качестве приближения часто бывает полезно обсудить общую неопределенность синхронизации часов между двумя регистрами как сумму пространственного сдвига часов (пространственные различия в задержке часов от источника часов) и дрожания часов (имеется в виду непериодичность часов в определенной точке сети). К сожалению, пространственный сдвиг часов меняется во времени от одного цикла к другому из-за локальных временных изменений в источнике питания, локальной температуре и шумовой связи с другими сигналами.
Таким образом, в обычном случае отправки и получения регистров в разных местах нет четкого способа разделить общую неопределенность синхронизации часов на пространственный перекос и джиттер. Таким образом, некоторые авторы используют термин «перекос часов» для описания суммы пространственного перекоса часов и джиттера часов. Это, конечно, означает, что перекос часов между двумя точками меняется от цикла к циклу, что является сложностью, о которой редко упоминают. Многие другие авторы используют термин «перекос часов» только для пространственного изменения времени часов и используют термин «джиттер часов» для обозначения остальной части общей неопределенности синхронизации часов. Это, конечно, означает, что джиттер часов должен быть разным для каждого компонента, что опять же редко обсуждается.
К счастью, во многих случаях пространственный сдвиг часов остается довольно постоянным от цикла к циклу, так что остальную часть общей неопределенности синхронизации часов можно хорошо аппроксимировать одним общим значением дрожания часов.
В сети, такой как Интернет , перекос часов описывает разницу в частоте ( первая производная смещения по времени) различных часов в сети. [4] Сетевые операции, требующие временных меток , которые сопоставимы между хостами, могут быть затронуты перекосом часов. Ряд протоколов (например, Network Time Protocol ) были разработаны для уменьшения перекоса часов и обеспечения более стабильных функций. Некоторые приложения (например, игровые серверы ) также могут использовать свой собственный механизм синхронизации, чтобы избежать проблем с надежностью из-за перекоса часов.
Расфазировка тактовой частоты является причиной того, что на высоких скоростях или больших расстояниях последовательные интерфейсы (например, Serial Attached SCSI или USB ) предпочтительнее параллельных интерфейсов (например, Parallel SCSI ). [ необходима цитата ]