
- •Руководство по настройке производительности
- •Аппаратная иерархия
- •Жесткие диски
- •Оперативная память
- •Конвейер и регистры
- •Программная иерархия
- •Исполняемые программы
- •Обработчики прерываний
- •Ожидающие нити
- •Нити, готовые к выполнению
- •Нити, выполняемые в данный момент
- •Инструкции, выполняемые в настоящий момент
Нити, выполняемые в данный момент
Планировщик выбирает для выполнения нить, которая имеет максимальные потребности по использованию ресурсов процессора. Алгоритм выбора нитей для их передачи на выполнение описан в разделе Планировщик CPU - Обзор. Когда нить передается на выполнение, восстанавливается то состояние процессора, которое было в тот момент, когда ее выполнение было в последний раз прервано.
Инструкции, выполняемые в настоящий момент
Большинство машинных инструкций выполняются за один такт процессора, если при обращении к TLB или кэшу не возникнет промах. Однако если часто выполняется переход к различным частям программы, а данные считываются из различных областей памяти, то при обращении к TLB и кэшу возникает большое число промахов. В результате число тактов процессора, затрачиваемых на выполнение одной инструкции (CPI), может быть намного больше единицы. В этом случае говорят, что в программе ссылки расположены не компактно. Даже если программа содержит небольшое число инструкций, на их выполнение может быть затрачено довольно много тактов процессора. Это одна из причин, по которой нельзя оценить время выполнения программы, подсчитав число инструкций. Как правило, чем короче программа, тем быстрее она выполняется, однако размер программы не прямо пропорционален времени ее выполнения.
Компилятор оптимизирует код программы таким образом, чтобы минимизировать число тактов процессора, необходимых на выполнение программы. Для того чтобы добиться максимальной производительности программы, нужно предоставить компилятору полную информацию, необходимую для эффективной оптимизации, а не строить предположения о том, какой способ оптимизации будет выбран компилятором (за дополнительной информацией обратитесь к разделу Повышение эффективности работы препроцессоров и компиляторов). Настоящим показателем производительности может служить только скорость обработки конкретной рабочей схемы.