«Открытые системы» , № 08, 2006 391 прочтение
Эволюция микроархитектуры x86-процессоров Intel
Микропроцессоры архитектуры x86 и компьютерные системы на их базе продолжают вытеснять с рынка всех конкурентов. Став 64-разрядными, эти процессоры лишили альтернативы из лагеря RISC (и пост-RISC) главного козыря.
Микропроцессоры архитектуры x86 и компьютерные системы на их базе продолжают вытеснять с рынка всех конкурентов. Став 64-разрядными, эти процессоры лишили альтернативы из лагеря RISC (и пост-RISC) главного козыря. Новыми лидерами по многим техническим параметрам стали представленные нынешним летом процессоры Intel с микроархитектурой Core.
Учитывая относительную дешевизну всей аппаратной инфраструктуры компьютерных систем на платформе х86, нетрудно предположить дальнейшее увеличение доли х86 на рынке. Ничего не мешает строить самые мощные многопроцессорные серверы и даже суперкомпьютеры на 64-разрядном расширении IA-32 (EM64T или x86-64). По производительности на «целочисленных» задачах х86 давно впереди, и лишь на плавающей точкой лидирует IBM Power5+.
В настоящее время ограничением остается адресуемая физическая память. 36 разрядов адреса в новейших серверных процессорах Intel Woodcrest отвечает емкости оперативной памяти 64 Гбайт. В Intel Xeon MP и AMD Opteron эти адреса 40-разрядные; это позволяет обращаться к 1 Тбайт памяти, что, однако, для сверхбольших сcNUMA-серверов уже недостаточно. Для виртуальной адресации Woodcrest и Opteron используют 48 разрядов.
Представленные летом 2006 года х86-процессоры Intel с новой микроархитектурой Сore впервые за последние годы резко опередили процессоры AMD по производительности, обладая при этом более низкоим энергопотреблением.
Микроархитектура Core
Микроархитектура Pentium 4 NetBurst и ее последняя модификация в процессорах Prescott/Nocona были суперконвейерными, нацеленными на максимальные тактовые частоты. Корпорация Intel выпускала уже и двухъядерные процессоры, однако их микроархитектура не была специально оптимизирована для достижения высокой производительности при низком энергопотреблении. Для многоядерных процессоров с более низкими частотами ее понадобилось существенно переделывать, и была создана новая микроархитектура, Core. В ней число стадий основного, целочисленного конвейера было уменьшено более чем вдвое — до 14. Интересно, что почти столько же стадий имеет IBM Power4 — 15, в AMD Opteron — 12 стадий [1, 2]. Самый короткий конвейер в Sun UltraSPARC T1 (шесть стадий), но отдельные его ядра не нацелены на максимум производительности, а тактовая частота не превышает 1,2 ГГц [3].
Конечно, много важных компонентов микроархитектуры остались в Core неизменными. Можно сказать, что базовые особенности были заложены еще в суперскалярном процессоре Pentium Pro, когда появилась перекодировка CISC-команд x86 во внутренние RISC-подобные микрооперации, внеочередное (Out of Order, OoO) спекулятивное выполнение микроопераций из буфера переупорядочения (ReOrder Buffer, ROB) и др.
Однако в распоряжении разработчиков Core были сразу две разные микроархитектуры — кроме «высокочастотной линии» NetBurst-Prescott-Pentium D (двухъядерный процессор для ПК) и Dempsey (двухъядерный серверный процессор Xeon DP), имелись еще израильские разработки Pentium M — Core Duo (бывшее кодовое название Yonah) для мобильных ПК, в которых частоты и тепловыделение ниже. И микроархитектура Core взяла лучшие черты от обеих линий.
Основные усовершенствoвания микроархитектуры Core ее разработчики условно объединили в пять групп [5, 6]. Рассмотрим их.
1. Wide Dynamic Execution. Эти усовершенствования направлены на рост показателя IPC (количество выполняемых за такт команд). В микроархитектуре предшественников Core из RISC-команд за такт декодировалось до четырех микрокоманд в блок переименования и распределения регистров и в ROB поступало до трех микрокоманд, и завершалось до трех микроопераций за такт; таким образом, максимум IPC был равен трем. (В Yonah этот показатель равнялся шести: две микрооперации за счет двух простых декодеров плюс четыре микрооперации за счет выборки запасенной последовательности микроопераций из постоянной памяти декодера сложных x86-команд.) В Core может декодироваться до семи микроопераций за такт, в том числе три простыми декодерами. Далее на всем пути обработки микроопераций вплоть до их формального завершения (фиксация результатов) за такт проходят до четырех микроопераций (а из накопителя команд на выполнение в исполнительные устройства за такт направляется до шести микроопераций). Таким образом, максимум IPC равен четырем.
В процессорах Opteron декодируются и выдаются на выполнение до трех микроопераций за такт. Для сравнения, Power 5 выдает на выполнение до восьми команд и завершает выполнение до пяти команд за такт. Для высокого показатели IPC важны также емкости ROB и станции резервации, которые увеличены по сравнению с Yonah. В Pentium 4 нет накопителя команд, вместо него используются очереди планировщика (всего 46 строк) к разным портам устройств выполнения [4].
Остальные усовершенствования данной группы относятся к фронтальной части Core. Одно из них — модернизация ESP (Extended Stack Pointer) Tracker. Раньше этот блок задействовал АЛУ, а теперь во фронтальной части Core появились собственные сумматоры. Благодаря этому не только разгружается АЛУ, но и становится ненужным прохождение по конвейеру соответствующих микроопераций.
Два последних усовершенствования этой группы — объединение микроопераций и макроопераций (так в Intel называют CISC-команды). Объединение микроопераций в Pentium M. Объединяться вместе могут микрооперации, возникшие при декодировании одной CISC-команды. Исследования показали, что общее уменьшение числа выполняемых OoO-логикой микроопераций при этом может превышать 10%. Хотя основным предназначением объединения микроопераций считается уменьшение энергозатрат процессора, общее уменьшение числа микроопераций способствует и росту производительности.
Типичный пример такого объединения в Pentium M — объединение пар микроопераций, порождаемых декодерами из команд загрузки регистров (L) и записи в память ST [7]. К примеру, ST декодируется в две микрооперации — запись адреса и запись данных. Первая рассчитывает адрес памяти, куда будет производиться запись, и выполняется в устройстве генерации (записи) адреса. Вторая записывает данные в буфер записи, из которого они помещаются в оперативную память при фиксации результатов. Микрооперации пары могут выполняться одновременно в разных исполнительных устройствах, имеющих собственные порты диспетчеризации, но они рассматриваются как одна вплоть до выдачи этих микроопераций на выполнение. По завершении обеих микроопераций они снова рассматриваются как одна объединенная. В Core число микроопераций, которые могут объединяться, было расширено [5].
Объединяться могут и некоторые типовые пары CISC-команд (например, сравнение с последующим условным переходом). Поскольку вместо двух команд формируется одна микрооперация, общий объем работы процессора уменьшается, а производительность соответственно растет. Мало того, АЛУ исполнительной части процессора доработаны так, что объединенные микрооперации могут выполняться всего за один такт [5-6, 8].
Учитывая приведенные данные по производительности, можно предположить, что серверы «стандартной» х86-архитектуры продолжат захватывать все большую долю рынка.
Выводы
Переход к многоядерным процессорам с ростом числа ядер в микросхеме является основным путем развития микропроцессоров, но при этом необходимо решать проблемы распараллеливания.
Процессоры, использующие микроархитектуру Core (в настоящее время — Xeon серии 5100), стали мировыми лидерами как по производительности (за исключением задач с плавающей точкой, где Power5+ может быть быстрее), так и по производительности в расчете на 1 Вт.
Относительно более слабым местом современных серверов на базе Xeon 5100 сегодня являются задержки и пропускная способность оперативной памяти, однако последний недостаток может быть исправлен в будущем.
Литература
- Михаил Кузьминский, Power4: надежда мира RISC. «Открытые системы», 2003, № 6.
- Михаил Кузьминский, 64-разрядные микропроцессоры AMD. «Открытые системы», 2002, № 4.
- Михаил Кузьминский, Асимметричный ответ «Ниагары». «Открытые системы», 2006, № 3.
- D. Kanter, Intel’s Next Generation Microarchitecture Unveiled. March 9, 2006, www.realworldtech.com/page.cfm?ArticleID=KWT0602006035626.
- Ofri Wechsler, Inside Intel Core Microarchitecture: Setting New Standards for Energy-Efficient Performance. Technology@Intel, March 2006.
- B. Valentine, Inside the Intel Core Microarchitecture. IDF, March 2006.
- J.H. Stokes, Into the Core: Intel’s next-generation microarchitecture. April 5th, 2006, arstechnica.com/articles/paedia/cpu/core.ars/1.
- S.L. Smith, B. Valentine, Intel Core Microarchitecture. IDF, March 2006.
- Михаил Кузьминский, Дорога к высоким частотам. «Открытые системы», 2001, № 2.
- M. Milenkovich, A. Milenkovich, J. Kulick, Demystifying Intel Branch Prediction. Proc. of the Workshop on Duplicating, Deconstructing, and Debunking, Anchorage, Alaska, May 2002.
- B. Inkley, S. Tetrick, Intel Multi-Core Architecture and Implementation. IDF, March 2006.
- R. Goodwins, ZDNet UK, Nov. 18, 2005.
- Михаил Кузьминский, Многоядерные процессоры AMD. «Открытые системы», 2005, № 10.
- Competitive comparison. Dual-core Intel Xeon processor-based platforms vs. AMD Opteron. Intel Corp., 2006.
- J. De Gelas, www.anandtech.com/IT/showdoc.aspx?i=2772&p=4.
Михаил Кузьминский — сотрудник Центра компьютерного обеспечения ИОХ РАН (Москва).
Работа поддержана РФФИ, проект 04-07-90220.
* Если число итераций в цикле не меняется, все прекрасно, но если оно изменяется, что бывает довольно часто ситуацией, то примерно в половине случаев предсказание будет неверным. В то же время обычное предсказание, что выполнение цикла продолжится, имеет большую вероятность. Поэтому возможно, реальный механизм предсказания перехода в циклах более сложен.
* Это гораздо больше, чем в любом современном процессоре. В Power4 их может быть до 200; в Core одновременно может выполняться 96 микроопераций.
Таблица 1.








