Инструкции за такт: показатель производительности процессора
Instructions per cycle
Инструкции за такт (IPC) – ключевой показатель производительности процессора. Узнайте, как IPC, параллелизм и оптимизация инструкций влияют на скорость CPU.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Среднее количество выполненных инструкций за такт
The average number of instructions executed for each clock cycle
В компьютерной архитектуре количество инструкций за такт (IPC), обычно называемое инструкциями за цикл, является одним из аспектов производительности процессора: среднее количество инструкций, выполненных за каждый такт. Это величина, обратная количеству тактов на инструкцию.
In computer architecture, instructions per cycle (IPC), commonly called instructions per clock, is one aspect of a processor's performance: the average number of instructions executed for each clock cycle. It is the multiplicative inverse of cycles per instruction.
Пояснение
В то время как ранние поколения процессоров выполняли все шаги для выполнения инструкции последовательно, современные процессоры способны выполнять множество операций параллельно. Поскольку дальнейшее простое увеличение тактовой частоты невозможно, были разработаны конвейеризация команд и суперскалярная архитектура процессоров, позволяющие использовать различные вычислительные устройства параллельно, предварительно анализируя поступающие инструкции для их оптимизации. Это приводит к тому, что количество выполняемых инструкций за такт значительно превышает 1 и является причиной значительного увеличения производительности в последующих поколениях процессоров.
While early generations of CPUs carried out all the steps to execute an instruction sequentially, modern CPUs can do many things in parallel. As it is impossible to just keep doubling the speed of the clock, instruction pipelining and superscalar processor design have evolved so CPUs can use a variety of execution units in parallel looking ahead through the incoming instructions in order to optimise them. This leads to the instructions per cycle completed being much higher than 1 and is responsible for much of the speed improvements in subsequent CPU generations.
Расчет IPC
Расчет IPC выполняется путем запуска определенного фрагмента кода, вычисления количества машинных инструкций, необходимых для его завершения, а затем использования высокопроизводительных таймеров для определения количества тактов, необходимых для его выполнения на конкретном оборудовании. Окончательный результат получается делением количества инструкций на количество тактов процессора. Количество инструкций в секунду и операций с плавающей точкой в секунду для процессора можно получить, умножив количество инструкций на такт на тактовую частоту (такты в секунду, измеряемые в Герцах) данного процессора. Количество инструкций в секунду является приблизительным показателем ожидаемой производительности процессора. Количество инструкций, выполняемых за такт, не является постоянной величиной для конкретного процессора; оно зависит от того, как конкретное программное обеспечение взаимодействует с процессором и, в целом, со всей системой, особенно с иерархией памяти. Однако определенные особенности процессора, как правило, приводят к конструкциям с более высоким, чем средний, значением IPC: наличие нескольких арифметико-логических устройств (АЛУ – это подсистема процессора, способная выполнять элементарные арифметические и логические операции) и короткие конвейеры. При сравнении различных наборов инструкций более простой набор инструкций может давать более высокий показатель IPC, чем реализация более сложного набора инструкций с использованием той же чиповой технологии; однако более сложный набор инструкций может выполнять больший объем полезной работы с меньшим количеством инструкций. Поэтому сравнение показателей IPC между разными наборами инструкций (например, x86 и ARM) обычно не имеет смысла.
The calculation of IPC is done through running a set piece of code, calculating the number of machine level instructions required to complete it, then using high performance timers to calculate the number of clock cycles required to complete it on the actual hardware. The final result comes from dividing the number of instructions by the number of CPU clock cycles. The number of instructions per second and floating point operations per second for a processor can be derived by multiplying the number of instructions per cycle with the clock rate (cycles per second given in Hertz) of the processor in question. The number of instructions per second is an approximate indicator of the likely performance of the processor. The number of instructions executed per clock is not a constant for a given processor; it depends on how the particular software being run interacts with the processor, and indeed the entire machine, particularly the memory hierarchy. However, certain processor features tend to lead to designs that have higher than average IPC values; the presence of multiple arithmetic logic units (an ALU is a processor subsystem that can perform elementary arithmetic and logical operations), and short pipelines. When comparing different instruction sets, a simpler instruction set may lead to a higher IPC figure than an implementation of a more complex instruction set using the same chip technology; however, the more complex instruction set may be able to achieve more useful work with fewer instructions. As such comparing IPC figures between different instruction sets (for example x86 vs ARM) is usually meaningless.
Скорость компьютера
Полезная работа, которую можно выполнить на любом компьютере, зависит от множества факторов, помимо скорости процессора. К этим факторам относятся архитектура набора команд, микроархитектура процессора и организация компьютерной системы (например, конструкция системы хранения данных и возможности и производительность других подключенных устройств), эффективность операционной системы и высокоуровневая разработка прикладного программного обеспечения. Для пользователей и покупателей компьютеров, более полезным показателем производительности системы, чем количество инструкций в цикле, обычно являются эталонные тесты приложений. Однако IPC демонстрирует, почему тактовая частота – не единственный фактор, влияющий на производительность компьютера.
The useful work that can be done with any computer depends on many factors besides the processor speed. These factors include the instruction set architecture, the processor's microarchitecture, and the computer system organization (such as the design of the disk storage system and the capabilities and performance of other attached devices), the efficiency of the operating system, and the high level design of application software. For computer users and purchasers, application benchmarks, rather than instructions per cycle, are typically a much more useful indication of system performance. However, IPC does provide an example of why clock speed is not the only factor relevant to computer performance.