Возможно, я не думаю об этом правильно, но когда вы даете ЦП команду, такую как Multiply Registers (MR) R2, R4, как он решает, какие логические элементы он будет использовать, это только первые доступные элементы или есть что-то? Я не знаю, что происходит под капотом. Я понимаю, что процессор имеет миллионы логических элементов, так как он правильно управляет их использованием?
2 ответа
Ваш вопрос действительно больше относится к электротехнике, чем к информатике, так что это немного не по теме, но я посмотрю, что я могу сделать.
Ваша команда умножения будет помещена в очередь в арифметический процессор на одном из его входных / выходных соединений.
В своей компоновке ALU использует комбинационную логику , так что электричество протекает по всей цепи, а его выход изменяется в зависимости от полученного входного сигнала. Он не выбирает набор затворов для использования, все затворы получают сигнал, но компоновка схемы создает воспроизводимое преобразование входного сигнала, несущего результат. Обратите внимание, что на этом уровне вы работаете как с аналоговым сигналом, так и с цифровыми битами, поэтому электричество течет, как вода, по сети труб, и схема позволяет пропускать больше или меньше воды по разным путям.
Модуль исполнения, управляющий инструкцией, отправляет ему АЛУ для обработки и на следующем тактовом такте ожидает, что результат будет доступен в одном из выходных регистров АЛУ. подробности смотрите здесь: https://en.wikipedia.org/wiki/Arithmetic_logic_unit#Circuit_operation
Проще говоря, именно команда, которую вы запускаете сама, определяет состояния транзистора и, следовательно, используемые логические элементы. Он увидит серию байтов, и эта серия эффективно конфигурирует начальное состояние процессора. Это намного сложнее на современных процессорах с несколькими исполнительными блоками, но это суть.
Когда процессор запустится, он будет по адресу 0 и поместит этот адрес на адресную шину. Затем он будет ожидать появления байтов с адресом 0 на своих входных данных. Затем он сообщит процессору начальное состояние, в котором он должен находиться, чтобы он мог затем поместить следующее адресное местоположение на адресную шину и дождаться следующего байта и так далее.
Скоро у него будет полная команда, и байты, которые ему нужно будет умножить вместе. Все эти байты будут эффективно "настраивать" ядро процессора на задачу, которую необходимо выполнить.
Получив полную команду вместе с необходимыми байтами данных, введенными в регистр, он может затем продолжить выполнение необходимой команды и после циклического перебора последовательности необходимых логических переходов выдаст результат.