2015-05-17 4 views
1

Мне нужно оптимизировать набор алгоритмов на основе таблиц в памяти для определенного процессора. Мне стало интересно, почему каждый процессор 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 КБ, но как только мне придется смешивать две таблицы вместе, это становится еще более важным.

+0

AFAIK, Intel cpus имеют фактически отмеченные кеши L1, для скорости (вы можете делать кешированный доступ параллельно с поиском страницы). Для фактически помеченных кешей размер 'устанавливает * ассоциативность', где' sets' обычно является размером страницы системы, который для x86 является частью ISA, AFAIK. Возрастающая ассоциативность является дорогостоящей, и фактически помеченные кеши должны быть очищены при переключении контекста, поэтому больший кеш может даже не быть желательным. – EOF

+0

Насколько я понимаю, эти установленные блоки ассоциативного кэша (128 байт) могут быть сброшены независимо, не так ли? Так что это не проблема. Я думаю, что компромисс между размером чипа и увеличением скорости, но я не знаю, почему. Opteron мгновенно пострадал от общего кэша данных на модуль. –

+0

На почти всех микросхемах x86 (отдельно от старого Pentium AFAIK) размер строки кеша составляет 64 байта, а не 128. Я не уверен, что касается остальной части вашего комментария. – EOF

ответ

0

Я не эксперт, но мои два цента:

L1 интегрирован в ядро, которое означает: она разделяет же часы и его размерные эффекты размером ядра.

Первый - более логичная проблема. Вы хотите, чтобы L1 был очень быстрым, едва медленным по сравнению с регистрами. Вы не можете решить эту проблему, настроив L1, так как ядро ​​также работает с тактовой частотой. Кадры HW аналогичны кэшам программного обеспечения, и для их поиска требуется время. Поэтому, когда L1 становится больше, поиск становится медленнее, учитывая сложность решения кэша HW. Вы можете увеличить сложность решения, но это будет отрицательно влиять на пространство, энергию и тепло.

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

Итак, у вас есть разные критерии проектирования для L1 и L2, и, разделив их, вы разделите проблему и покорите ее на двух уровнях. Если вы сделаете L1 большим и медленным, как L2, тогда вы размываете это.

Показания:

  • [1] What Every Programmer Should Know About Memory. Раздел 3 называется «CPU Caches». Он заслуживает своего титула.
  • Cortex-A Series Programmer’s Guide. Бесплатно скачать с ARM, но вам нужно зарегистрироваться. Глава 8 называется «Кэши», гораздо легче читать, и эта глава ничего особенного для ARM. Начните с этого, если сложность первой бумаги вас раздражает.
+0

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

+0

@MartinKersten Ну, я думаю, что общий ответ - это больший кеш, который приносит больше сложности, и вы не хотите, чтобы он находился рядом с ядрами. Также возможно, что также повышается сложность обработки когерентности между ядрами L1. – auselen

+0

Еще один текст по ассоциативности https://www.ece.cmu.edu/~ece548/handouts/07assoc.pdf – auselen