Почему размер кэша L1 не сильно увеличился за последние 20 лет?

35

I486 Intel имеет 8 кбайт кэша L1. Intel Nehalem имеет 32 кэш команд KB L1 и 32 кэша данных L1 KB на ядро.

Объем кэша L1 не увеличился почти со скоростью, на которой увеличилась тактовая частота.

Почему бы нет?

eleven81
источник
Вы сравниваете яблоки с апельсинами. Тактовые частоты увеличились, но нет никакой связи с необходимостью увеличения кеша. То, что вы можете сделать что-то быстрее, не означает, что вы выиграете от большего объема ведра.
Келтари
Избыточный кеш и накладные расходы на управление могут замедлить работу системы. Они нашли сладкое место и там оно останется.
Fiasco Labs

Ответы:

17

30K текста из Википедии не так полезны, как объяснение того, почему слишком большой кэш менее оптимален. Когда кэш становится слишком большим, задержка для поиска элемента в кэше (с учетом пропусков в кэше) начинает приближаться к задержке поиска элемента в основной памяти. Я не знаю, к каким пропорциям стремятся разработчики ЦП, но я думаю, что это что-то аналогичное руководству 80-20: вы хотели бы найти ваши самые распространенные данные в кеше 80% времени, а остальные 20 % времени вам придется идти в основную память, чтобы найти его. (или какими-либо предполагаемыми пропорциями проектировщиков ЦП.)

РЕДАКТИРОВАТЬ: Я уверен, что это далеко не 80% / 20%, поэтому замените X и 1-X. :)

JMD
источник
6
«Когда кэш становится слишком большим, задержка для поиска элемента в кэше (с учетом пропусков в кэше) начинает приближаться к задержке поиска элемента в основной памяти». вы уверены в этом? Например, удвоение объема установленной оперативной памяти, безусловно, не увеличит ее задержку, почему это будет так для кеша? А также, почему кэш L2 будет увеличиваться с новыми процессорами, если это проблема? Я не эксперт в этом, я действительно хочу знать :)
sYnfo
2
Я подготовил большое, длинное описание кеширования в программном обеспечении и измерения, когда ваш кеш перерос сам по себе и должен быть выгружен / перестроен, но потом решил, что лучше признать, что я не являюсь разработчиком аппаратного обеспечения. :) В любом случае, я подозреваю, что ответ можно суммировать по закону убывающей доходности. Т.е. больше не всегда лучше.
JMD
3
Из моей долгой истории работы с аппаратными средствами на низких уровнях, но не как с проектировщиком, я бы сказал, что задержка, по-видимому, связана с тем, как много ассоциативного кэша, а не с размером. Я предполагаю, что дополнительные транзисторы, которые попадают в кэш, оказались более эффективными в других местах для общей производительности.
Брайан Кноблаух
1
@JMD Тем не менее, мне было бы интересно это описание;) Хотя комментарии, вероятно, не лучшее место для этого, правда. @ Брайан Итак, если я правильно понимаю, они решили поместить меньше транзисторов в кэш-память первого уровня и в то же время добавить гораздо больше в L2, что значительно медленнее? Пожалуйста, не обижайтесь, мне просто любопытно :)
sYnfo
10

Одним из факторов является то, что выборки L1 начинаются до завершения трансляций TLB, чтобы уменьшить задержку. При достаточно малом кеше и достаточно высоком пути биты индекса для кеша будут одинаковыми между виртуальными и физическими адресами. Это, вероятно, снижает стоимость поддержания согласованности памяти с виртуально индексируемым, физически помеченным кешем.

AJW
источник
1
самый интересный ответ :)
GameDeveloper
1
Я считаю, что это причина, но позвольте мне привести номер. Размер страницы в архитектуре x86 составляет 4096 байт. Кэш хочет выбрать область кэша, в которой нужно искать запись строки кэша (64 байта) до завершения перевода страницы. Было бы дорого выбирать между слишком большим количеством записей в корзине, поэтому в каждой корзине есть только 8 записей. В результате за последние десять лет все дорогие процессоры x86 имеют ровно 32768 байт (512 строк кэша) в своем кэше данных L1.
b_jonas
Поскольку это очень трудно увеличить, процессоры добавляют кэш среднего уровня, поэтому у нас теперь есть отдельные кэши L2 и L3. Кроме того, кэш кода L1 и кэш данных L1 разделены, потому что процессор знает, получает ли он доступ к коду или данным.
b_jonas
8

