РЕФЕРАТ по дисциплине «Вычислительные машины, сети и системы телекоммуникаций в таможенном деле» на тему «Суперконвейерные микропроцессоры» Наиболее важными компонентами любого компьютера, обусловливающими его основные характеристики, являются микропроцессоры, системные платы и ин¬терфейсы. Микропроцессор (МП), или Central Processing Unit (CPU) — функционально законченное программно управляемое устройство обработки информации, вы¬полненное в виде одной или нескольких больших (БИС) или сверхбольших
(СБИС) интегральных схем. Микропроцессор выполняет следующие функции: □ вычисление адресов команд и операндов; □ выборку и дешифрацию команд из основной памяти (ОП); □ выборку данных из ОП, регистров МПП и регистров адаптеров внешних уст¬ройств (ВУ); □ прием и обработку запросов и команд от адаптеров на обслуживание ВУ; □ обработку данных и их запись в ОП, регистры МПП и регистры адаптеров ВУ; □ выработку управляющих сигналов для всех прочих
узлов и блоков ПК; □ переход к следующей команде. Основными параметрами микропроцессоров являются: □ разрядность; □ рабочая тактовая частота; □ размер кэш-памяти; □ состав инструкций; □ конструктив; □ рабочее напряжение и т. д. Разрядность шины данных микропроцессора определяет количество разрядов, над которыми одновременно могут выполняться операции; разрядность шины адреса
МП определяет его адресное пространство. Адресное пространство — это максимальное количество ячеек основной памяти, которое может быть непосредственно адресовано микропроцессором. Рабочая тактовая частота МП во многом определяет его внутреннее быстро¬действие, поскольку каждая команда выполняется за определенное количество тактов. Быстродействие (производительность) ПК зависит также и от тактовой частоты шины системной платы, с которой работает (может работать)
МП. Кэш-память, устанавливаемая на плате МП, имеет два уровня: □ L1 — память 1-го уровня, находящаяся внутри основной микросхемы (ядра) МП и работающая всегда на полной частоте МП (впервые кэш L1 был введен в МП i486 и в МП i386SLC); □ L2 — память 2-го уровня, кристалл, размещаемый на плате
МП и связанный с ядром внутренней микропроцессорной шиной (впервые введен в МП Pentium II). Память L2 может работать на полной или половинной частоте МП. Эффективность этой кэш-памяти зависит и от пропускной способности микропроцессорной шины. Состав инструкций — перечень, вид и тип команд, автоматически исполняемых МП. От типа команд зависит классификационная группа
МП (CISC, RISC, VLIW и т. д.). Перечень и вид команд определяют непосредственно те процеду¬ры, которые могут выполняться над данными в МП, и те категории данных, над которыми могут применяться эти процедуры. Дополнительные инструкции в не¬больших количествах вводились во многих МП (286, 486, Pentium Pro и т. д.). Но существенное изменение состава инструкций произошло в МП i386 (этот со¬став далее принят за базовый), Pentium
MMX, Pentium III, Pentium 4. Конструктив подразумевает те физические разъемные соединения, в которые устанавливается МП и которые определяют пригодность материнской платы для установки МП. Разные разъемы имеют разную конструкцию (Slot — щеле¬вой разъем, Socket — разъем-гнездо), разное количество контактов, на которые подаются различные сигналы и рабочие напряжения. Рабочее напряжение также является фактором пригодности материнской платы для установки
МП. Первый микропроцессор был выпущен в 1971 году фирмой Intel (США) — МП 4004. В настоящее время разными фирмами выпускается много десятков различных микропроцессоров, но наиболее популярными и распространенными являются микропроцессоры фирмы Intel и Intel-подобные. Все микропроцессоры можно разделить на группы: □ CISC (Complex Instruction Set Command) с полным набором системы команд; □
RISC (Reduced Instruction Set Command) с усеченным набором системы команд; □ VLIW (Very Length Instruction Word) со сверхбольшим командным словом; □ MISC (Minimum Instruction Set Command) с минимальным набором системы команд и весьма высоким быстродействием и т. д. Суперконвейерный подход - применение относительно длинных конвейеров с довольно большим числом коротких ступеней. Идеология суперконвейерного подхода эффективна, если выполнение потока команд в конвейере
не нарушается командами перехода, когда конвейер приходится запускать вновь, что приводит к большим задержкам. Далее будут рассмотрены основные микропроцессоры с суперконвейерным подходом. Микропроцессоры Pentium Pro В сентябре 1995 года были выпущены МП шестого поколения 80686 (Р6), торго¬вая марка Pentium Pro. Микропроцессор состоит из двух кристаллов: собственно
МП и кэш-памяти. Но он не полностью совместим с просто Pentium и, в частно¬сти, требует специальную системную плату. Pentium Pro прекрасно работает с 32-битовыми приложениями, а в 16-битовых иногда даже несколько проигрыва¬ет просто Pentium. Новые схемотехнические решения обеспечивают для ПК бо¬лее высокую производительность. Часть этих новшеств может быть объединена понятием «динамическое
исполнение» (dynamic execution), что, в первую оче¬редь, означает наличие многоступенчатой суперконвейерной структуры (super¬pipelining), предсказания ветвлений программы при условных передачах управления (multiple branch prediction) и исполнение команд по предполагаемому пути ветвления (speculative execution). Микропроцессоры Pentium 4 Модификация МП Pentium — Pentium 4 — предназначена для высокопроизво¬дительных компьютеров, в первую очередь серверов, рабочих
станций класса high-end и мультимедийных игровых ПК. Вновь улучшена система «динамического исполнения» (dynamic execution), что, в первую очередь, связано с наличием 20-ступенной (у МП Pentium III конвейер имел 10 ступеней) суперконвейерной структуры (superpipelining), лучшего пред¬сказания ветвлений программы при условных передачах управления (branch prediction) и параллельного «по предположению» (опережающего, спекулятив¬ного) исполнения команд по нескольким предполагаемым путям
ветвления (spe¬culative execution). Поясним это. Динамическое исполнение позволяет процес¬сору предсказывать порядок выполнения инструкций при помощи технологии множественного предсказания ветвлений, которая прогнозирует прохождение про¬граммы по нескольким ветвям. Это оказывается возможным, поскольку в про¬цессе исполнения инструкции процессор просматривает программу на несколько шагов вперед. Технология анализа потока данных позволяет проанализировать программу и составить ожидаемую последовательность
исполнения инструкций, независимо от порядка их следования в тексте программы. И наконец, опере¬жающее выполнение повышает скорость работы программы за счет выполнения нескольких инструкций одновременно, по мере их поступления в ожидаемой по¬следовательности — то есть по предположению (интеллектуально). Поскольку выполнение инструкций происходит на основе предсказания ветвлений, резуль¬таты сохраняются как «интеллектуальные» с последующим удалением тех, кото¬рые вызваны промахами в предсказании.
На конечном этапе порядок инструк¬ций и результатов их выполнения восстанавливается до первоначального. Используется новая микроархитектура, базирующаяся на двух параллельных 32-битовых конвейерах и поддерживающая технологию поточной обработки Hyper Pipelined. Это позволило сделать эффективным длинный конвейер. Суть в том, что при длинном конвейере в задачах с частыми условными переходами его эффективность снижается. Два параллельных конвейера снижение эффек¬тивности уменьшают.
Теперь реальна ситуация, когда в каждый момент времени одна инструкция загружается, другая декодируется, для третьей (или несколь¬ких) формируется пакет данных, четвертая инструкция (или несколько) испол¬няется, для пятой записывается результат. И если при строго последовательном исполнении инструкций даже самые короткие операции исполнялись за 5 так¬тов, то при такой поточной обработке многие инструкции могут быть выпол¬нены за такт. Технология гиперконвейерной обработки
Технология гиперконвейерной обработки повышает пропускную способность кон¬вейера, обеспечивая увеличение производительности и тактовой частоты. Так, один из основных конвейеров МП — конвейер предсказания ветвлений/возвра¬тов ветвления, имеет глубину конвейерной обработки в 31 шаг (против 20 шагов в микропроцессорах Pentium 4 с суперконвейерной обработкой). Первый многопоточный микропроцессор семейства UltraSPARC
T, получивший известность под кодовым именем Niagara 1, был выпущен в 2006 г. Его встретили с интересом: у пользователей появилась возможность получить машину, аналогичную по своей комплектации многопроцессорному серверу Sun Fire E10K, но на одном кристалле и в 50 раз более производительную. Однако, как отметил Павел Анни, менеджер по маркетингу продуктов Sun Microsystems, наличие в Niagara 1 единственного модуля работы с вещественными числами было узким
местом при выполнении операций с плавающей запятой. С другой стороны, системы на UltarSPARC T1 и не предназначались для сектора высокопроизводительных вычислений, а были ориентированы на выполнение транзакционных задач и Internet-приложений. Многопоточная структура процессора Niagara 1 продемонстрировала свои преимущества при работе с программным обеспечением, интенсивно использующим
потоки, в частности, с Web-приложениями. Данный процессор эффективно работает с программным обеспечением для набора инструкций SPARC 9 под управлением операционной системы Sun Solaris, которая широко использует многопоточность и предоставляет развитый API-интерфейс параллельных приложений. Как подчеркнул Анни, UltraSPARC T2 — следующий шаг в реализации стратегии многопотоковых вычислений
Sun, направленной на создание линейки серверов на кристалле. UltraSPARC T2, как и его предшественник, имеет восемь ядер; его тактовая частота — 1,4 ГГц. Однако каждое ядро включает в себя два четырехпоточных конвейера, то есть общее число потоков возросло до 64. Учитывая, что в процессоре имеется два порта 10G Ethernet и восемь каналов PCI-Express, то в результате на одном кристалле размещается до 64 независимых
систем — по сути, сервер на кристалле. Увеличение числа потоков создает большую нагрузку на кэш-память всех уровней, поэтому в микропроцессоре предусмотрено восемь банков кэш-памяти по 512 Кбайт. Создатели новых процессоров, полагая, что общая пропускная способность системы памяти влияет на производительность процессора больше, чем емкость кэша, в основном стремились к повышению общей пропускной способности системы памяти. У каждого ядра UltraSPARC
T2 имеется свой блок работы с вещественными числами, благодаря чему пропускная способность подсистемы операций с плавающей запятой стала соответствовать практическим потребностям большинства современных приложений. В целом при той же тактовой частоте, что и у его предшественника, UltraSPARC T2 продемонстрировал почти двукратное увеличение производительности по тестам SPEC (SPECint_rate2006 78,3; SPECfp_rate2006 62,3).
Учитывая, что большее количество потоков требует более сложного механизма переключения, прирост производительности следует отнести на счет различных архитектурных улучшений. Показатели энергопотребления T2 выглядят впечатляюще — процессор обеспечивает вдвое большую производительность на каждый затраченный ватт по сравнению с предыдущей моделью. Энергопотребление на холостом ходу составляет 60 Вт, номинальное — 95
Вт, или примерно 1,5 Вт на поток (для сравнения, Xeon 5300 на четыре потока расходует 30 Вт). Так что Niagara 2 можно рассматривать как платформу для построения недорогих серверов, способных параллельно обрабатывать множество потоков. В компании недавно создано отдельное подразделение Sun Microelectronics, которое занимается разработкой микропроцессоров, включая поставки партнерам Sun. Ориентировочная цена UltraSPARC T2 составляет 1 тыс. долл. в партии в тысячу штук.
Среди потребителей этого микропроцессора поставщики встроенных систем: индустрия развлечения, мобильные устройства, стационарное оборудование для сотовой связи и т. п. В первой половине 2008 г. Sun Microelectronics планирует выпустить процессор Victoria Falls — вариант Niagara для многопроцессорных систем. Также в 2008 году появится процессор Rock, который тестируется с середины марта.
Ниша применений этого многопотокового процессора — традиционные приложения, работающие на многопроцессорных серверах (впрочем, называть это «нишей» трудно, во всяком случае, ниша достаточно обширная). Все, что хорошо работает на Sun Fire или SPARC Enterprise, будет так же работать на Rock. Разница в размерах, в надежности и потребляемой мощности и, соответственно, в стоимости эксплуатации. Как все начиналось - история развития архитектуры
IA-32 Никто не станет спорить, что архитектура Intel Architecture стала стандартом "де-факто" современной компьютерной индустрии. Основополагающими факторами такой популярности Intel считает полную совместимость программного обеспечения, разработанного под Intel Architecture процессоры, и все более серьезные увеличения производительности, предлагавшиеся с выходом новых поколений процессоров.
Проследим путь компании от истоков - 16-разрядной архитектуры, до современной 32-разрядной архитектуры IA-32 , применяющейся во всех современных процессорах от Intel. Как уже говорилось ранее, родоначальниками процессорной архитектуры Intel Architecture являлись 16-разрядные процессоры 8088 и 8086, причем объектный код, разработанный в расчете на них в 1978 году, и поныне без проблем исполняется на самых последних процессорах архитектуры
IA-32. Процессор 8086 имел 16-разрядные регистры общего назначения, 16-разрядную шину данных и 20-разрядную шину адреса, что позволяло ему оперировать адресным пространством в 1 мегабайт. Отличие процессора 8088 заключалось в 8-разрядной шине данных. Эти процессоры привнесли сегментацию в архитектуру IA-32. Память разделялась на сегменты размером до 64 килобайт.
Оперируя четырьмя сегментными регистрами одновременно, процессор имел возможность адресации до 256 килобайт памяти без переключения между сегментами. При этом 20-разрядные адреса получались путем добавления 16-разрядного адреса к указателю сегментного регистра. Процессор 80286 привнес в архитектуру IA-32 защищенный режим. В нем содержимое сегментных регистров используется в качестве указателей на таблицы дескрипторов, которые
давали возможность 24-разрядной адресации, что составляло 16 мегабайт адресного пространства. К тому же, появилась возможность проверки границ сегментов, опций read и execute-only для сегментов и 4 уровня защиты кода операционной системы от приложений и защита приложений друг от друга. Intel 80386 стал первым 32-разрядным процессором в архитектуре IA-32. В архитектуру введены 32-разрядные регистры общего назначения (GP - general purpose), подходящие
как для хранения адресов, так и для операндов. Нижняя и верхняя половина сохранили возможность работы в качестве самостоятельных регистров для обеспечения совместимости с предыдущими процессорами. Для обеспечения эффективного выполнения кода, созданного под ранние процессоры, на 32-разрядных процессорах, был введен виртуальный х86 режим. Имея 32-разрядную шину адреса, 80386 процессор поддерживал адресацию до 4 гигабайт памяти.
При этом была возможность использования как сегментированной памяти, так и "плоской", при которой все сегментные регистры содержали указатель на один и тот же адрес, и в каждом сегменте доступно все 4-х гигабайтное адресное пространство. Для виртуального управления памятью вводится страничный метод, при котором адресное пространство делится на фиксированные страницы размером по 4 килобайта, эффективность которого значительно превышала использование сегментов.
16-разрядные инструкции, доставшиеся в наследство от предыдущих процессоров, получили возможность работы с 32-разрядными операндами и адресами, а также был добавлен ряд новых 32-разрядных инструкций. В поисках новых технологий для увеличения быстродействия, в 80386 впервые реализована возможность параллельной работы нескольких блоков процессора, что положило начало конвейеризации вычислений в процессоре 80486. В новом процессоре 80486 блок декодирования команд и блок вычислений преобразованы в пяти-стадийный
конвейер, в котором каждая стадия по мере надобности могла выполняться параллельно с другими, исполняя до 5 команд на разных стадиях выполнения. Конвейерные микропроцессоры выполняют команды подобно сборочной линии: полная обработка каждой инструкции занимает несколько тактов, но, разбивая процесс на несколько этапов, и начиная выполнение следующей команды сразу вслед за тем, как предыдущая команда пройдет первый этап, можно быстро выдать несколько завершенных команд.
При этом нельзя не отметить и такие технологические инновации, как 8-килобайтный кэш первого уровня в чипе для обеспечения полноценной загрузки конвейера, интегрированный х87 сопроцессор, а также расширения для поддержки внешнего кэша 2-го уровня и многопроцессорных систем. Процессор Pentium стал первым процессором, в котором была применена суперскалярная архитектура - два конвейера, называвшиеся U и V, позволяли выполнять 2 инструкции за такт.
Количество L1-кэша удвоилось - теперь на команды и данные приходилось по 8 килобайт, причем кэш данных использовал более эффективную схему с обратной записью. Для эффективного предсказания переходов в циклических конструкциях применялась встроенная таблица ветвлений. В виртуальном х86 режиме, в дополнение к 4-килобайтным страницам, появилась поддержка 4-мегабайтных страниц. Регистры остались 32-разрядными, но некоторые внутренние шины расширились до 64 и даже 128
разрядов. Также 64-разрядной стала внешняя шина данных. Последний процессор этого поколения, Pentium MMX, привнес в архитектуру расширенный набор команд, позволявший эффективно оперировать с упакованными целочисленными данными, находящимися в 64-разрядных MMX регистрах. В 1995 году был представлено семейство процессоров P6, имевшее уже 3 независимых конвейера. Первым процессором этого семейства был процессор
Pentium Pro. Принципиальное отличие этого семейства состоит в том, что P6 преобразует команды x86 во внутренние, RISC-подобные команды, называемые микрокомандами (micro-ops). Это позволяет устранить многие ограничения, свойственные набору команд x86, такие как нерегулярность кодирования команд, операции целочисленных пересылок регистр-память и переменная длина непосредственных операндов. Шина адреса процессоров P6 расширилась до 36 разрядов, что позволяет использовать адресное
пространство размером до 64 гигабайт. Процессор Pentium III привнес в архитектуру IA-32 расширения SSE (Streaming SIMD(Single Instruction Multiple Data) Extensions) - стали доступны новые 128 разрядные регистры и SIMD операции над упакованными операндами с плавающей запятой с одинарной точностью. Прежде чем приступить к рассмотрению архитектуры нового процессора от
Intel - Pentium 4 Willamette, и сравнить все инновации, примененные в нем, с процессорами сегодняшними, подробно рассмотрим архитектуру семейства P6 - все выпускаемые сейчас процессоры Intel принадлежат к этому же семейству. Как это работает - процессоры P6 Полная обработка каждой инструкции занимает определенное количество тактов процессора. При этом возможно разделить процесс обработки на этапы, что позволит начать выполнение следующей команды
сразу вслед за тем, как предыдущая команда пройдет первый этап - это, собственно, и есть принцип конвейерной обработки (pipelining), применяемый еще со времен процессоров 80486 и Pentium, в которых использовался стандартный 5-ти ступенчатый конвейер. Суперконвейеризация (superpipelining), примененная в семействе P6, делит ступени стандартного конвейера на более мелкие части.
Очевидно, что с увеличением числа ступеней каждая отдельная ступень выполняет меньшую работу и, следовательно, содержит меньше аппаратной логики. Временной интервал между поступлением набора входных воздействий на входы схемы и появлением результирующих сигналов на ее выходах - задержка распространения (propagation delay), в результате, становится существенно меньше. Благодаря более коротким задержкам распространения сигнала в каждой отдельно взятой ступени конвейера
становится возможным повышение тактовой частоты. Совершенно аналогичный эффект уменьшения задержек распространения сигнала достигается с помощью перехода на более тонкий технологический процесс - например, с .18 микрон на .13. Очевидно, что архитектура семейства P6, применяемая в процессорах P3, исчерпала себя на частоте чуть более 1-го гигагерца, применительно к технологическому процессу .18 микрон. Казалось бы, нет ничего проще - увеличивай число ступеней конвейера и поднимай частоту процессора
в свое удовольствие. Но суперконвейерная архитектура имеет серьезный недостаток. При выполнении неправильно предсказанных переходов и операций необходима полная очистка конвейера, которая занимает тем больше времени, чем больше ступеней насчитывает конвейер, причем снижение производительности в некоторых случаях получается просто удручающим. Рассмотрим поэтапную работу конвейера процессора P6, состоящего из 12 ступеней. Конвейер можно разделить на три самостоятельных функциональных блока
- входной блок упорядоченной обработки (in-order front end), отвечающий за декодирование и обработку команд, ядро исполнения с изменением последовательности (out-of-order core), где, собственно, и происходит выполнение команд, и конвейер упорядоченного вывода команд из последовательности (in-order retirement). Блок выборки команды (instruction fetch unit) считывает поток инструкций из L1-кэша команд порциями по 32 байта за такт. Для поиска начала команды используется текущий указатель
команды (IP-instruction pointer), а затем выровненные 16 байт команды передаются на три дешифратора. В случае, если команда находится в конце первой строки кэша, считывается вторая строка кэша для получения недостающих байт. Предсказание переходов Указатель команды рассчитывается блоком выборки команды на основании информации, полученной от буфера адреса перехода (BTB - branch target buffer), и основанной на битах предыстории ветвлений, которые генерируются блоком целочисленных вычислений, предназначенным
для обработки микрокоманд переходов (Integer Unit), который будет подробно описан ниже. Предсказание переходов (ветвлений) призвано свести к минимуму холостую работу конвейера и обеспечить его непрерывным потоком команд. Вообще, в среднем до 10 процентов кода программы составляют безусловные переходы, передающие управление по новому указанному адресу, и от 10 до 20 процентов - условные переходы, которые меняют или не меняют ход выполнения программы в зависимости от результата сравнения или выполнения
какого-либо другого условия. В случае, если условный переход не выполняется, программа просто продолжает выполнение следующей по порядку команды. Безусловные переходы проблем не вызывают, процессор точно знает, что они будут выполнены и поэтому просто начинает выборку команд по указанному адресу. Команды условных переходов представляют определенные трудности, потому что процессор не знает, будет ли выполнен переход до тех пор, пока команда не пройдет исполнительную ступень конвейера.
Однако ожидание, пока команда ветвления покинет исполнительную ступень, означает временный отказ от возможности выборки и обработки дальнейших команд. Для предсказания переходов процессор использует расширенный алгоритм Yeh'а, позволяющий с большой достоверностью спрогнозировать, будет ли выполняться переход. Если предсказание окажется верным, то исполнение продолжится с малой задержкой или совсем без задержки.
Если же предположение ошибочно, то частично выполненные команды придется удалять из конвейера, а новые команды выбирать из области памяти с правильным адресом, декодировать и выполнять их. Это повлечет за собой существенное снижение производительности, напрямую зависящее от глубины конвейера - для архитектуры P6 в случае ошибочного предсказания перехода потери составят от 4 до 15 тактов. Алгоритм предсказания ветвлений является динамическим двухуровневым и основывается на поведении команд
перехода за предшествующий период времени (поскольку один и тот же переход часто выполняется более чем один раз, например, в цикле), а также на поведении конкретных групп команд, для которых с большой вероятностью можно предсказать конкретный переход. Точность предсказания данного алгоритма составляет порядка 90 процентов. Итак, выровненные 16-байтовые команды передаются в дешифратор команд (Instruction Decoder) , состоящий из трех параллельных дешифраторов, два из которых - простые (Simple), и один -
сложный (Complex). Задача каждого дешифратора - преобразование IA инструкции в одну или несколько микрокоманд (micro-ops). Простые дешифраторы обрабатывают команды x86, транслируемые в единственную микрокоманду. Сложный дешифратор работает с командами, которым соответствуют от одной до четырех микрокоманд. Некоторые особенно сложные команды невозможно непосредственно декодировать даже сложным дешифратором,
поэтому они передаются в планировщик последовательности микрокоманд (MIS - microcode instruction sequencer), генерирующий необходимое число микрокоманд. Если простой дешифратор встречает команду, которая не поддается трансляции, то она передается в сложный дешифратор, либо в планировщик последовательности микрокоманд. Такая пересылка слегка замедляет дешифрацию, но за счет буферизации с помощью станции-резервуара (Reservation Station), работу которой мы еще рассмотрим, не очень значительно сказывается на производительности.
В случае, если сложные и простые команды безупречно выровнены их соответственными дешифраторами, то дешифраторы способны генерировать в общей сложности шесть микрокоманд за такт, но, как правило, из всех трех дешифраторов за один такт выдаются три микрокоманды, соответствующие, в среднем, двум - трем IA командам, которые передаются в буфер восстановления последовательности (ROB - Reorder Buffer). ROB содержит 40 элементов, размером 254 байт каждый, и может хранить микрокоманду,
два связанных с ней операнда, результат и несколько битов состояния. Последним этапом перед выполнением команд является отображение регистров, осуществляемое в таблице псевдонимов регистров (RAT - register alias table). Архитектура x86 предусматривает только восемь 32-разрядных регистров общего назначения, а с таким малым числом регистров вероятность того, что две соседние команды будут использовать один регистр, относительно
велика. Отображение регистров помогает ослабить влияние таких регистровых взаимозависимостей (register dependencies) - в случае необходимости записи в один и тот же регистр для двух команд их невозможно будет исполнить вне очереди без отображения регистров, так как более поздняя команда не может быть обработана до завершения более ранней команды. При отображении регистров происходит преобразование программных ссылок на архитектурные регистры в ссылки на 40 физических регистров микрокоманд, реализованных в буфере
восстановления последовательности. По существу, процессор "размножает клонированием" ограниченное число программируемых, архитектурных регистров и отслеживает, какие клоны содержат наиболее поздние значения. Это предотвращает задержки, которые в противном случае были бы внесены в процесс обработки команд взаимозависимостями в результате конфликтующих обращений к регистрам. Станция-резервуар выступает диспетчером и планировщиком микрокоманд, для чего непрерывно сканирует
буфер восстановления последовательности и выбирает команды, готовые к исполнению (имеющие все исходные операнды). Результат выполнения возвращается назад в буфер и сохраняется вместе с микрокомандой до вывода. Порядок исполнения команд основывается не на их первоначальной последовательности, а на факте готовности команды и ее операндов к исполнению, это и есть out-of-order - исполнение с изменением последовательности. Если дешифраторы приостановили работу, исполнительные блоки продолжают работать, пользуясь командами,
поставляемыми резервуаром, а в случае занятости исполнительных устройств, резервуар предоставляет возможность дешифраторам работать. Заполняется резервуар в очень редких случаях, что приводит к приостановке работы дешифраторов. Выполнение микрокоманд осуществляется двумя целочисленными блоками, двумя блоками вычислений с плавающей точкой и одним блоком взаимодействия с памятью - таким образом, возможно выполнение до пяти микрокоманд за такт процессора. Два целочисленных блока способны исполнять две целочисленные микрооперации
одновременно. Один из блоков, как упоминалось выше, разработан специально для выполнения операций перехода. Он способен обнаруживать ошибочно предсказанный переход и оповещать буфер предсказания переходов о необходимости перезапуска конвейера. Рассмотрим это подробнее. Дешифратор прикрепляет к команде перехода оба адреса - предсказанный адрес перехода и предварительно признанный неудачным. Когда целочисленный блок исполнения выполняет операцию перехода, он в состоянии
определить, какая из ветвей была выбрана. В случае перехода по предсказанию все предварительно накопленные и выполненные команды данной ветви маркируются как годные для дальнейшего использования, и продолжается исполнение данной ветви программы. В противном случае, блок выполнения перехода в целочисленном блоке изменяет статус всех команд данной ветви на "подлежащие удалению". Потом передает в буфер адреса перехода правильный адрес перехода, и буфер, в свою очередь, перезапускает
конвейер с этого адреса. Блок взаимодействия с памятью отвечает за выполнение микрокоманд загрузки и сохранения. Загрузка требует только указания адреса памяти, поэтому может быть представлена одной микрокомандой. Сохранение требует также указания содержимого для сохранения, поэтому кодируется двумя микрокомандами. Часть блока, обрабатывающая команды сохранения, имеет два порта, что позволяет обрабатывать адресную и микрокоманду данных параллельно. Также возможно параллельное выполнение операций загрузки и сохранения
в одном такте. Для операций с плавающей точкой предусмотрены два блока вычислений, причем второй предназначен для обработки SIMD инструкций. Команды, которые исполняются не в той последовательности, которая предписана программой (speculative), следует в конечном итоге расположить в должной последовательности - иначе процессор не всегда сможет получить правильные результаты. Буфер восстановления последовательности сохраняет статус исполнения и результаты каждой микрокоманды.
Микрокоманда выводится блоком вывода, который, подобно станции-резервуару, сканирует буфер восстановления последовательности на предмет обнаружения микрокоманд, которые уже не повлияют на выполнение других микрокоманд. Такие команды признаются завершенными, и блок вывода выстраивает их в первоначальную последовательность, учитывая прерывания, исключения, точки останова и неверные предсказания переходов. Блок вывода способен выводить три микрокоманды за такт.
При выводе микрокоманды результаты записываются в выводящий регистровый файл (RRF - retire register file) и/или память. Выводящий регистровый файл содержит 8 регистров общего назначения и 8 регистров для данных с плавающей точкой. После того, как микрокоманда выведена, она удаляется из буфера восстановления последовательности. Операции записи в память откладываются до той поры, пока вызвавшая их микрокоманда не будет выведена. Для этого в P6 предусмотрен буфер упорядочения обращений к памяти (MOB - memory order
buffer), в котором по командам, выдаваемым блоком записи в память, сохраняется информация о данных и адресах. Буфер упорядочения обращений к памяти пересылает данные в память только после того, как буфер восстановления последовательности уведомит его о том, что микрокоманда, произведшая запись в память, удаляется. Посмотрим, насколько же будет отличаться спроектированный с чистого листа Willamette - Pentium4, тактовые частоты которого начинаются с 1.4 гигагерца, действительно ли это прорыв
в будущее, или лишь способ увеличить предельную тактовую частоту кристалла в рамках имеющегося технологического процесса .18 микрон.
! |
Как писать рефераты Практические рекомендации по написанию студенческих рефератов. |
! | План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом. |
! | Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач. |
! | Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты. |
! | Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ. |
→ | Виды рефератов Какими бывают рефераты по своему назначению и структуре. |