8085; Почему RET не требует цикла выборки с 6 T-состояниями?

Инструкция CALLтребует 5 машинных циклов, а именно OPCODE-FETCH, MEMORY READ, MEMORY READ, MEMORY WRITE, MEMORY WRITE. Цикл OPCODE-FETCH команды CALL имеет 6 T-состояний для управления уменьшением указателя стека .

RETИнструкция требует 3 машинных цикла , OPCODE-FETCH, MEMORY READ, MEMORY READдаже здесь микропроцессор должен увеличить указатель стека дважды, как и раньше , чтобы вытолкнуть. Но цикл OPCODE-FETCH имеет только 4 T-состояния. Почему?

У меня есть смутное представление, почему; in CALLи PUSHSP должен быть сначала уменьшен, в отличие от RETили POP. Только это первое уменьшение выполняется в последних двух Т-состояниях цикла FETCH. Но зачем для этого нужно два Т-состояния. Опять же, я действительно не уверен в этом. Пожалуйста, помогите.

Ответы (1)

CALLПрежде чем говорить об обучении, было бы полезно еще раз проанализировать обучение RET.

ПОЗВОНИТЕ ИНСТРУКЦИЮ ПО ТЕЛЕФОНУ 8085

Как вы сказали, он состоит из: Opcode Fetch, Memory Read, Memory Read, Memory Write,Memory Write

8085 следует методологии декремента и проталкивания при проталкивании в стек.

Opcode Fetchв 8085 обычно 4 состояния T. Однако для CALLобучения требуется 2 дополнительных состояния T. Это связано с тем, что после выборки и декодирования указатель стека должен быть уменьшен до первого Memory Writeцикла, который сохранит текущий старший разряд ПК в стеке.

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

Memory Readцикл, где адрес ветвления хранится во внутренних регистрах WZ.

Каждый из них Memory Writeимеет 3 Т-состояния, а каждый Memory Readтакже имеет 3 Т-состояния.

Таким образом, всего T состояний = 4 + 2 + 3 + 3 + 3 + 3 = 18.

ИНСТРУКЦИЯ RET В 8085

Он состоит из: Opcode Fetch, Memory Read,Memory Read

Опять же, Opcode Fetchэто 4 Т-состояния. Однако 8085 следует методологии извлечения и увеличения при извлечении из стека. Указатель стека уже указывает на младший бит адреса возврата, поэтому нет необходимости заранее увеличивать указатель.

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

Таким образом, всего T состояний = 4 + 3 + 3 = 10.

Таким образом RET, в , в отличие от , в Opcode Fetchотличие от , в CALL.

Так что моя догадка была верна. Но есть наивный вопрос: почему для декремента требуется 2 Т-состояния?
указатель стека - это просто регистр, для его уменьшения или увеличения требуется только один тактовый цикл или состояние T. Затем значение регистра может быть передано на адресную шину в следующем цикле. Дополнительный цикл должен быть связан с промежуточной регистрацией.
Замечательный ответ. Мне очень понравилась четкость! Я удалил свой невнятный комментарий.