Блог

Развитие двухпроцессорных серверных платформ. Часть 3 - кэш


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

Чтобы не дублировать в каждой части таблицы с характеристиками процессоров, они вынесены в отдельную статью.
За рассматриваемый период 2001-2014 год компания Intel несколько раз меняла организацию кэша в процессорах, начиная от объема, заканчивая количеством уровней, например: в 2003 году была реализована трехуровневая организация кэш-памяти, после чего от нее Интел отказалась, забыв до 2009 года. Необходимо сделать оговорку, что в рамках данного материала не будут рассмотрены такие параметры как: латентность и ассоциативность кэша, его частота функционирования, его ПСП и т.д. - данный материал предназначен для того, чтобы показать как изменялась организация кэша (количество уровней и доступ) и его объем.
В 2001 году компания Intel представила микроархитектуру NetBurst, которая значительно отличалась от предшественника как на уровне микроархитектуры, так и на уровне организации кэша: во-первых, объем кэша данных сократился вдвое с 16 до 8 КБ относительно предшественника Pentium III; во-вторых, классический кэш инструкций был заменен на trace-кэш, объем которого выражался в µops и равнялся 12 000. Если обычный кэш инструкций хранит инструкции в недекодированном виде, и при повторном обращении к той или иной инструкции она заново проходит декодер, то trace-кэш хранит уже декодированные последовательности инструкций и при повторном обращении нет необходимости в их декодировании. В 2001 году представленные процессоры Xeon Foster имели кэш данных первого уровня объемом 8 КБ, кэш инструкций - 12000 µops, кэш второго уровня - 256 КБ.
Переход на более тонкие технологические нормы в 2002 году позволил увеличить объем кэша второго уровня вдвое - до 512 КБ. Поскольку частота росла неохотно и приводила к серьезному росту тепловыделения, и в тоже время ПСП была невысокой, в 2003 году Интел решает "прикрутить" к Pentium 4 кэш третьего уровня, то есть перейти с двухуровневой на трехуровневую организацию кэша - в ядре Gallatin объем кэша третьего уровня составлял 1024 КБ, то есть был вдвое больше, чем кэш второго уровня. Важно понимать, что объемы кэшей разных уровней нельзя напрямую складывать, так как архитектура кэша процессоров Интел допускает дублирование данных, то есть в кэше третьего уровня могут содержаться данные кэша второго уровня. Таким образом, в худшем случае суммарный объем кэша процессора равен объему кэша последнего уровня, а в лучшем - сумме всех кэшей, на практике суммарный объем занимает промежуточное значение.
В 2004 году компания Интел представила новое ядро Nocona, в котором организация кэша несколько изменилась: объем кэша данных первого уровня удвоился - с 8 до 16 КБ (уровень PIII); объем кэша второго уровня также удвоился - с 512 до 1024 КБ; кэш третьего уровня был ликвидирован.
В 2005 году появились первые двуядерные серверные процессоры и здесь снова организация кэша несколько изменилась: во-первых, объем кэша второго уровня снова удвоился - с 1024 до 2048 КБ; во-вторых, каждое ядро имело свой кэш - это обусловлено тем, что по факту процессоры Xeon Paxville DP представляют собой склейку двух процессоров на одной подложке, то есть Интел не стала оптимизировать ядро для многоядерной компоновки, используя общий кэш второго уровня для лучшего межъядерного взаимодействия.
В 2006 году компания Интел представила микроархитектуру Core, в рамках которой: во-первых, Интел отказалась от trace-кэша, вернув классический кэш инструкций; во-вторых, объемы кэшей первого уровня удвоились - с 16 до 32 КБ. Стоит заметить... что данный объем останется без изменений вплоть до 2015 года... (при этом важно понимать, что если в 2006 году SSE-инструкции оперировали 128 битами информации, то сейчас - 256, а в Skylake-EP - 512); в-третьих, Интел перешла к использованию общего кэша второго уровня для двух ядер, что увеличило эффективность межъядерного взаимодействия. Но поскольку в 2006 году были представлены и 4-ядерные процессоры, то кэш второго уровня представлял собой два массива по 4096 КБ, каждый из которых был предназначен для своей пары ядер. Следует заметить, что объем кэша второго уровня, в целом, не изменился, изменилась лишь организация - если в P4 он равнялся 2048 КБ на ядро, то есть для 2-ядерного процессора это 2х 2048, то для Core это было 4096 КБ для двух ядер.
В 2007 году компания Интел увеличила кэш второго уровня, который достиг объема 6144 КБ на каждые два ядра (стоит запомнить данную цифру, грубо говоря, речь идет о 3 МБ на ядро). То есть 4-ядерный кристалл имел 2 массива по 6144 КБ!
В 2008 году Интел оставила всё без изменений.
В 2009 году компания Интел снова вернулась к трехуровневой организации. Предложенная в 2009 архитектура кэша подразумевала следующее: кэши первого уровня для данных и инструкций имели объем 32КБ и являлись персональными для каждого ядра; объем персонального для каждого ядра кэша второго уровня составлял 256 КБ; а кэш третьего уровня являлся общим для всех ядер, суммарный объем которого считался по формуле - количество ядер Х 2 МБ, то есть, грубо говоря, по 2 МБ на ядро. Соответственно для 4-ядерного процессора объем кэша третьего уровня составлял 8 МБ.
В 2010 году архитектура кэша, в целом, не изменилась, но поскольку были представлены 6-ядерные решения, то объем кэша третьего уровня вырос до 12288 КБ.
В 2011 году Интел оставила всё без изменений.
В 2012 году с приходом микроархитектуры Sandy Bridge произошли некоторые изменения, а именно объем кэша третьего уровня стал рассчитываться по формуле 2,5 МБ на ядро, то есть 8-ядерный процессор имел кэш третьего уровня объемом 20480 КБ, а не 16384 КБ.
В 2013 году в силу того, что были представлены 12-ядерные процессоры, объем кэша третьего уровня вырос до 30720 КБ, а в 2014 с анонсом 18-ядерных процессоров его объем достиг 46080 КБ.
Можно отметить следующие моменты:
- в 2007 году компания Интел располагала процессорами с кэшем втором уровня объемом 6 МБ - данный объем рекордный как для кэша второй уровня за рассматриваемый период, так и в целом при пересчете на ядро - 3 МБ. Сегодня Интел практикует 2,5 МБ на ядро при расчете объема кэша третьего уровня;
- с 2006 года и до сегодняшнего дня, то есть за 10 лет, объемы кэшей первого уровня не выросли, оставшись на отметке - 32 КБ;
- trace-кэш как и HT компания Intel всё же вернула - но уже в виде кэша МОПов (на 1536 МОП) в процессорах Sandy Bridge (в целом, и у Nehalem был кэш на 28 МОПов с наименованием LSD, который отключал декодер при обнаружении циклов). Использование кэша МОПов позволяет не только снижать энергопотребление процессора путем отключения декодера, но и повышает производительность путем более высокой загрузки ИУ, снижая зависимость от декодера;
В целом, историю развития с 2001 по 2015 можно представить следующим образом:
- с точки зрения количества уровней: с 2001 по 2002 - двухуровневое кэширование; 2003 - 3-уровневое; 2004-2008 - двухуровневое; 2009-2015 - трехуровневое;
- с точки зрения организации кэша второго/третьего уровня в многоядерных процессорах: 2005 - кэш второго уровня персональный для каждого ядра; 2006-2008 - кэш второго уровня общий для пары ядер; 2009-2015 - кэш второго уровня персональный для каждого ядра, кэш третьего уровня разделяемый между всеми ядрами процессора;
- с точки зрения емкости кэша первого уровня: 2001-2003 - емкость кэша данных составляла 8 КБ, а инструкций - 12000 µops; 2004-2005 - кэш данных 16 КБ; 2006-2015 - по 32КБ кэш данных и инструкций;
- с точки зрения емкости кэша второго уровня: 2001 - 256КБ; 2002-2003 - 512КБ; 2004 - 1024КБ; 2005 - 2х 2048КБ (2048КБ на ядро); 2006 - 2х 4096КБ (2048КБ на ядро); 2007-2008 - 2х 6144КБ (3072КБ на ядро); 2009 - 4х 256КБ (256КБ на ядро - сохранится до 2015); 2010-2011 - 6х 256КБ; 2012 - 8х 256КБ; 2013 - 12х 256КБ; 2014 - 18х 256КБ;
- с точки зрения емкости кэша третьего уровня: 2003 - 1024КБ; 2009 - 8192КБ (2048КБ на ядро); 2010-2011 - 12288КБ (2048КБ на ядро); 2012 - 20480КБ (2560КБ на ядро - сохранится до 2015); 2013 - 30720КБ; 2014 - 46080КБ.
Хотелось бы отметить, что в последние годы компания Интел продвигает Crystal Well (по сути кэш четвертого уровня) в процессорах с топовым интегрированным графическим ядром объемом 128 МБ, предназначенных для мобильных устройств и ПК. В процессорах для двухпроцессорных конфигураций данного кэша нет, поскольку нет встроенной видеокарты. Но сам факт того, что компания «тестирует» в потребительском сегменте по сути 4-уровневую систему кэширования, многообещающий.
Продолжение следует...
Другие материалы по теме

0 logo low

Copyright © by ServersTech.ru, 2015-2018. Копирование запрещено.
Коммерческие предложения, сотрудничество и реклама: cooperation@serverstech.ru
Предложения, вопросы и пожелания читателей: readership@serverstech.ru
Copyright © 2015-2018 ServersTech.ru. Все права сохранены
Copyright © 2015-2018 ServersTech.ru. All rights reserved