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

23042
eleven81

I486 Intel имеет 8 Кбайт кэш - памяти L1. Intel Nehalem имеет 32 КБ кэш инструкций L1 и 32 кэш данных L1 KB на ядро.

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

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

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

6 ответов на вопрос

13
JMD

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

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

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

One factor is that L1 fetches start before the TLB translations are complete so as to decrease latency. With a small enough cache and high enough way the index bits for the cache will be the same between virtual and physical addresses. This probably decreases the cost of maintaining memory coherency with a virtually-indexed, physically-tagged cache.

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

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

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

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

6
GameDeveloper

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

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

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

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

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

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

3
harrymc

Из кэша L1 :

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

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

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

Типичная ячейка SRAM состоит из шести MOSFET. Каждый бит в SRAM хранится на четырех транзисторах (M1, M2, M3, M4), которые образуют два инвертора с перекрестными связями. [Источник] (http://en.wikipedia.org/wiki/Static_random-access_memory) [Второй источник] (http://www.akkadia.org/drepper/cpumemory.pdf) lukecampbell 11 лет назад 0
-3
Zack Barkley

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

Похожие вопросы