Конвейер - это метод организации вычислений, применяемый в современных процессорах и контроллерах с целью улучшения их производительности (увеличения количества функций, выполняемых в единицу времени), технология, применяемая при разработке компьютеров.
Идея заключается в разбиении обработки компьютерного алгоритма на очередность независимых стадий с сохранением итогов в конце каждой стадии. Это разрешает управляющим цепям процессора получать команды со скоростью самой медленной стадии обработки, но при этом намного быстрее, чем при выполнении одной полной обработки каждого алгоритма от начала до конца.
Сам термин «конвейер» впервые был применен на производстве, где использовался аналогичный принцип работы - продукт автоматически подтягивался по непрерывно движущейся ленте к рабочему, который выполнял над ним ряд необходимых действий, далее другой рабочий совершал другие действия; так продолжалось до тех пор, пока продукт не пройдет все стадии и не будет готов.
По итогу каждый рабочий выполнял свою «команду» за определённое время, сохраняя при этом высокий темп производства. В процессорах роль рабочих исполняют функциональные модули, входящие в состав процессора.
Простейшая конфигурация совмещения выполнения функций во времени была впервые представлена в машине «Z3» Конрада Цузе в 1941 году.
Ламповая малая ЭЦВМ «Урал» (1957 год, СССР) имела двухступенчатый конвейер операций.
Многостадийные конвейеры в современном представлении были реализованы в машине Анатолия Ивановича Китова «М-100» (1959 год, СССР), UNIVAC LARC (1960 год, США), IBD Stretch (1961 год, США), Atlas (1962 год, Великобритания) и БЭСМ-6 (1967 год, СССР).
Требования к современным технологиям растут и ожесточаются с каждым днем, поэтому подавляющее большинство пользователей современных компьютеров создает огромный спрос на процессоры с большой производительностью. Как ее добиться? Немаловажной составляющей является время, за которое процессор обрабатывает данные.
При нахождении оптимальной длины процессорного конвейера можно добиться наилучшей производительности процессора.
Таким образом, целью данной работы становится оптимизация длины процессорного конвейера по критерию минимума времени выполнения приложений.
Для достижения поставленной цели необходимо решить ряд задач:
1. Проанализировать возможные варианты построения процессоров и изучить связь между структурой процессорного конвейера (однородный/неоднородный) и временем выполнения каждого (однородного/неоднородного) набора команд;
2. Рассмотреть процесс обработки однородным процессорным конвейером различных типов потоков команд (однородный и неоднородный) и найти время обработки каждого набора команд;
3. Выполнить сравнительный анализ процессов обработки процессорным конвейером потоков команд с перезагрузкой (из -за неверного предсказания переходов) и без перезагрузки конвейера.
В работе проанализированы виды процессорных конвейеров и особенности их работы.
С учетом особенностей работы конвейеров с разными потоками команд решена задача вывода целевой функции, отражающей зависимость производительности конвейера от его параметров, а также решена задача оптимизации данной функции относительно параметра длины конвейера.
В работе найдена зависимость оптимальной длины однородного конвейера для детерминированного и недетерминированного случая с однородным и неоднородным потоком команд от отношения времени выполнения команд к накладным расходам, размера приложения и вероятности перезагрузки.
В случае однородного конвейера с однородным и неоднородным потоком команд без перезагрузки выигрыш от конвейеризации равен удвоенной разности произведению среднего арифметического и среднего геометрического двух величин (см. формулы (1), (2)). В случае однородного процессорного конвейера при однородном потоке команд с перезагрузкой - та же ситуация (см. формулу (3)). А при прочих равных условиях для неоднородного потока команд с перезагрузкой выигрыш от конвейеризации выведен в формуле (4).