Один из способов повышения производительности компьютера- это повышение их тактовой частоты, однако при этом существует технологические ограничения. Прежде всего, это выделение тепла при работе центрального процессора. Чем выше частота, тем больше выделяется тепла. Поэтому большинство разработчиков для повышения производительности используют параллелизм (выполнение двух и более операций одновременно). Существуют 2 основные формы параллелизма: на уровне команд и на уровне процессоров. В первом случае параллелизм реализуется за счет запуска большого количества команд каждую секунду. Во втором случае над одним заданием работают одновременно несколько процессоров.
Параллелизм на уровне команд.
Этапы выполнения одной команды центральным процессором:
1) Вызывает следующую команду из памяти и переносит её в регистр команд(регистр команд это регистр процессора, который служит для хранения команды, которая выполняется в данный момент времени).
2) Меняет положение счетчика команд, который после этого указывает на следующую команду.
3) Определяет тип вызванной команды.
4) Если команда использует слово из памяти, определяет, где находится это слово.
5) Переносит слово, если это необходимо в регистр центрального процессора.
6) Выполняет команду
7) Переходит к первому пункту.
Для распараллеливания операций используются конвейерная и суперскалярная технологии. Конвейеризация позволяет организовать параллельную обработку нескольких инструкций в одном исполнительном блоке. Суперскалярная технология позволяет произвести пространственное распараллеливание- по нескольким исполнительным блокам (конвейера). Обе технологии используются в комбинации. При конвейеризации процесс выполнения инструкции раскладывается на стадии (число стадий n- длинна конвейера). Каждая из которых выполняется за один такт, причем в конвейере одновременно обрабатывается несколько инструкций, так что результат выполнения очередной инструкции выдается на каждый такт. Производительность при этом тем больше, чем конвейер длиннее, но чем длиннее конвейер, тем выше вероятность останова. Поэтому обычно ищется некая компромиссная длинна конвейера, при которой выигрыш от распараллеливания все ещё превосходит издержки от остановов. Для того, что бы снизить потери от остановов из-за нарушения порядка операций при условных переходах применяется предсказание переходов, основанная на анализе уже осуществленных переходов.