Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Микроархитектура Intel Core




По формальным признакам Core ближе всего к архитектуре мобильных Pentium M (Banias), однако при этом целый ряд технологий позаимствован и из Pentium 4

В микроархитектуре Core предусмотрены целенаправленные решения двух проблем - ограничений в параллелизме инструкций и латентности памяти, - призванные обеспечить максимальную загрузку ядра. В интерфейсном блоке применяются технология Micro-ops fusion, при которой несколько инструкций после декодирования объединяются и отправляются для обработки в конвейер, и технология Macro-fusion, при которой ещё до декодирования несколько команд "сливаются" вместе и обрабатываются как единая инструкция. Кроме того, в интерфейсном блоке имеется модуль предсказаний переходов-ветвлений (BPU), ускоряющий обработку инструкций до их передачи на исполнение. Расширенная шина позволяет большему числу инструкций передаваться на исполнительные блоки за каждый такт. Кроме того, в архитектуре Core было ликвидировано известное "узкое место" блока SSE, присутствовавшее в предыдущих микроархитектурах, что обеспечивает заметно более высокую производительность новых чипов в векторных вычислениях по сравнению с предшественниками.

Одной из характерных особенностей архитектуры P6 была структура портов запуска (issue port), которые в Intel называют "dispatch ports", т.е. "порты диспетчеризации". Эта структура сохранена и в микроархитектуре Core, однако существуют и важные различия в портах запуска и буфере ("станции") резервирования (reservation station или RS) двух этих архитектур.

Чтобы понять происхождение этой структуры портов запуска, стоит обратиться к структурной схеме процессора Pentium Pro - первого чипа на базе архитектуры P6. Два порта из пяти отведены арифметике, а три оставшихся - отвечают за доступ к памяти. Буфер резервирования ядра P6 способен передавать на исполнительные блоки по одной инструкции через каждый порт за один такт, то есть, всего до пяти инструкций за такт.

С развитием архитектуры P6 в процессорах Pentium II и Pentium III дорабатывалось и ядро: были добавлены исполнительные блоки для целочисленных векторных вычислений и векторных расчётов с плавающей запятой. Эти блоки были добавлены на два арифметических порта, что привело к их некоторой перегруженности. Именно из-за этого возникло описанное выше "узкое место", из-за которого возможно снижение производительности векторных вычислений в условиях недостаточной пропускной способности портов. Аналогичной архитектурой обладает и процессор Pentium M на ядре Banias.

Исполнительное ядро процессора Core. Помимо существенно расширенного буфера резервации (до 32 записей), в ядре Core реализована новая структура портов: здесь не пять портов, как в ядрах Р6, не четыре порта, как в NetBurst, а уже шесть портов. В отличие от предшественников, в Core арифметическим и логическим инструкциям отданы не два, а три порта, что и позволяет избежать описанного выше "узкого места".

У Core есть три 64-разрядных исполнительных блока для целочисленных вычислений, каждый из которых может исполнять однотактовые 64-битные скалярные целочисленные операции. По всей видимости, здесь, как и в ядре P6 предусмотрен один сложный 64-разрядный блок (CIU) и два простых блока (SIU), выполняющих элементарные действия вроде сложения. Один из SIU делит порт 2 с модулем исполнения переходов (BEU): они способны работать параллельно над выполнением объёдиненных в процессе Macro-fision инструкций.

Способность осуществлять 64-разрядные целочисленные вычисления за один такт впервые появились в процессорах Intel x86 line, и эта возможность ставит чипы с архитектурой Core даже выше серверного процессора IBM PowerPC 970, способного выполнять такие вычисления только за два такта. Более того, поскольку блоки арифметической логики (ALU) расположены на отдельных портах, теоретически чипы Core способны выполнять за один цикл сразу три 64-разрядные целочисленные операции.

В Core используются два исполнительных блока для вычислений с плавающей запятой, способные осуществлять как скалярные, так и векторные арифметические операции. Блок, расположенный на порту 1, отвечает за сложение и другие простые операции в форматах: скалярных - с одинарной (32-бит) и двойной (64-бит) точностью; векторных - с 4х одинарной и 2х двойной точностью. Исполнительный блок на порту 2 осуществляет операции умножения и деления в этих же векторных и скалярных форматах. Два блока векторных вычислений делят те же порты, что и два аналогичных блока скалярных вычислений, поэтому их следует считать двумя едиными линиями, выполняющие как скалярные, так и векторные операции.