Размер кэша зависит от многих факторов:

  1. Скорость электрических сигналов (должна быть, если не скорость света, примерно того же порядка):

    • 300 метров за одну микросекунду.
    • 30 сантиметров за одну наносекунду.
  2. Экономическая стоимость (схемы на разных уровнях кеша могут отличаться, а определенные размеры кеша могут не стоить)

    • Удвоение размера кеша не удваивает производительность (даже если физика позволила этому размеру работать), для маленьких размеров удвоение дает намного больше, чем удвоение производительности, для больших размеров удвоение размера кеша практически не дает дополнительной производительности.
    • В википедии вы можете найти диаграмму, показывающую, например, как нецелесообразно делать кэши размером более 1 МБ (на самом деле кэши большего размера существуют, но вы должны учитывать, что это многопроцессорные ядра).
    • Для кэшей L1 должны быть некоторые другие диаграммы (которые не демонстрируются поставщиками), в которых размер 64 Кбайт удобен.

Если размер кэша L1 не изменился после 64 КБ, это потому, что он больше не стоил. Также обратите внимание, что теперь существует большая «культура» в отношении кеша, и многие программисты пишут «дружественный к кешу» код и / или используют предпочтительные инструкции для уменьшения задержки.

Однажды я попытался создать простую программу, которая обращалась к произвольным местам в массиве (из нескольких мегабайт): эта программа почти зависала на компьютере, потому что при каждом случайном чтении вся страница перемещалась из ОЗУ в кэш, и так как это делалось очень часто, то просто Программа истощала всю полосу пропускания, оставляя действительно мало ресурсов для ОС.

Разработчик игр
источник
6

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

Поскольку скорость процессора быстро увеличивается, кэш-память того же размера должна работать быстрее и быстрее, чтобы не отставать от него. Таким образом, кэши могут быть значительно лучше (с точки зрения скорости), но не с точки зрения хранения.

(Я парень по программному обеспечению, надеюсь, это не так печально)

Андрей Фланаган
источник
3

Из кэша L1 :

Кэш 1-го уровня, или основной кэш, находится на ЦП и используется для временного хранения инструкций и данных, организованных в блоки по 32 байта. Первичный кеш - это самая быстрая форма хранения. Поскольку он встроен в микросхему с нулевым интерфейсом состояния ожидания (задержки) к исполнительному блоку процессора, он имеет ограниченный размер .

SRAM использует два транзистора на бит и может хранить данные без внешней помощи до тех пор, пока на схему подается питание. Это противопоставлено динамическому ОЗУ (DRAM), которое необходимо обновлять много раз в секунду, чтобы хранить содержимое данных.

Процессор Intel P55 MMX, выпущенный в начале 1997 года, примечателен увеличением размера кэша 1-го уровня до 32 КБ. Чипы AMD K6 и Cyrix M2, выпущенные позднее в этом году, подняли ставку еще больше, предоставив кэш-память первого уровня объемом 64 КБ. 64 Кбайт остается стандартным размером кэша L1, хотя различные многоядерные процессоры могут использовать его по-разному.

РЕДАКТИРОВАТЬ: Обратите внимание, что этот ответ с 2009 года, и ЦП сильно эволюционировали за последние 10 лет. Если вы прибыли на этот пост, не принимайте все наши ответы здесь слишком серьезно.

harrymc
источник
Типичная ячейка SRAM состоит из шести MOSFET. Каждый бит в SRAM хранится на четырех транзисторах (M1, M2, M3, M4), которые образуют два инвертора с перекрестными связями. Источник Второй Источник
lukecampbell
Это просто описание ситуации и ничего не объясняет почему.
Эонил
@Eonil - Мы не могли бы дать ответ «почему», если бы захотели. Тем не менее, снижение прибыли на производительность является разумным и разумным объяснением. Когда вопрос был написан почти десять лет назад, было гораздо дороже увеличить размер без учета снижения производительности. Этот ответ попытался как минимум ответить на заданный вопрос.
Ramhound
-4

