Начиная с архитектуры процессора 8085, когда ALU выполняет вычисления, результат возвращается к аккумулятору A на следующем фронте тактового сигнала. Но аккумулятор A напрямую подключен как вход ALU, что если бы частота тактового импульса не увеличивалась достаточно быстро, чтобы вызвать добавление A дважды или много раз, было бы чрезвычайно трудно обнаружить такую ошибку, такая конструкция очень " хрупкий "для меня.
Разве в ALU есть дополнительный регистр для временного сохранения результатов ALU?
https://en.wikipedia.org/wiki/Intel_8085#/media/File:Intel_8085_arch.svg
Ответы:
Как и подозревал @duskwuff, я изучил это. Чтобы ответить на вопрос, 8085 имеет два дополнительных регистра в ALU.
У 8085 есть несколько «скрытых» регистров: 16-битная пара WZ и два 8-битных вспомогательных регистра ALU: ACT и TMP. WZ является частью файла реестра, в то время как ACT, A (аккумулятор) и TMP находятся в самой схеме ALU.
Вот схема того, как работает ALU:
Регистр ACT имеет несколько важных функций. Во-первых, он содержит вход в АЛУ. Это позволяет записывать результаты из АЛУ обратно в аккумулятор без нарушения ввода, что может привести к нестабильности. Во-вторых, ACT может хранить постоянные значения (например, для увеличения или уменьшения, или для десятичной корректировки), не влияя на аккумулятор. Наконец, ACT разрешает операции ALU, которые не используют аккумулятор.
Одним интересным следствием установки ALU 8085 является то, что значение может быть загружено в аккумулятор только после прохождения через ALU.
Подробная информация о наборе регистров 8085 находится здесь, а подробная информация об ALU здесь .
источник
В синхронных конструкциях важной задачей дизайнера является обеспечение того, чтобы такие вещи не происходили. Регистр, в который "синхронизируются" данные, имеет определенные динамические свойства, такие как время поднятия часов, время удержания часов, стабильность данных до и после изменения тактового сигнала. Если время нарушено, результирующее состояние не гарантируется.
В вашем конкретном случае ALU имеет задержку распространения, и для добавления A дважды необходимо время, чтобы добавить новое A к предыдущему A в сумматоре и результат появится на его выходе. Скорее всего, было смоделировано и рассчитано, что такое не произойдет в пределах определенного разрешенного диапазона тактовой частоты для устройства. Вот почему таблица данных имеет минимальные и максимальные значения часов. Для 8085A-2 написано:
источник
Аккумулятор является выходным регистром АЛУ.
8085 имеет двухфазные часы. Где инструкция одиночного такта как NOP заняла 2 такта. Подобно 8088, использовавшемуся в оригинальном IBM PC, 8088 имел четырехфазную тактовую частоту 4 МГц и выполнял команды со скоростью 1 МГц.
С двумя фазовыми часами у вас есть два такта генератора для каждого цикла инструкций.
Внутренне, для синхронизации, может использоваться любой фронт любых часов. Часы инвертированы, так что на самом деле для синхронизации доступно четыре часа.
Затем у вас есть прозрачные защелки, которые защелкиваются на падающем фронте, и D-триггеры, которые защелкиваются на нарастающем фронте часов.
Прозрачная защелка позволяет входным данным распространяться на выход, начиная с переднего фронта часов, а значения фиксируются на заднем фронте часов.
У 8085 было много вариантов, когда дело дошло до того, чтобы избежать условий расы распространения.
источник