Я слышал термин ЦП с одним циклом и пытался понять, что на самом деле означает ЦП с одним циклом. Есть ли четкое согласованное определение и консенсус, а также что это значит?
Некоторые домашние процессоры с одним циклом, с которыми я сталкивался, похоже, используют как нарастающие, так и спадающие фронты тактовых импульсов для выполнения одной инструкции. Обычно передний фронт действует как выборка / декодирование, а задний фронт - как выполнение.
Однако, читая, я натолкнулся на разумную мысль, сделанную здесь ...
https://zipcpu.com/blog/2017/08/21/rules-for-newbies.html
"Do not transition on any negative (falling) edges.
Falling edge clocks should be considered a violation of the one clock principle,
as they act like separate clocks.".
Мне это кажется правдой.
Необходимость как нарастающего, так и спадающего фронтов (или высокой и низкой фазы) фактически то же самое, что необходимость нарастающего фронта двух циклов одного тактового сигнала, который работает в два раза быстрее; и это будет двухтактный процессор, не так ли.
Итак, можно ли утверждать, что проект представляет собой ЦП с одним циклом, когда для изменения состояния активно используются как нарастающий, так и спадающий фронт?
Казалось бы, настоящий однотактный ЦП должен выполнять все операции изменения состояния на единственном фронте тактового сигнала в единственном тактовом цикле.
Я могу представить, что такое возможно, если все данные будут храниться синхронно. Если у нас есть синхронная система, которая установилась, то на следующем фронте тактового сигнала мы можем синхронизировать результаты в синхронном хранилище данных и одновременно синхронизировать счетчик программы на следующий адрес.
Но если целевым хранилищем данных является, например, асинхронное ОЗУ, то линии управления наверняка будут меняться, пока эти данные хранятся, что приведет к непреднамеренному поведению.
Я ошибаюсь, есть ли примеры ЦП с одним циклом, которые включают в себя асинхронное хранилище?
Казалось бы, использование асинхронной ОЗУ в одной конструкции означает, что для изменения состояния необходимо использовать как минимум два логических тактовых цикла.
Конечно, с некоторой большей сложностью можно было бы добавить процессор, который использует единственное ребро, где инструкции используют только компоненты синхронизации, но полагаются на дополнительный цикл при сохранении в асинхронные данные; но тогда это все равно будет не однотактный ЦП, а, скорее, однотактный ЦП в основном.
Таким образом, ни один ЦП, который записывает в асинхронное ОЗУ (или другой асинхронный компонент), честно говоря, не может считаться ЦП с одним циклом, потому что вся инструкция не может быть выполнена на одном фронте тактовой частоты. Запись в ОЗУ требует двух фронтов (т. Е. Падающего и восходящего), и это нарушает принцип единой тактовой частоты.
Итак, существует ли общепринятый одноцикловый ЦП и применяем ли мы этот термин последовательно?
В чем дело?
(Также опубликовано в моем журнале hackday https://hackaday.io/project/166922-spam-1-8-bit-cpu/log/181036-single-cycle-cpu-confusion, а также в частной группе в hackaday)
=====
Обновление: глядя на простые MIP, кажется, что модели используют синхронную память и поэтому, вероятно, могут работать с одним краевым объявлением, возможно, так оно и есть - поэтому гарантируется один цикл категории. И, возможно, память FPGA всегда синхронна - я не знаю об этом.
Но используется ли этот термин непоследовательно в других местах - например, в большинстве Homebrew TTL Computers?
Или я просто ошибаюсь?
====
Обновлять :
Некоторые могли неправильно понять мою точку зрения.
Многочисленные домашние процессоры TTL заявляют о статусе процессора за один цикл (не интересны для целей этого обсуждения более сложные звери, которые выполняют конвейерную обработку или что-то еще).
Под одним циклом эти процессоры обычно означают, что они делают что-то вроде продвижения ПК на одном фронте тактовой частоты, а затем используют противоположный край тактовой частоты для обновления триггеров с результатом. ИЛИ они будут использовать другую фазу часов для обновления асинхронных компонентов, таких как защелки и sram.
Однако ссылка на ZipCPU, которую я предоставил, предполагает, что использование противоположного фронта тактовой частоты сродни использованию второго тактового цикла или даже второго тактового сигнала. Кстати, Бен Пожиратель в своих видео даже сравнивает перевернутые часы, которые он использует для обновления своего SRAM, с вторыми часами.
Мое возражение против использования одноциклового ЦП с такими ЦП (в основном, большинство / все домашние ЦП TTL, которые я видел, поскольку все они работают таким образом), заключается в том, что я согласен с ZipCPU, который использует противоположный край (или фазу) часов. для фиксации фактически то же самое, что и использование вторых часов, и это насмехается над утверждением одного цикла.
Если использование противоположного фронта фактически то же самое, что и использование одного фронта, но с двумя тактовыми циклами, тогда я думаю, что использование термина сомнительно. Так что я принимаю точку зрения ZipCPU близко к сердцу и сокращаю этот термин до обозначения использования единственного ребра.
С другой стороны, кажется вполне возможным построить ЦП, который использует только компоненты синхронизации (то есть триггеры, запускаемые по фронту) и который использует только один край, где на каждом краю мы синхронизируем все, что находится на шине, с любым устройством, выбранным для пишите и одновременно продвигайте ПК. Между одной кромкой и следующей кромкой того же направления происходит оседание.
Таким образом, мы получаем CPI = 1 и используем только один край, что очень сильно отличается от обычного шаблона ЦП TTL с использованием обоих фронтов тактовой частоты.
Кстати, мое впечатление от FPGA (о котором я здесь не говорю) заключается в том, что все элементы памяти в FPGA являются синхронными триггерами. Я не знаю, но это то, что подсказывает мое прочтение. В любом случае, если это правда, то тривиальный ЦП на базе FPGA, вероятно, имеет CPI = 1 и использует только, скажем, положительный край, и поэтому они вполне могут соответствовать моему узкому определению одноциклового ЦП. Кроме того, мое чтение предполагает, что различные имплименты MIP (вероятно, образовательные усилия), вероятно, соответствуют моему определению.