Сегментная и страничная организация доступа к памяти.
Страничная организация памяти (paging) – наиболее распространенная стратегия управления памятью, используемая практически во всех операционных системах, при которой:
- логическая память делится на страницы – смежные области одинаковой длины, обычно – степень 2 (например, 512 слов);
- физическая память, соответственно, делится на фреймы такого же размера;
- распределение логической памяти происходит с точностью до страницы;
- физическая память процесса может не быть непрерывной;
- связь между логической и физической памятью процесса осуществляется с помощью таблицы страниц – системной структуры, выделяемой процессу для трансляции его логических адресов в физические.
Цели страничной организации – обеспечить возможность не смежного распределения физической памяти для процессов, а также расширить пространство логической памяти.
При страничной организации логический адрес обрабатывается системой особым образом – как структура (p, d): его старшие разряды обозначают номер страницы, младшие – смещение внутри страницы. Номер страницы (p) трактуется как индекс в таблице страниц, соответствующий элемент которой содержит базовый адрес начала страницы в физической памяти. Смещение внутри страницы (d) добавляется к ее базовому адресу. В результате формируется физический адрес, передаваемый в устройство управления памятью.
Таким образом, при страничной организации любой доступ к памяти требует фактически не одного, а двух обращений в память – одно в таблицу страниц, другое – непосредственно к данным или команде. В этом – некоторый недостаток и неэффективность страничной организации, по сравнению с более простыми методами управления памятью.
Проблема двух обращений решается введением ассоциативной памяти (cache) страниц, называемой также буфер трансляции адресов (translation lookaside buffer – TLB). Ассоциативная память, по существу, является ассоциативным списком пар вида: (номер страницы, номер фрейма). Ее быстродействие значительно выше, чем у основной памяти и у регистров.
ВСхема трансляции адресов СЃ использованием ассоциативной памяти изменяется: если номер страницы РёР· логического адреса найден РІ кэше, то РёР· ее элемента извлекается соответствующий номер фрейма. Если же номер страницы отсутствует РІ ассоциативной памяти, РѕРЅ выбирается обычным образом РёР· таблицы страниц, РЅРѕ заносится РІ ассоциативную память. Таким образом, РІ ассоциативной памяти накапливается информация Рѕ наиболее часто используемых страницах.
Таблицы страниц в операционных системах могут быть по-разному организованы, при сохранении общих принципов их использования.
Чаще всего используются иерархические таблицы страниц. При их использовании логическое адресное пространство разбивается на несколько таблиц страниц (иначе говоря, используются таблицы таблиц страниц). Наиболее простой и распространенный метод – двухуровневая таблица страниц.
При обычной организации таблицы страниц, логический адрес (для 32-разрядной архитектуры, при размере страницы 4 килобайта = 4096 байтов) разбивается на номер страницы (20 битов) и смещение внутри страницы (12 битов).
ВРџСЂРё двухуровневой организации таблицы страниц, таблица страниц верхнего СѓСЂРѕРІРЅСЏ сама делится РЅР° страницы, поэтому логический адрес будет иметь РІРёРґ: (p1, p2, d), РіРґРµ p1 – индекс РІРѕ внешней таблице страниц, p2 – смещение внутри страницы для внешней таблицы страниц, d – смещение внутри страницы (адресуемой РїРѕ внутренней таблице страниц). РџСЂРё тех же предположениях РѕР± архитектуре Рё размере страницы, p1 Рё p2 Р±СѓРґСѓС‚ занимать РїРѕ 10 битов.
Хешированные таблицы страниц используются, если адресное пространство 64-битное или большей разрядности. Очевидно, что в этом случае, при прямолинейном подходе, размеры таблиц страниц оказались бы слишком велики. Поэтому используется другой метод. Логический номер страницы хешируется (т.е. для него вычисляется хеш-функция). Полученное число (реальный номер страницы) используется как индекс в хеш-оглавлении, ссылающемся на список страниц, хешируемых в один и тот же номер. В найденном таким образом списке и выполняется поиск нужной страницы.
Рнвертированные таблицы страниц. Данный СЃРїРѕСЃРѕР± организации таблиц страниц предназначен для сокращения размеров таблиц страниц. Р’ таблице страниц хранится РѕРґРёРЅ элемент для каждой реальной страницы, находящейся РІ памяти. Рљ логическому адресу добавляется номер процесса (pid) владеющего данной страницей. РџРѕ паре (номер процесса = pid, номер страницы = p) выполняется ассоциативный РїРѕРёСЃРє РІ таблице страниц. Рндекс найденного элемента таблицы i конкатенируется СЃРѕ смещением d внутри страницы, РІ результате получается физический адрес.
Разделяемые (совместно используемые) страницы – логические страницы, используемые несколькими процессами Рё имеющие РѕРґРёРЅ Рё тот же номер РІ таблице страниц каждого РёР· процессов. Данный механизм полезен для СЌРєРѕРЅРѕРјРёРё памяти, так как позволяет загружать РІ память РІ единственном экземпляре РЅРµ изменяемую информацию, необходимую нескольким процессам – например, РєРѕРґ Рё массивы констант.
Сегментная организация памяти (segmentation) - схема распределения памяти в виде сегментов переменной длины, соответствующая пользовательской трактовке распределения памяти, т.е. логической структуре программ и данных. С точки зрения пользователя (разработчика программы), программа – это набор модулей кода и данных, каждому из которых должен соответствовать свой сегмент в памяти.
При страничной организации памяти виртуальное адресное пространство делится на равные части - страницы механически, без учета смыслового значения данных. При сегментном распределении виртуальное адресное пространство процесса делится на части, сегменты, размер которых определяется с учетом смыслового значения содержащейся в ней информации.
ВСегмент – логическая единица распределения памяти, предназначенная для размещения РІ памяти РѕРґРЅРѕРіРѕ модуля программного РєРѕРґР° или данных. Например, РІ РІРёРґРµ сегментов памяти РјРѕРіСѓС‚ быть представлены:
Восновная программа;
Впроцедура;
Вфункция;
Вметод;
Вобъект;
Внабор локальных переменных;
Внабор глобальных переменных;
Вобщий блок данных (например, COMMON-блок РІ языке FORTRAN);
Встек;
Втаблица символов;
Вмассив.
Максимальный размер сегмента определяется разрядностью виртуального адреса, например при 32-разрядной организации – макс=4 гб.
При загрузке процесса часть сегментов помещается в оперативную память, а часть на дисковой памяти. Сегменты одной программы можно записать в несмежные участки.
Многие принципы архитектуры сегментной организации схожи с принципами страничной организации, однако во всех случаях приходится учитывать, что длина сегмента переменна, и хранить ее в явном виде в таблицах.
ВЛогический адрес РїСЂРё сегментной организации памяти - пара:
В<segment-number, offset>,
ВРіРґРµ segment-number – номер сегмента, offset – смещение РІ сегменте.
Таблица сегментов – служит для отображения логических адресов в физические при сегментной организации памяти. Каждый ее элемент содержит начальный адрес сегмента в физической памяти, длину сегмента и признаки защиты.
Базовый регистр таблицы сегментов - содержит адрес таблицы сегментов в памяти.
Регистр длины таблицы сегментов - содержит число сегментов, используемое программой.
Перемещение (relocation) программ и данных при сегментной организации динамическое, т.е. выполняется во время исполнения программы с помощью таблицы сегментов. Возможен общий доступ (sharing) нескольких процессов к одному и тому же сегменту, т.е. поддерживается концепция разделяемых сегментов. При этом логический номер общего сегмента для разных процессов будет одним и тем же.
32.Режимы работы
Реальный режим (Real Mode)
Режим системного управления (System Management Mode)
Защищенный режим (Protected Mode)
Основным режимом работы МП(микропроцессора) является защищенный режим. Ключевые особенности защищенного режима: виртуальное адресное пространство, защита и многозадачность. МП может быть переведен в защищенный режим установкой бита 0 (Protect Enable) в регистре CR0. Вернуться в режим реального адреса МП может по сигналу RESET или сбросом бита PE (в Intel-286 недоступно).
Р’ защищенном режиме программа оперирует СЃ адресами, которые РјРѕРіСѓС‚ относиться Рє физически отсутствующим ячейкам памяти, поэтому такое адресное пространство называется виртуальным. Размер виртуального адресного пространства программы может превышать емкость физической памяти Рё достигать 64Тбайт.
Преобразование логического адреса в физический происходит в два этапа: сначала блок управления сегментами выполняет трансляцию адреса в соответствии с сегментированной моделью памяти, получая 32-битный линейный адрес, а затем блок страничного преобразования выполняет разбиение на страницы, преобразуя 32-битный линейный адрес в 32-битный или 36-битный (P6) физический. МП не предусматривает механизмов запрещения сегментации; с другой стороны, страничная трансляция есть опциональный механизм и может использоваться либо не использоваться в зависимости от особенностей операционной системы.
В рамках сегментированной модели адресации для программы память представляется группой независимых адресных блоков, называемых сегментами. Для адресации байта памяти программа должна использовать логический адрес, состоящий из селектора сегмента и смещения. Селектор сегмента выбирает определенный сегмент, а смещение указывает на конкретный байт в адресном пространстве выбранного сегмента. Селектор сегмента может находиться либо непосредственно в коде команды, либо в одном из сегментных регистров. Смещение также может либо непосредственно находиться в коде команды, либо вычисляться на основе значений регистров общего назначения.
С каждым сегментом связана особая структура, хранящая информацию о нем: дескриптор. Дескриптор - это 8-байтная единица описательной информации, распознаваемая устройством управления памятью в защищенном режиме, хранящаяся в дескрипторной таблице. Дескриптор сегмента содержит базовый адрес описываемого сегмента, предел сегмента и права доступа к сегменту. В защищенном режиме сегменты могут начинаться с любого линейного адреса (который называется базовым адресом сегмента) и иметь любой предел вплоть до 4Гбайт.
Дескрипторные таблицы - это массивы памяти переменной длины, содержащие 8-байтные элементы: дескрипторы. Дескрипторная таблица может иметь длину РѕС‚ 8 байт РґРѕ 64 Кбайт Рё РІ каждой таблице может быть РґРѕ 8192 дескрипторов. Существуют РґРІРµ обязательных дескрипторных таблицы – глобальная дескрипторная таблица (Global Descriptor Table - GDT) Рё дескрипторная таблица прерывания (Interrupt Descriptor Table - IDT), Р° также множество (вплоть РґРѕ 8191) необязательных локальных дескрипторных таблиц (Local Descriptor Table - LDT), РёР· которых РІ каждый момент времени процессору доступна только РѕРґРЅР°. Расположение дескрипторных таблиц определяется регистрами процессора GDTR, IDTR, LDTR.
GDT содержит дескрипторы, доступные всем задачам в системе. GDT может содержать дескрипторы любых типов: и дескрипторы сегментов, и системные дескрипторы (кроме шлюзов прерываний и ловушек). Первый элемент GDT (с нулевым индексом) не используется. Ему соответствует нуль-селектор, обозначающий "пустой" указатель.
LDT обеспечивают способ изоляции сегментов программы и данных исполняемой задачи от других задач. LDT связана с конкретной задачей и может содержать только дескрипторы сегментов, шлюзы вызовов и шлюзы задач.
Сегмент РЅРµ может быть доступен задаче, если его дескриптор РЅРµ существует РЅРё РІ текущей таблице LDT, РЅРё РІ таблице GDT. Рспользование РґРІСѓС…-дескрипторных таблиц позволяет, СЃ РѕРґРЅРѕР№ стороны, изолировать Рё защищать сегменты исполняемой задачи, Р° СЃ РґСЂСѓРіРѕР№ - позволяет разделять глобальные данные Рё РєРѕРґ между различными задачами.
IDT может содержать только шлюзы задач, шлюзы прерываний или шлюзы ловушек.
Для вычисления линейного адреса МП выполняет следующие действия (рис. 4.1):
- МП использует селектор сегмента для нахождения дескриптора сегмента. Селектор содержит индекс дескриптора в дескрипторной таблице (Index), бит TI, определяющий, к какой дескрипторной таблице производится обращение (LDT или GDT), а также запрашиваемые права доступа к сегменту (RPL). Если селектор хранится в сегментном регистре, то обращение к дескрипторным таблицам происходит только при загрузке селектора в сегментный регистр, т. к. каждый сегментный регистр хранит соответствующий дескриптор в программно-недоступном ("теневом") регистре-кэше.
- МП анализирует дескриптор сегмента, контролируя права доступа (сегмент доступен с текущего уровня привилегий) и предел сегмента (смещение не превышает предел);
- МП добавляет смещение к базовому адресу сегмента и получает линейный адрес.
Если страничная трансляция отключена, то сформированный линейный адрес считается физическим и выставляется на шину процессора для выполнения цикла чтения или записи памяти.
Механизм сегментации обеспечивает превосходную защиту, РЅРѕ РѕРЅ РЅРµ очень удобен для реализации виртуальной памяти (подкачки). Р’ дескрипторе сегмента есть Р±РёС‚ присутствия, РїРѕ нему процессор определяет, находится ли данный сегмент РІ физической памяти или РЅР° внешнем запоминающем устройстве (РЅР° винчестере). Р’ последнем случае генерируется исключение #11, обработчик которого может подгрузить сегмент РІ память. Неудобство заключается РІ том, что различные сегменты РјРѕРіСѓС‚ иметь различную длину. Ртого можно избежать, если механизм подкачки реализовывать РЅР° РѕСЃРЅРѕРІРµ страничного преобразования. Особенностью этого преобразования является то, что процессор РІ этом случае оперирует СЃ блоками физической памяти равной длины (4 Кбайт) - страницами. Страницы РЅРµ имеют непосредственного отношения Рє логической структуре программы. РљСЂРѕРјРµ того, РІ РњРџ подсемейства P6 страничная трансляция обеспечивает 36-битную физическую адресацию памяти (64 Гбайт). Страничное преобразование действует только РІ защищенном режиме Рё включается установкой РІ 1 бита PG РІ регистре CR0.
33. Страничная организация – реализация виртуальной памяти.
Каждый компьютер СЃ виртуальной памятью содержит устройство для осуществления отображения виртуальных адресов РЅР° физические. Ртоиустройство называется контроллером управления памятью (MMU – Memory Management Unit).РћРЅ может находиться РЅР° микросхеме процессора или РЅР° отдельной микросхеме СЂСЏРґРѕРј СЃ процессором.РЅРѕР№ микросхеме СЂСЏРґРѕРј СЃ процессором.
Чтобы понять, как работает контроллер управления памятью, рассмотрим при-
мер на рис. 6.4. Когда в контроллер управления памятью поступает 32-битный вир-
туальный адрес, он разделяет этот адрес на 20-битный номер виртуальной страни-
цы и 12-битное смещение внутри этой страницы (поскольку страницы в нашем
примере по 4 К). Номер виртуальной страницы используется в качестве индекса
в таблице страниц для нахождения нужной страницы. На рис. 6.4 номер виртуаль-
ной страницы равен 3, поэтому из таблицы выбирается элемент 3.
Сначала контроллер управления памятью проверяет, находится ли нужная стра-
ница в текущий момент в памяти. Поскольку у нас есть 220 виртуальных страниц и
всего 8 страничных кадров, не все виртуальные страницы могут находиться в па-
мяти одновременно. Контроллер управления памятью проверяет битприсутствия
РІ данном элементе таблицы страниц. Р’ нашем примере этот Р±РёС‚ равен 1. Рто Р·РЅР°-
чит, что страница в данный момент находится в памяти.
РРёСЃ. 6.4. Формирование адреса РѕСЃРЅРѕРІРЅРѕР№ памяти РёР· адреса виртуальной памяти
Далее из выбранного элемента таблицы нужно взять значение страничного кадра
(в нашем примере — 6) и скопировать его в старшие три бита 15-битного выходного
регистра. Нужно именно три бита, потому что в физической памяти находится
8 страничных кадров. Параллельно с этой операцией младшие 12 битов виртуально-
го адреса (поле смещения страницы) копируются в младшие 12 битов выходного регистра. Затем полученный 15-битный адрес отправляется в кэш-память или основную память для поиска.
На рисунке 6.5 показано возможное отображение виртуальных страниц в физические страничные кадры. Виртуальная страница 0 находится в страничном кадре 1.
Виртуальная страница 1 находится в страничном кадре 0. Виртуальной страницы 2 и т.д.
34. Конвейеризация и векторизация обработки данных
Для повышения скорости выполнения команд был придуман конвейер. Команда РІ процессе выполнения РїСЂРѕС…РѕРґРёС‚ целую цепь этапов. Каждое звено цепи обслуживается СЃРІРѕРёРј аппаратным обеспечением Рё процессор ждет, РїРѕРєР° команда пройдет РІСЃСЋ цепь, Р° затем загружает РЅРѕРІСѓСЋ. Смысл конвейера заключается РІ том, что Р±С‹ аппаратное обеспечение РЅРµ простаивало, Р° постоянно работало. Рто достигается тем, что после выполнения команды Рё передачи ее далее, звено принимает Рё выполняет следующую. Таким образом РїСЂРѕРёСЃС…РѕРґРёС‚ частичное временное перекрытие выполнепия нескольких команд, которое зависит РѕС‚ количества звеньев конвейейра. Такой СЃРїРѕСЃРѕР± распараллеливания операций называется конвейеризацией.
Рассмотрим простой конвейер, состоящий РёР· 5 звеньев. Звено выборки команд берет команду РёР· памяти Рё помещает РІ буфер. Звено декодирования определяет тип команды Рё операндов, нужных команде. Звено выборки операндов определяет местонахождение операндов Рё вызывает РёС…. Звено выполнения команд СЃ помощью АЛУ совершает операцию, указанную командой. Звено возврата записывает результат операции РІ нужный регистр.
В современных процессорах звеньев конвейера может быть намного больше.
Для дальнейшего повышения производительности РІ процессоре можно разместить РЅРµ РѕРґРёРЅ, Р° РґРІР° конвейера, работающих параллельно. Общее звено выборки берет РёР· памяти РґРІРµ команды Рё помещает каждую РёР· РЅРёС… РІ отдельный конвейер. Рти РґРІРµ команды РЅРµ должны конфликтовать между СЃРѕР±РѕР№, С‚.Рµ. Сѓ РЅРёС… РЅРµ должно быть совместно используемых регистров Рё РЅРµ должны пользоваться РѕРґРЅРёРј Рё тем же операндом. Предупреждать конфликты должно дополнительное аппаратное обеспечение или компилятор.
Рассмотрим упрощенную схему процессора Pentium I, использующего для выполнения команд РґРІР° конвейера U Рё V. Команды РјРѕРіСѓС‚ направляться РІ каждое РёР· этих устройств одновременно, причем более сложная команда поступает РІ конвейер U, Р° менее сложная - РІ конвейер V. Сложные вычесления СЃ плавающей точкой выполняются одноименным устройством. Остальные устройства процессора предназначены для снабжения конвейеров необходимыми командами Рё данными. Р’ этом процессоре используется раздельная РєСЌС€-память команд Рё данных (модифицированная гарвардская структура), что обеспечивает независимость обращений процессора Рє памяти.
В процессоре предусмотрен механизм предсказания ветвлений переходов. С этой целью на кристалле размещена небольшая кэш-память, которая называется буфером целевых адресов переходов (BTB), и две независимые пары буферов предварительной выборки команд. Неправильный прогноз приводит к приостановке работы конвейеров на 3-4 такта.
Так же можно разработать процессор СЃ четырьмя конвейерами, РЅРѕ это требует создания дополнительного РіСЂРѕРјРѕР·РґРєРѕРіРѕ аппаратного обеспечения. Разработчики пошли РїРѕ РёРЅРѕРјСѓ пути. Пропускная способность звена выполнения команд меньше, чем РґСЂСѓРіРёС… звеньев. Поэтому был разработан конвейер СЃ большим количеством функциональных блоков. Архитектура, использующая такой конвейер, получила название “суперскалярная”. Более РїРѕРґСЂРѕР±РЅРѕ суперскалярную архитектуру можно рассмотреть РЅР° примере процессора Pentium IV.
При обработке массивов данных, состоящих из элементов одинаковой структуры, называемых векторами, производятся одинаковае операции над этими элементами. Для повышения скорости обработки этих массивов, вводятся команды процессора, которые обеспечивают параллельную обработку данных, определяющих структуру вектора. Т.е.одновременно выполняются одни и те же вычисления над различными данными. Такой способ распараллеливания операций называется векторизацией и часто используется совместно с конвейерной обработкой.
ВПроизводительность процессора является интегральной характеристикой, которая зависит РѕС‚ показателей частоты процессора, его разрядности, Р° так же особенностей архитектуры (наличие РєСЌС€-памяти Рё РґСЂ.). Производительность процессора нельзя вычислить. РћРЅР° определяется РІ процессе тестирования, С‚.Рµ. определения скорости выполнения процессором определенных операций РІ какой-либо программной среде.
Чтобы правильно выбрать процессор нужно первым делом посмотреть на его главную характеристику – тактовую частоту, ее еще называют скорость. Как было сказано выше, от возможностей процессора зависит скорость работы всей Вашей системы (быстродействие). Тактовая частота задает ритм жизни компьютера. Чем выше тактовая частота, тем меньше длительность выполнения одной операции и тем выше производительность компьютера. Поэтому частота является главной характеристикой процессора.
ВРџРѕРґ тактом РјС‹ понимаем промежуток времени, РІ течение которого может быть выполнена элементарная операция. Тактовую частоту можно измерить Рё определить ее значение. Рзмеряется РѕРЅР° РІ МегаГерцах (МГц) (MHz) или ГГц (GHz). Герц единица измерения, определяющая частоту какого-либо периодического процесса. Данная единица измерения имеет РїСЂСЏРјРѕРµ соотношение СЃ единицей времени, величиной РІ РѕРґРЅСѓ секунду. Рными словами, РєРѕРіРґР° РјС‹ РіРѕРІРѕСЂРёРј 1 Гц - это означает РѕРґРЅРѕ исполнение какого-либо процесса Р·Р° РѕРґРЅСѓ секунду (1 Гц = 1/СЃ). Например, если РјС‹ имеем 10 Гц, то это означает, что РјС‹ имеем десять исполнений такого процесса Р·Р° РѕРґРЅСѓ секунду. Приставка Мега увеличивает показатель базовой величины (Гц) РІ миллион раз (1 МГц - миллион тактов РІ секунду), Р° приставка Гига РІ миллиард (1 ГГц - миллиард тактов РІ секунду).
Вот уже лет пять, как частота процессоров замерла в районе 3 гигагерц.
Конвейерная архитектура (pipelining) была введена в центральный процессор с целью повышения быстродействия.
Конве́йер— способ организации вычислений, используемый в современных процессорах и контроллерах с целью повышения их производительности (увеличения числа инструкций, выполняемых в единицу времени), технология, используемая при разработке компьютеров и других цифровых электронных устройств.
Рдея заключается РІ разделении обработки компьютерной инструкции РЅР° последовательность независимых стадий СЃ сохранением результатов РІ конце каждой стадии. Рто позволяет управляющим цепям процессора получать инструкции СЃРѕ скоростью самой медленной стадии обработки, однако РїСЂРё этом намного быстрее, чем РїСЂРё выполнении эксклюзивной полной обработки каждой инструкции РѕС‚ начала РґРѕ конца.
Конвейеризация используется затем что бы поступающие данные из одной программы поступали тут же в другую.
В В
4 инструкций ожидают исполнения
1) 1 инструкция забирается из памяти
2) 1 инструкция раскодируется, 2 инструкция забирается из памяти
3) 1 инструкция выполняется (то есть исполняется то действие, которое она кодировала), 2 инструкция раскодируется, 3 инструкция забирается из памяти
4) Ртоги исполнения 1 инструкции записываются РІ регистры или РІ память,2 инструкция выполняется,3 инструкция раскодируется, 4 инструкция забирается РёР· памяти
5) 1 инструкция завершилась, Ртоги исполнения 2 инструкции записываются РІ регистры или РІ память, 3 инструкция выполняется, 4 инструкция раскодируется
6)В 2 инструкция завершилась, Результаты исполнения 3 инструкция записываются РІ регистры или РІ память, 4 инструкция выполняется
7) 3 инструкция завершилась, Ртоги исполнения 4 инструкции записываются РІ регистры или РІ память
8ВВВВВВВВВВВ ) 4 инструкция завершилась
9ВВВВВВВВВВВ )Р’СЃРµ инструкции были выполнены
После освобождения k-й ступени конвейера она сразу приступает к работе над следующей командой. Если предположить, что каждая ступень конвейера тратит единицу времени на свою работу, то выполнение команды на конвейере длиной в N ступеней займёт N единиц времени, однако в самом оптимистичном случае результат выполнения каждой следующей команды будет получаться через каждую единицу времени.
Действительно, при отсутствии конвейера выполнение команды займёт N единиц времени (так как для выполнения команды по-прежнему необходимо выполнять выборку, дешифровку и т. д.), и для исполнения M команд понадобится (N * M)единиц времени; при использовании конвейера (в самом оптимистичном случае) для выполнения команд понадобится всего лишь (N + M )единиц времени.
Факторы, снижающие эффективность конвейера:
1. Простой конвейера, когда некоторые ступени не используются (например, адресация и выборка операнда из ОЗУ не нужны, если команда работает с регистрами).
2. Ожидание: если следующая команда использует результат предыдущей, то последняя не может начать выполняться до выполнения первой (это преодолевается при использовании внеочередного выполнения команд — out-of-order execution).
3.В Очистка конвейера РїСЂРё попадании РІ него команды перехода (эту проблему удаётся сгладить, используя предсказание переходов).
Некоторые современные процессоры имеют более 30 ступеней в конвейере, что повышает производительность процессора, но, однако, приводит к увеличению длительности простоя (например, в случае ошибки в предсказании условного перехода). Не существует единого мнения по поводу оптимальной длины конвейера: различные программы могут иметь существенно различные требования.