Одно из важнейших улучшений в Core - блоки векторных или SIMD-вычислений (т.е. с одним потоком инструкций и несколькими потоками данных). Новая архитектура обеспечивает полноценную 128-битную обработку во всех векторных блоках. Когда Intel впервые добавила поддержку 128-битных векторных вычислений в процессоры семейства Pentium при помощи потоковых SIMD-расширений (SSE), результаты оказались не слишком впечатляющими из-за отсутствия возможности работы с трёхоперандными инструкциями, а также из-за ограничений 64-битной внутренней разрядности обработки данных для арифметики с плавающей запятой и инструкций MMX. Для выполнения 128-битных инструкций в P6 приходилось сначала делить эту инструкцию на две, а затем передавать эту пару на соответствующий исполнительный блок. В результате все 128-битные операции могли выполняться не быстрее, чем за два такта. Этот недостаток унаследовали и Pentium 4, и Pentium M.

В новой архитектуре Core благодаря 128-битной ширине внутренних шин обеспечивается однотактовое исполнение 128-разрядных векторных инструкций. При этом требуется лишь одна микрооперация для трансляции и декодирования каждой 128-битной инструкции. К сожалению, двухоперандное ограничение осталось и в Core, однако серьёзных проблем оно уже не вызывает. Если объединить описанные доработки с увеличением числа исполнительных блоков и расширенной пропускной способностью внутренних шин, можно представить, насколько значительно выросла теоретическая производительность векторных операций.

Конвейеры. Пока доступно не слишком много подробной информации об организации вычислительного конвейера в Core, однако, уже известно, что он состоит из 14 ступеней. Для сравнения, столько же ступеней у процессора IBM PowerPC 970, у Pentium 4 на ядре Prescott - 30 ступеней, а у чипов с архитектурой P6 - 12 ступеней. Число ступеней свидетельствует, с одной стороны, о сохранении сильных черт архитектуры Р6, а с другой - об отказе от "гонки мегагерц", свойственной архитектуре NetBurst. Точной информации от Intel о назначении двух дополнительных ступеней пока нет, и мы не станем выдвигать собственных версий.

Поскольку постпроцессор ядра Core тоже имеет гораздо более широкую шину, чем у предшественников, буфер переупорядочивания инструкций (ROB) также расширен до 96 записей. Для сравнения, у Pentium M Banias ROB состоял из 40 записей. Так называемое "окно команд", состоящее из буфера переупорядочивания (ROB) и буфера резервирования (RS), было не только физически расширено, но и "виртуально". Технологии Macro-fusion and micro-ops fusion позволяют отслеживать большее число инструкций меньшими средствами. Именно поэтому можно сказать, что функционально окно команд Core шире, чем просто сумма записей ROB и RS. А наполнение такого окна команд необходимым потоком новых инструкций - весьма нетривиальная задача, с которой, впрочем, вполне справились инженеры Intel.

В интерфейсном блоке установлен новый декодирующий модуль, позволяющий увеличить число инструкций, которые могут быть конвертированы в микрооперации за один цикл. Декодер, использовавшийся в ядре Р6, состоял их двух "быстрых" декодирующих блоков и одного сложного ("медленного") декодирующего блока. "Быстрые" блоки транслируют инструкции x86 в одну микрооперацию (micro-op), из которых и состоит подавляющее большинство инструкций. "Быстрые" декодеры за один такт могут отправлять одну микрооперацию в соответствующий буфер. Сложный декодер отвечает за трансляцию инструкций в две-четыре микрооперации. Таких инструкций немного и они редко используются. Три декодирующих модуля ядра P6 могут оправлять за один такт до шести микроопераций в буфер микроопераций, а декодирующий блок в целом может посылать в буфер переупорядочивания до шести микроопераций за один такт.

Перед конструкторами Core стояла задача повысить скорость декодирования настолько, чтобы она позволяла использовать возросшие вычислительные мощности ядра, Прежде всего, в декодирующий блок был добавлен ещё один "быстрый" модуль, что позволило увеличить число отправляемых в буфер микроопераций до семи и число отправляемых в буфер переупорядочивания - до четырёх. Кроме того, в Core "быстрыми" модулями могут обрабатываться больше типов инструкций, в частности, инструкции памяти и SSE, благодаря чему разработчики приблизились к цели получить одну микрооперацию из каждой инструкции x86.

