Что произойдет, если тактовый цикл заменить постоянным высоким напряжением в процессоре?

Будут ли данные в регистрах изменяться со скоростью света и, возможно, станут нестабильными/неопределенными, или процессор вообще перестанет изменять состояние?

Этот пост говорит :

Чтобы дать всем гейтам время изменить состояние из всей цепочки, мы используем часы. Часы являются входом для ЦП, переключающегося между 0 и 1 (сигнал становится низким, сигнал становится высоким, сигнал становится низким и т. д.), что заставляет ЦП выполнять операции.

В этой статье говорится :

Если увеличить тактовую частоту до 100 ГГц, цикл будет равен 0,01 наносекунды... Что происходит, когда это ограничение размера нарушается? Что происходит, так это то, что некоторые части вашей схемы находятся в «текущем» цикле, а другие части — в «предыдущем» цикле. С такими распределенными системами становится очень сложно работать.

Но тогда этот пост говорит :

это просто остановится

Так что я запутался в результате.

Если я представлю себе простое timer registerподключение к сумматору, и каждый такт его данные обрабатываются ++1, не означает ли постоянный высокий уровень, что данные регистра циклически проходят через сумматор и возвращаются к себе со скоростью света, добавляя сами к себе бесконечно? а не останавливаться?

именно то, что происходит, зависит от того, имеете ли вы дело с динамическим или статическим процессором, но в любом случае это не принесет ничего полезного.
light speedне является мерой временного интервала, если не указано расстояние
Если вы остановите часы, вы остановите процессор и все остальное, зависящее от этих часов.
@user1850479 user1850479 это та часть, которую я пытаюсь понять более подробно. Куда подаются часы (0 или 1)? это вход для ворот, чтобы потенциально изменить свое состояние на основе других входов?
Вы можете думать о часах как о входных данных для ворот, которые сообщают им, что пришло время обновить. Если вы перестанете просить их обновиться, они ничего не сделают.
Нужно сопротивляться искушению ответить одним словом «Ничего».
Действительно хорошее (хотя и очень многословное) объяснение основ того, как часы управляют цифровой схемой, дано в книге Чарльза Петцольда 1999 года «Код: скрытый язык компьютерного оборудования и программного обеспечения». Я настоятельно рекомендую эту книгу, если вы хотите узнать, как все работает из первого принципа.
Вполне возможно создать асинхронную последовательную цифровую систему, используя квитирование связи между подсистемами. Мастер-часы не требуются. Однако обычно это медленнее и сложнее, чем использование основных часов, поэтому этот метод используется редко.
Реальные процессоры, такие как тот, что установлен на вашем рабочем столе, будут постоянно останавливать часы на простаивающих ядрах. Это очень распространенная функция энергосбережения.

Ответы (5)

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

Как уже указывал кто-то другой, такие сети могут изменять состояние только вследствие фронта тактового сигнала, т. е. перехода тактового сигнала.

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

