Другие языки программирования и технологии

Каждая инструкция в процессоре работает на своей частоте или инструкции не привязаны строго к частоте?

Каждый процессор работает на частоте, которая указана в его ТТХ. Но бывает, что процессоров в одной системе больше одного и они разные по задачам, которые на них решаются. Одни энергоэффективные, другие отличаются резвостью за счёт повышенного потребления э/э
Тактовая частота процессора – частота синхронизирующих импульсов электронной схемы, которые поступают извне на вход схемы за секунду. Чем она выше, тем больше операций выполняет вычислительная машина
Как вариант, есть процессоры, в которых ТЧ может меняться (Турбо режим)
Бронислав Сиротюк
Бронислав Сиротюк
99 932
Лучший ответ
Если говорить про CISC-процессоры (Intel и AMD), то каждая инструкция в нём - это программа на микрокоде, встроенном в процессор. При этом CISC-инструкция разбивается на несколько этапов выполнения, каждый этап выполняется отдельным аппаратным блоком процессора, а процессор одновременно выполняет разные этапы сразу нескольких инструкций - конвейер.

В результате, каждая инструкция выполняется несколько тактов, но сколько именно - зависит не только от неё, но и от соседних инструкций, т.к. разные инструкции используют разные комбинации блоков процессора и выполнение текущей инструкции может быть приостановлено на несколько тактов - если нужный блок процессора в данный момент занят предыдущей инструкцией.

И, кстати, разные процессорные блоки работают на разной частоте: какие-то блоки требуют больше энергии и потому всегда работают на меньшей частоте - чтобы не перегревать процессор.
Инструкция на частоте? Смысл этого высказывания - в чём?

Процессор содержит несколько исполняющих узлов (юнитов) и работает тактами. За один такт каждый узел обрабатывает одну микрооперацию. Бывают архитектуры, где простенький юнит может выполнить, например, два сложения за такт. Юниты обычно специализируются, например арифметика и логика, вычисление адреса, загрузка операнда из памяти. Некоторые операции могут подаваться на юниты разных типов: например, сложение может вычисляться как на арифметическом, так и на адресном юните. Вещественная арифметика, SSE и т.п. - это всегда отдельные юниты. Все юниты работают на одной частоте, в том и смысл, что если операция на некотором такте завершена, то на следующем можно воспользоваться её результатами.

Сложные операции могут занимать несколько тактов, например, деление в общем случае требует 20-30 тактов.

Некоторые юниты представляют собой мини-конвейер, например, в современных Интелах умножение может занимать 2-3 такта, но юнит может принимать следующую операцию уже на следующем такте.

И юниты не выполняют инструкции, они выполняют микрооперации. Например:
 ADC RAX, [RBP+8] 
разбивается примерно на 4 микрооперации (вычисление адреса, загрузка операнда, сложение, сложение с переносом), которые могут перемешиваться с микрооперациями от других инструкций. Процессор вычисляет зависимости по данным и может исполнять микрооперации не в том порядке, в котором их инструкции содержатся в памяти. А скажем, загрузка операнда из памяти DDR4 может занимать 1 такт (если он в L1) или десятки или сотни тактов (если его нет ни в одном из кэшей, и смотря, какие тайминги у памяти). Поэтому выяснять, с какой частотой исполняются инструкции, бессмысленно.
Инструкции не привязаны строго к частоте процессора. Каждая инструкция обычно имеет свой собственный тайминг, который определяет сколько тактов процессора потребуется на её выполнение. Это позволяет процессору работать на переменной частоте, в зависимости от количества инструкций, которые он должен выполнить за определенный промежуток времени. Например, если процессор включает в себя несколько ядер, то каждое ядро может работать на разных частотах, что позволяет достичь более эффективного использования ресурсов процессора.
ЮИ
Юрий Иванов
1 542

Похожие вопросы