
CPU
Эволюция Intel Core: Nehalem, Sandy Bridge, Haswell, Skylake. Часть 2
- Информация о материале
- Категория: CPU
- Опубликовано: 14.01.2016, 20:02
- Автор: ServersTech.ru

В данном материале мы рассмотрим эволюцию Core на примере кэша и TLB.
Остальные материалы по микроархитектуре Skylake и эволюции Intel Core собраны здесь.
Кэш инструкций первого уровня L1i
Nehalem | Sandy Bridge | Haswell | Skylake | |
Объем, КБ | 32 | 32 | 32 | 32 |
Ассоциативность | 4-way | 8-way | 8-way | 8-way |
Объем кэша инструкций с анонса Nehalem не изменился, что неудивительно, так как данная величина наследуется еще с Conroe, то есть с 2006 года. С одной стороны у прямого конкурента за данный период организация кэша первого уровня успела поменяться несколько раз; с другой - если 32КБ не мешает современным процессорам Интел показывать как большую производительность, так и энергоэффективность, чем у конкурентов, то зачем что-то менять? Единственное, что можно отметить, при переходе Nehalem-Sandy Bridge изменилась ассоциативность с 4 на 8.
Кэш данных первого уровня L1d
Nehalem | Sandy Bridge | Haswell | Skylake | |
Объем, КБ | 32 | 32 | 32 | 32 |
Ассоциативность | 8-way | 8-way | 8-way | 8-way |
Размер строки, байт | 64 | 64 | 64 | 64 |
Латентность, такт | 4 | 4 | 4 | 4 |
Пропускная способность, байт/такт | 16 |
32 (2x 16)
|
96 (64 чтение, 32 запись)
|
96 (2х 32 чтение, 32 запись) |
Что касается кэша данных первого уровня, то он значительно эволюционировал с первого поколения Core: если в Nehalem кэш L1d имел пропускную способность на уровне 16 байт/такт, то в Haswell - 96 байт/такт (64 байт/такт - чтение, 32 байт/такт - запись). Skylake не принес ничего нового, оставив ПС на прежнем уровне, то есть 96 байт/такт. Вероятно, данная ПС характерна будет только для мобильных и десктопных Skylake, но не для серверных Skylake-EP/EX, так как у первых инструкции AVX остались 256-битными, а вторые обещают поддержку 512-битных инструкций, что потребует либо увеличения ПС кэша вдвое, либо придется искусственно снизить темп выполнения 512-битных инструкций (кстати, как реализует Intel исполнение 512-битных инструкций тоже еще неизвестно - это можно сделать как расширением разрядности текущих ИУ, так и выполнением 512-битных инструкций на 256-битных ИУ с существенным снижением темпа их выполнения - подобная практика не нова, например, 256-битные инструкции в Bulldozer/Piledriver/Steamroller выполняются на 128-битных ИУ).
В целом, самый значительный скачок был при переходе Sandy Bridge-Haswell - пропускная способность утроилась, а переход Nehalem-Sandy Bridge лишь удвоил ПС. То есть, фактически мы имеем рост ПС с каждой сменой микроархитектуры, и Skylake не будет выбиваться, если Интел увеличит ПС кэша в Skylake-EP/EX.
Кэш второго уровня L2
Nehalem | Sandy Bridge | Haswell | Skylake | |
Объем, КБ | 256 | 256 | 256 | 256 |
Ассоциативность | 8-way | 8-way | 8-way | 4-way |
Размер строки, байт | 64 | 64 | 64 | 64 |
Латентность, такт | 10 | 12 | 11 | 12 |
Пропускная способность, байт/такт | 32 | 32 | 64 | 64 |
Кэш второго уровня более консервативен и по сути самым значимым был переход Sandy Bridge-Haswell, который удвоил его ПС, доведя до 64 байт/такт. В остальном изменения минимальны: переход Nehalem-Sandy Bridge повысил латентность кэша на 2 такта, а переход Haswell-Skylake изменил ассоциативность с 8 на 4.
Кэш третьего уровня LLC
Nehalem | Sandy Bridge | Haswell | Skylake | |
Объем, КБ | 2МБ/ядро | 2МБ/ядро | 2МБ/ядро | 2МБ/ядро |
Ассоциативность | 16-way | 16-way | 16-way | 16-way |
Размер строки, байт | 64 | 64 | 64 | 64 |
Латентность, такт | 35-40 | 26-31 | 34 | 44 |
Пропускная способность, байт/такт | 32 | 32 | 32 | 32 |
Кэш третьего уровня скорее даже «деградирует», чем эволюционирует - за годы развития Core его латентность выросла с 35-40 тактов до 44 (но следует иметь в виду, что его частота функционирования постоянно растет). В целом, значительных изменений LLC не было - ПС как была 32 байт/такт в Nehalem, так и осталась в Skylake.
ITLB
Nehalem | Sandy Bridge | Haswell | Skylake |
4КБ: 128; 2МБ/4МБ: 7/thread |
4КБ: 128; 2МБ/4МБ: 8/thread |
4КБ: 128, 4-way; 2МБ/4МБ: 8/thread |
4КБ: 128, 8-way; 2МБ/4МБ: 8/thread |
(формат записей: размер страницы: количество записей, ассоциативность)
ITLB также как и LLC практически не изменился за всё это время: переход Nehalem-Sandy Bridge увеличил количество записей для 2МБ/4МБ страниц с 7 до 8.
DTLB
Nehalem | Sandy Bridge | Haswell | Skylake |
4КБ: 64; 2МБ/4МБ: 32; |
4КБ: 64; 2МБ/4МБ: 32; 1ГБ: 4 |
4КБ: 64, 4-way; 2МБ/4МБ: 32, 4-way; 1ГБ: 4, 4-way |
4КБ: 64, 4-way; 2МБ/4МБ: 32, 4-way; 1ГБ: 4, 4-way |
(формат записей: размер страницы: количество записей, ассоциативность)
DTLB переходит от поколения к поколению практически без изменений: переход Nehalem-Sandy Bridge добавил поддержку гигабайтных страниц и, пожалуй, на этом заканчиваются изменения.
STLB
Nehalem | Sandy Bridge | Haswell | Skylake |
4КБ: 512, 4-way | 4КБ: 512,4-way | 4КБ/2МБ/4МБ: 1024,8-way |
4КБ/2МБ/4МБ: 1536,12-way; 1ГБ: 16, 4-way |
(формат записей: размер страницы: количество записей, ассоциативность)
В отличие от ITLB и DTLB, STLB показывает большую динамику развития: переход Sandy Bridge-Haswell удвоил емкость с 512 до 1024 записей; переход Haswell-Skylake увеличил емкость еще на 50% для 4КБ/2МБ/4МБ страниц, доведя ее до 1536 записей, а также добавил поддержку 1ГБ страниц (16 записей).
Заключение
Таким образом, наиболее значительные изменения претерпели кэш данных первого уровня и STLB. Постоянное совершенствование кэша L1d обусловлено как повышением разрядности ИУ и инструкций, так и увеличением количества портов запуска, так например, увеличение количества портов запуска и ИУ при переходе Sandy Bridge-Haswell потребовало значительной переработки кэша L1d для обеспечения высокой загрузки ИУ.