РЕДАКТИРОВАТЬ (Чтобы ответить на некоторые комментарии OP @Dan)

  • Вы продолжаете упоминать «скорость света», но вы действительно должны выбросить этот термин из своей системы.

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

    Соотнести их совсем не тривиально (куча движущихся зарядов не обязательно совпадает с кучкой «движущихся» битов).

  • Асинхронная (т.е. «бестактовая») логика теоретически быстрее, потому что устройства могут реагировать, не дожидаясь фронта тактового сигнала. Это не означает, что одно устройство «бесконечно» быстрое. С той же технологией и той же сложностью схемы избавление от часов просто экономит время, которое некоторые устройства с синхронизацией тратят впустую на ожидание фронта часов, когда их входы уже «готовы». Это не увеличивает скорость переключения состояний одного транзистора. Таким образом, у вас все еще будут задержки распространения. ( https://en.wikipedia.org/wiki/Асинхронная_схема#Асинхронная_схема ).

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

    Вы можете найти это интересным:
    https://en.wikipedia.org/wiki/Asynchronous_circuit#Asynchronous_CPU .

Таким образом, часы (запускаемые положительным или отрицательным фронтом) подобны выключателю. Когда он включается (или выключается), происходит действие, и результат сохраняется в памяти. Значение часов также может быть использовано для получения значения результата, но основная цель заключается в том, чтобы действовать как переключатель включения/выключения. И это так. Чтобы дать всем гейтам время изменить состояние всей цепочки, мы используем часы . Я предполагаю, что можно спроектировать последовательные схемы с памятью без часов, но это становится сложно проектировать, как говорится в этом сообщении electronics.stackexchange.com/a/66065 , поэтому дизайнер просто выбрал легкий путь?
т.е. возможно разработать последовательные схемы с памятью, которые работают со скоростью света (без часов), но это легче сказать, чем сделать? Я знаю, что комбинационные схемы (такие как простой элемент ИЛИ на микросхеме) не имеют часов и просто дают вам прямой вывод на основе ввода.
Чтобы добавить, часы также могут управлять перемещением битов между сдвиговыми регистрами или использоваться в таймере. Я предполагаю, что некоторые из них можно сделать без часов, но, как объясняется в приведенной выше ссылке, это усложняется.
Да, "асинхронная логика" - вещь. Нет, это не скорость света: основным ограничением является емкость, представленная проводами и управляемыми затворами. См. «Задержка Элмора» для упрощенной модели. Подробнее об асинхронности см. на async.org.uk .
Верно, задержка распространения - это реальная вещь, выходы вентилей не устанавливаются в памяти мгновенно, поэтому часы облегчают все это, давая им время для установления. Это также помогает в других аспектах схемотехники, например, в том, как работают сдвиговые регистры, «сдвигая» биты каждый такт.
@ pjc50: Более серьезная проблема с асинхронной логикой заключается в том, что у нее нет «хорошего» способа обработки условий гонки. Если две задачи должны будут что-то сделать с общей шиной, будет трудно избежать либо требования, чтобы X ждала Y, даже если X была бы готова первой, либо того, чтобы Y ждала X, даже когда Y была бы готова первой. Использование синхронной логики позволяет гарантировать, что и X, и Y согласованы, поскольку Y был готов раньше, чем X.
@Dan Термин «задержка распространения» сочетает в себе два эффекта. Есть задержка линии передачи, связанная со скоростью света (в конкретном материале, который НЕ совпадает со скоростью света в вакууме). И время линейного изменения, время, в течение которого транзисторный выход переключается между двумя напряжениями. Обычно элементы схемы расположены достаточно близко друг к другу, поэтому время нарастания и спада является доминирующим фактором внутри компьютерного процессора. Выйдите за пределы этого чипа, в сеть связи, и эффекты линии передачи станут очень важными.

Часы должны переходить от низкого уровня к высокому и повторяться в регулярном порядке.

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

Это включает в себя «сверхвысокое» напряжение (оно, вероятно, будет повреждено).

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

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

Именно переходы часов сигнализируют процессору «выполнить следующий шаг». Низкий-высокий переход или край (устаревший), а также верхний-низкий край (современный) теперь оба что-то делают.

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

Тактовые фронты должны использоваться, потому что они являются последовательными , и эти фронты должны быть разделены некоторым количеством времени, чтобы позволить «шагу» полностью распространиться или завершиться до того, как начнется следующий. «Разгон» — это увеличение тактовой частоты выше нормального значения. Типичная тактовая частота включает в себя запас прочности, поэтому обычно ее можно несколько увеличить. Его увеличение заставляет процессор работать интенсивнее, поэтому для продолжения работы обычно требуется небольшое повышение напряжения. Но слишком большое увеличение тактовой частоты в конечном итоге приведет к нарушению этих временных интервалов, особенно во всех возможных диапазонах температур.

Но я привел пример с "таймером". Почему он останавливается вместо того, чтобы работать со скоростью света (и потенциально повреждать все свои данные и переходить в неопределенное поведение). Постоянный высокий уровень означает, что все движется по какой-то цепи.
@Dan: синхронный счетчик (подобный тому, что вы найдете в своем регистре таймера) не считает, когда часы высокие (или низкие). Он учитывается, когда происходит фронт тактового сигнала (либо при переходе тактового сигнала от низкого к высокому, либо от высокого к низкому). В противном случае это вообще бы не сработало - часы остаются высокими всю половину цикла и низкими для другой половины. Это будет «считать со скоростью света», как вы говорите, за половину цикла.
Таким образом, операция может происходить на любом краю (высоком или низком), т.е. процессор не работает только при высоком уровне. Высокий или низкий тактовый сигнал является дополнительным входом для защелок/транзистора, и их состояние может меняться на любом фронте в зависимости от типа вентилей, т.е. И/ИЛИ/НЕ и т. д. Постоянный высокий или низкий уровень означает, что мы выполняем операцию, и мы навсегда застреваем. в этом состоянии. Все это правильно?
@ Дэн читал о шлепанцах. Это основной строительный блок последовательной цифровой логики. Часы немного похожи на машину с кривошипной рукояткой. Вы поворачиваете ручку, и что-то происходит. Не крутит и ничего не происходит.
Да, в идеальной логической системе с часами изменения состояния происходят только по фронту часов. Таким образом, если часы останавливаются, система остается в своем текущем состоянии навсегда, даже если входные данные меняются. Хотя многие системы имеют асинхронный сброс, который работает независимо от часов.
Правильно, я также имею в виду триггеры и более крупные компоненты, состоящие из них. Просто хочу подтвердить, что операции происходят на обоих краях, высоком или низком (не только высоком). Часы не являются переключателем для включения или отключения схемы. Часы представляют собой шаблон 0 и 1, используемый в качестве входных данных для всех компонентов. Итак, скажем, часы равны 1, а другое входное состояние триггера равно 1, теперь определенный логический элемент И также будет выводить 1, иначе он выдаст 0 (он выведет один из них либо на высоком, либо на низком уровне), и это произойдет в каждый высокий и низкий пульс, как на этом изображении: i.imgur.com/8nvLI1Y.png , я прав?
@dan, хотя схема, которую вы показываете, логически верна, я не понимаю, как она применима в этом контексте. Ваша схема представляет собой комбинаторную задержку. Погуглите, как сделать счетчик из шлепанцев — есть два основных метода.
извините за путаницу, изображение - это просто скриншот из видео на YouTube, объясняющего эту концепцию, подумал, что это может быть полезно.
@rdtsc Я ищу более конкретные примеры, чем просто clock helps with transitions. Как оно это делает? часы представляют собой непрерывный образец 1 и 0. Подаются ли 1 и 0 в ворота в качестве одного из их входов, чтобы потенциально изменить свое состояние на основе других их входов?
Именно переход от 1 к 0 и/или от 0 к 1 выполняет работу. Просто сидеть на единице или нуле означает, что ничего не происходит.
@ Дэн «кормил ворота»: да .. внутри триггера. Не какая-либо другая комбинационная логика. Вы можете думать о триггере как о паре защелок, одна из которых включена в одной половине цикла, а другая — в другой, поэтому он может изменять свой вывод только во время перехода.
@Dan Высокое и низкое - это не края. Переходы от низкого к высокому и от высокого к низкому являются ребрами. Переходы — это то, где что-то происходит. Сами по себе высокое и низкое состояния имеют значение только в том смысле, что вам нужно как минимум два состояния, чтобы вообще иметь переходы!
@ Дэн Ты все еще не понимаешь сути. На самом деле, называя это «часами», это должно быть ясно, потому что напряжение, повышающееся и понижающееся, во всех отношениях идентично тому, как маятник часов движется назад и вперед. Если вы остановите маятник часов от движения вперед и назад, продолжат ли стрелки двигаться, чтобы отсчитывать секунды? Ясно, что нет. И электроника таймера не продолжает двигаться, если напряжение перестает двигаться вперед и назад.
@Graham Я добавил свои последние мысли по этому поводу в этом комментарии: electronics.stackexchange.com/a/605734/305610
Поскольку в этом ответе также упоминаются динамические соображения, я хотел бы добавить, что процессоры часто имеют внутренние PLL, поэтому приостановка внешнего источника синхронизации фактически не остановит внутренние часы, а вызовет их резкое отклонение от частоты.

Обычно мне не нравятся аналогии с водой для электричества, но...

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

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

В синхронных схемах у нас есть так называемые цифровые схемы, которые на самом деле являются аналоговыми схемами, притворяющимися, что они следуют хорошим правилам чистого цифрового дизайна. Цифровые схемы имеют особенность, называемую « помехоустойчивостью».": высокий логический уровень или низкий логический уровень представляют собой диапазон напряжений. Что касается цифрового разработчика, нет существенной разницы между высоким логическим уровнем 2,6 В и 2,8 В, если он находится в диапазоне напряжения VIH входного сигнала. гарантированно обрабатывает его как высокий логический уровень. Но базовая схема состоит из транзисторов, и всякий раз, когда она переключается между высоким и низким уровнями, она должна переключаться между всеми напряжениями между ними. Реальные схемы не переключаются мгновенно. Так что Для установления правильного значения сигнала требуется некоторый конечный период времени, который называется задержкой распространения .. Сложите все времена задержки распространения всех различных элементов комбинационной логической схемы, через которые должен пройти сигнал, и это определяет самый короткий (самый быстрый) период синхронизации, который может выдержать схема. Работа на более высокой тактовой частоте не даст внутренней комбинационной логике достаточно времени, чтобы всегда достигать правильного значения. Он всегда имеет какое-то значение, просто не гарантируется, что оно будет правильным , пока не пройдет все время задержки распространения.

Существует множество факторов, определяющих требуемое время задержки распространения. Некоторые из них зависят от номинальных расчетных значений, таких как емкостная нагрузка, сопротивление проводов и тому подобное. Эти факторы зависят от законов физики, формы и размеров материалов, других характеристик материалов и температуры; поэтому мы можем оценить задержку распространения. Но в выпускаемых устройствах есть небольшие вариации от одного блока к другому. В 1970-х годах эти производственные допуски не были такими жесткими, как сегодня, но все еще существуют некоторые непредсказуемые различия от одного устройства к другому. Таким образом, это привело к тенденции компьютерного хобби под названием «разгон», о чем вы, кажется, спрашиваете.

Энтузиасты разгона в основном шли на небольшой риск, модифицируя свой персональный компьютер для работы с более высокой тактовой частотой, например, запуская процессор с частотой 6 МГц на частоте 8 МГц. Это не гарантирует работу. Также не гарантируется очевидный сбой, что может быть хуже, чем если бы это не сработало сразу. Если вы запускали большую симуляцию, и была какая-то небольшая необнаруженная ошибка в вычислениях, которая происходит только после того, как она выполнила кучу больших вычислений и получила горячую точку, то вы можете не знать, что получили плохой результат. С другой стороны, если вы используете его только для игр, никакого вреда не будет. Тем не менее, даже такой хак, как разгон, по-прежнему должен обеспечивать постоянно меняющийся тактовый вход. Простое подключение тактового входа «всегда низкий» или «всегда высокий» — это не какое-то волшебство.

Вот еще немного подробностей о том, во что на самом деле входит тактовый сигнал. Простейшей идеей синхронной логической схемы может быть конечный автомат, состоящий из нескольких D-триггеров и логических вентилей. Все D-триггеры получают тактовый сигнал. Выходы триггеров управляют входами лабиринта логических элементов, а выходы запутанной логики возвращаются на входы D-триггеров. Таким образом, существует своего рода петля обратной связи, но триггеры прерывают эту петлю обратной связи, налагая временную дисциплину. Триггер в значительной степени игнорирует все, что происходит на его входных данных, пока только передний фронт тактового сигнала не, а затем внезапно выходные данные меняются в соответствии со значением входных данных. Это происходит очень быстро, в идеале это похоже на снимок входных данных и непрерывное управление этим значением до конца тактового цикла. Если бы триггер постоянно обновлял свои выходы, чтобы соответствовать своим входам, пока на входе тактового сигнала был высокий уровень, это не был бы триггер; это будет прозрачная защелка. И нам нужны триггеры, а не прозрачные защелки, чтобы строить конечные автоматы.Нет никаких изменений на заднем фронте часов. В конце концов комбинационная логика определяет новое значение для входов триггера. Но единственный способ, которым машина «узнает» о том, что новое значение прибыло, - это то, что происходит нарастающий фронт часов. Это то, что управляет процессом обновления значения регистра, так что остальная логика может начать вычисление следующего шага. Это основной принцип работы всех конечных автоматов и всей другой синхронной логики.

Часы синхронизируют работу всех внутренних компонентов любого процессора. Если он останавливается (или становится постоянно высоким), процессор тоже должен просто остановиться. По крайней мере микроконтроллер 8051 так себя ведет. Он определенно не будет «разгонять» процессор (он же не будет работать максимально быстро). Все неприятные побочные эффекты, такие как очистка/изменение регистров, неопределенное состояние и т. д., тоже могут произойти.

Часы остановлены: если регистры и логика статичны, машина сохраняет свое состояние. Если они динамические, состояние в конечном итоге будет повреждено или потеряно.

(Динамическая логика используется в некоторых архитектурах для уменьшения площади. Как и в случае с DRAM, для обновления своего состояния она должна циклически обновляться. Она была более распространена в эпоху NMOS, хотя до сих пор используется в CMOS.)

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

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

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