На самом деле размер кэша L1 является самым большим узким местом для скорости в современных компьютерах. Патетически крошечные размеры кэша L1 могут быть ценой, но не производительностью. Доступ к кэш-памяти L1 возможен на частотах ГГц, так же, как и при работе процессора, в отличие от доступа к ОЗУ в 400 раз медленнее. Это дорого и сложно реализовать в современном двухмерном дизайне, однако это технически выполнимо, и первая компания, которая сделает это успешно, будет иметь компьютеры в 100 раз быстрее и по-прежнему работать круто, что может привести к значительным инновациям во многих поля и доступны только через дорогие и сложные в программировании конфигурации ASIC / FPGA. Некоторые из этих проблем связаны с проприетарными / интеллектуальными проблемами и корпоративной жадностью, охватывающей десятилетия, где крошечные и безрезультатные кадры инженеров - единственные, у кого есть доступ к внутренним работам, и которым в основном дают походные приказы, чтобы выдавить рентабельную запутанную протекционистскую чушь. Чрезмерно приватизированные исследования всегда приводят к такому технологическому застою или троттлингу (как мы видели в аэрокосмической и автомобильной промышленности крупных производителей и вскоре станут фармацевтами). Открытый источник и более разумное регулирование патентов и коммерческой тайны, приносящее пользу изобретателям и общественности (а не руководителям и акционерам компании), очень помогло бы здесь. Для разработки должно быть легким делом сделать намного большие кэши L1, и это должно и могло быть разработано десятилетия назад. Мы были бы намного дальше в компьютерах и во многих научных областях, используя их, если бы имели. и которым в основном дают маршевые приказы выдавить излишне затуманенную протекционистскую чушь. Чрезмерно приватизированные исследования всегда приводят к такому технологическому застою или троттлингу (как мы видели в аэрокосмической и автомобильной промышленности крупных производителей и вскоре станут фармацевтами). Открытый источник и более разумное регулирование патентов и коммерческой тайны, приносящее пользу изобретателям и общественности (а не руководителям и акционерам компании), очень помогло бы здесь. Для разработки должно быть легким делом сделать намного большие кэши L1, и это должно и могло быть разработано десятилетия назад. Мы были бы намного дальше в компьютерах и во многих научных областях, используя их, если бы имели. и которым в основном дают маршевые приказы выдавить излишне затуманенную протекционистскую чушь. Чрезмерно приватизированные исследования всегда приводят к такому технологическому застою или троттлингу (как мы видели в аэрокосмической и автомобильной промышленности крупных производителей и вскоре станут фармацевтами). Открытый источник и более разумное регулирование патентов и коммерческой тайны, приносящее пользу изобретателям и общественности (а не руководителям и акционерам компании), очень помогло бы здесь. Для разработки должно быть легким делом сделать намного большие кэши L1, и это должно и могло быть разработано десятилетия назад. Мы были бы намного дальше в компьютерах и во многих научных областях, используя их, если бы имели. Чрезмерно приватизированные исследования всегда приводят к такому технологическому застою или троттлингу (как мы видели в аэрокосмической и автомобильной промышленности крупных производителей и вскоре станут фармацевтами). Открытый источник и более разумное регулирование патентов и коммерческой тайны, приносящее пользу изобретателям и общественности (а не руководителям и акционерам компании), очень помогло бы здесь. Для разработки должно быть легким делом сделать намного большие кэши L1, и это должно и могло быть разработано десятилетия назад. Мы были бы намного дальше в компьютерах и во многих научных областях, используя их, если бы имели. Чрезмерно приватизированные исследования всегда приводят к такому технологическому застою или троттлингу (как мы видели в аэрокосмической и автомобильной промышленности крупных производителей и вскоре станут фармацевтами). Открытый источник и более разумное регулирование патентов и коммерческой тайны, приносящее пользу изобретателям и общественности (а не руководителям и акционерам компании), очень помогло бы здесь. Для разработки должно быть легким делом сделать намного большие кэши L1, и это должно и могло быть разработано десятилетия назад. Мы были бы намного дальше в компьютерах и во многих научных областях, используя их, если бы имели. Для разработки должно быть легким делом сделать намного большие кэши L1, и это должно и могло быть разработано десятилетия назад. Мы были бы намного дальше в компьютерах и во многих научных областях, используя их, если бы имели. Для разработки должно быть легким делом сделать намного большие кэши L1, и это должно и могло быть разработано десятилетия назад. Мы были бы намного дальше в компьютерах и во многих научных областях, используя их, если бы имели.

Зак Баркли
источник