Мне нужно оптимизировать набор алгоритмов на основе таблиц в памяти для определенного процессора. Мне стало интересно, почему каждый процессор Intel использует 64 Кбайт (32 Кбайт данных, 32 Кбайт) кэша L1 на ядро с по меньшей мере 2010 года.Кэш L1 в современных процессорах
Почему они придерживаются 64 КБ, даже если каждый другой кеш увеличивается вместе с почти гигантскими кешами L3 представил?
Есть ли что-нибудь, что я могу прочитать об этом?
Есть ли допустимые предположения, если это когда-либо увеличится в течение следующих 5 или 10 лет?
Я проверил других поставщиков и Opterons, например, пришел с 64 КБ + 64 КБ, но был общим для каждого модуля, а Interlagos (например) имел только 16 КБ на ядро и 64 Кбайт кэша данных для каждого модуля. A7 и A8 Apple получили 64 КБ + 64 КБ на ядро, но другие поставщики использовали 64-битную консоль с 16 КБ + 16 КБ.
В настоящее время я проектирую столы с 8 КБ, но как только мне придется смешивать две таблицы вместе, это становится еще более важным.
AFAIK, Intel cpus имеют фактически отмеченные кеши L1, для скорости (вы можете делать кешированный доступ параллельно с поиском страницы). Для фактически помеченных кешей размер 'устанавливает * ассоциативность', где' sets' обычно является размером страницы системы, который для x86 является частью ISA, AFAIK. Возрастающая ассоциативность является дорогостоящей, и фактически помеченные кеши должны быть очищены при переключении контекста, поэтому больший кеш может даже не быть желательным. – EOF
Насколько я понимаю, эти установленные блоки ассоциативного кэша (128 байт) могут быть сброшены независимо, не так ли? Так что это не проблема. Я думаю, что компромисс между размером чипа и увеличением скорости, но я не знаю, почему. Opteron мгновенно пострадал от общего кэша данных на модуль. –
На почти всех микросхемах x86 (отдельно от старого Pentium AFAIK) размер строки кеша составляет 64 байта, а не 128. Я не уверен, что касается остальной части вашего комментария. – EOF