Среди новых технологий, реализованных в архитектуре Core - уже упомянутая Macro-fusion, позволяющая объединять некоторые типы инструкций x86 перед декодированием, что даёт возможность отправлять их на один декодер для трансляции в одну микрооперацию. Такими инструкциями могут быть, в частности, инструкции сравнения, тестирования и переходов. Любой из четырёх декодеров способен за один такт генерировать не более одной микрооперации с использованием технологии Macro-fusion. Один блок арифметической логики, тем самым, способен выполнять, как минимум, две объединённых инструкции определённого типа одновременно. К тому же, при этом освобождаются исполнительные блоки для других типов инструкций. Таким образом, эта технология позволяет "виртуально" расширить окно команд, выполняя в действительности больше инструкций, чем их формальное количество.

Ещё одна технология, Micro-ops fusion, впервые появившаяся в Pentium M, решает почти те же самые задачи, что и Macro-fusion, но другими средствами: "быстрый" декодирующий модуль получает одну инструкцию x86, которая должна транслироваться в две микрооперации, и выдаёт смешанную пару, которая воспринимается в буфере переупорядочивания как одна запись. После перехода в буфер резервирования две микрооперации обрабатываются отдельно: либо параллельно через два отдельных порта, либо последовательно через один порт, в зависимости от конкретной ситуации. Как правило, такими микрооперациями являются load и store.

Технология Micro-ops fusion, как и Macro-fusion, "виртуально" расширяет окно команд и делает архитектуру Core более энергоэффективной, поскольку большее число операций выполняется меньшими аппаратными средствами.

Модуль предсказания переходов в ядре Core был существенно расширен в целях обеспечения повышенной производительности и энергоэффективности. Модуль состоит из тех же трёх частей, что и аналогичный модуль в процессорах Pentium M (Banias): прямого предсказателя ветвлений (global и bi-modal), непрямого (indirect) и определителя циклов (loop detector). Предсказатели работают на основе информации о недавно исполненных переходах, причём прямой путь, заложенный в самой команде, обеспечивает почти стопроцентную точность предсказаний, в то время как при непрямом пути данные о наиболее часто используемых адресах извлекаются из регистра, что обеспечивает чуть меньшую, но всё равно весьма высокую точность.

Переходы завершения цикла могут быть выполнены лишь однажды - по завершению цикла, поэтому в буфере переходов не сохраняется достаточно статистических данных для того чтобы с точностью предсказать завершение ветвления. Для сведения к минимуму вероятности возникновения подобных ситуаций применяется определитель циклов, отслеживающий исполнение каждого ветвления с целью определить, какое из них удовлетворяет условиям завершения цикла. Соответствующая статистика накапливается, поэтому точность предсказания подобных переходов приближается к ста процентам.

Устранение неоднозначности в памяти. Оригинальная технология устранения неоднозначности в памяти (memory disambiguation) призвана сводить к минимуму недостатки процессоров ОООЕ (то есть, со схемой внеочередного исполнения команд). Дело в том, что такие процессоры не могут производить дальнейшие вычисления до тех пор, пока не будут возвращены в основную память или в файл регистра данные о результатах исполнения предыдущих инструкций. Даже если последующая операция никак не зависит от предыдущих, процессор вынужден ожидать сохранения результатов их выполнения.

По некоторым данным, порядка 97 процентов инструкций в окне команд никак не связаны с предшествующими и могут исполняться независимо от них. Тем не менее, в архитектурах Р6 и NetBurst предполагалось, что эти связи существуют, и это предположение вело к неоправданному снижению производительности. Технология устранения неоднозначности как раз и пытается определять подобные ложные связи, что позволяет повысить производительность работы чипа.

Решение проблемы заключается в том, чтобы дать процессору "понять" зависимости между исполняемыми инструкциями. Для этого и применяется технология устранения неоднозначности: при помощи особых алгоритмов предпринимаются попытки предсказания последовательности загрузки последующих инструкций ещё до сохранения предыдущих. В худшем случае операции выполняются, как и раньше, после сохранения, а при удачном исходе предсказания - одновременно с сохранением данных о результатах выполнения предыдущих операций. Разумеется, подобные алгоритмы применимы не во всех ста процентах случаев, но в целом их использование позволит заметно увеличить производительность процессора.




Поделиться с друзьями:


Дата добавления: 2014-10-17; Просмотров: 403; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.