2016-08-06 13 views
4

Я немного смущен точным определением «машинного цикла».Что такое машинный цикл?

Например, некоторые source онлайн сказать, что это:

четыре шага, которые процессор осуществляет для каждой команды на машинном языке: выборка, декодирование, выполнение и магазин.

Хотя книга Programming the Z80, которая якобы имеет хорошую репутацию, говорит:

Мы видели, что все команды выполняются в три этапа: FETCH, DECODE, EXECUTE. Теперь нам нужно ввести некоторые определения. Для каждой из этих фаз потребуется несколько тактов. Z80 выполняет каждую фазу в одном или нескольких логических циклах, называемых «машинным циклом».

Теперь то, что меня смущает вот что - от того, что я понял - первый в основном говорит: Машина цикл выборки-декодирования-выполнить цикл, в то время как книга в основном говорит: Машина цикл - это один или более - тактовый цикл, который происходит в каждом цикле выборки, декодирования или выполнения отдельно.

Итак, что это?

+0

https://en.wikipedia.org/wiki/Instruction_cycle – YOU

+0

@YOU Да, я прочитал это, и это то, что я показываю в первом примере. Значит ли это, что определение книги неверно? –

+0

первый говорит «шаги». он явно не называет эту концепцию. –

ответ

6

z80 имеет две разные концепции «цикла». Различие имеет значение, поскольку z80 является многоцикловой архитектурой и использует как несколько тактовых циклов на «шаг», так и (часто) несколько «шагов» для каждой инструкции.

«Шаги» называются машинными циклами (M-циклы), они выполняют «высокоуровневые» задачи, такие как чтение из памяти, выполнение операции ALU и т. Д. Комплексные инструкции, такие как inc (iy+42), принимают много машинных циклов, для декодирования префикс, основной код операции, чтение смещения, добавление его к iy, выполнение инкремента и запись результата. Условные скачки даже имеют различное количество М-циклов, они опускают M-цикл, который делает это фактическое прыжко, если условие ложно.

Каждый M-цикл затем принимает несколько (3-6) тактовых циклов (или T-цикл или T-состояние, эта терминология в основном умерла, если не ссылаться на старые многоцилиндровые процессоры). Например, чтение в памяти будет занимать 3 цикла, декодирование кода операции обычно занимает 4, некоторые внутренние операции занимают 5, а 16-битные приращения, как представляется, расширяют OCF на другие 2 цикла.

Это все довольно z80-специфическое.

В другом месте термин «машинный цикл» используется для обозначения своего рода «полного отключения» инструкции от начала до конца. Это не то, что будет означать в контексте z80.

+0

Педантичность: условный 'JP' стоит одинаково независимо от того, взята ли ветка; 'JR',' CALL' и 'RET' имеют переменную синхронизацию, поэтому, почему я классифицирую этот комментарий, возможно, не столь необходимый. «CALL» интересен, хотя: в документации он решает, будет ли он выполнять вызов до того, как он закончит чтение операнда и выдает дополнительное состояние ожидания в третий выбор байта, только если ему нужно настроить SP. Таким образом, он загружает дополнительную работу в существующий машинный цикл (хотя, вероятно, это встраивается как выбор другого машинного цикла). – Tommy

3

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

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


первый в основном говорит: Машина цикл выборки-декодирования-выполнение цикла

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

Цикл тактовой частоты процессора или машинный цикл представляет собой цикл низкого напряжения на высокое напряжение и обратно. https://en.wikipedia.org/wiki/Clock_signal. CPU использует этот тактовый вход для синхронизации различных этапов.

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

Консолидированный процессор будет пытаться сохранить свои различные этапы одновременно, вместо того, чтобы ждать завершения одной инструкции перед декодированием (или, возможно, даже извлечением) следующего. См. https://en.wikipedia.org/wiki/Classic_RISC_pipeline

+0

Спасибо за это легкое объяснение. Но я думаю, что это чистое/абстрактное определение машинного цикла, верно? Если да, то какой из двух приведенных мной примеров верен? Потому что из того, что я понял, они работают одинаково, как вы только что объяснили. –

+0

@ Abd-ElrhmanEid: Обновлен, чтобы ответить на конкретный вопрос. Я в основном отвечал за титул в первый раз. –