В компьютерной архитектуре железный закон производительности процессора (или просто железный закон производительности) описывает компромисс производительности между сложностью и количеством примитивных инструкций , которые процессоры используют для выполнения вычислений. [1] Эта формулировка компромисса стимулировала разработку [ требуется ссылка ] компьютеров с сокращенным набором инструкций (RISC), чьи архитектуры наборов инструкций (ISA) используют меньший набор основных инструкций для повышения производительности. Термин был придуман Дугласом Кларком [2] на основе исследований, проведенных Кларком и Джоэлом Эмером в 1980-х годах. [3]
Производительность процессора — это время, необходимое для выполнения программы: . Это можно дополнительно разбить на три фактора: [4]
Выбор архитектуры набора инструкций влияет на , тогда как во многом определяется технологией производства. Классические сложные компьютерные наборы инструкций (CISC) ISA оптимизированы за счет предоставления большего набора более сложных инструкций ЦП . Однако, говоря в общем, сложные инструкции увеличивают количество тактовых циклов на инструкцию, поскольку они должны быть декодированы в более простые микрооперации, фактически выполняемые оборудованием. После преобразования двоичного кода X86 в микрооперации, используемые внутри, общее количество операций близко к тому, что производится для сопоставимой RISC ISA. [5] Железный закон производительности процессора делает этот компромисс явным и подталкивает к оптимизации в целом, а не только одного компонента.
Хотя железный закон считается толчком к развитию архитектуры RISC, [ требуется ссылка ] это не означает, что более простая ISA всегда быстрее. Если бы это было так, самая быстрая ISA состояла бы из простой двоичной логики. Одна инструкция CISC может быть быстрее, чем эквивалентный набор инструкций RISC, когда она позволяет выполнять несколько микроопераций за один такт. На практике, однако, регулярность инструкций RISC допускает конвейерную реализацию, в которой общее время выполнения инструкции составляло (обычно) ~5 тактов, но каждая инструкция следовала за предыдущей инструкцией ~1 такт позже [ требуется ссылка ] . Процессоры CISC также могут достигать более высокой производительности, используя такие методы, как модульные расширения, предиктивная логика, сжатые инструкции и слияние макроопераций. [6] [5] [7]